comparison paper/sigos.tex @ 6:1702e6278518

add English Abstract
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Wed, 06 May 2015 17:12:15 +0900
parents 4a7fa91ef60a
children 00c88f26710c
comparison
equal deleted inserted replaced
5:4a7fa91ef60a 6:1702e6278518
70 70
71 \end{abstract} 71 \end{abstract}
72 72
73 % 英文概要 仮 73 % 英文概要 仮
74 \begin{eabstract} 74 \begin{eabstract}
75 Alice is a prototype framework for distributed programming, which uses Data Segment and Code Segment as programming units. We checked Alice has an ability to write distributed program by previous research. 75 lice is a prototype framework for distributed programming, which uses Data Segment and Code Segment as programming units. We checked Alice has an ability to write distributed program by previous research.
76  In this paper, we add Alice computation of compress. HOGE 76 But if programmer want to build Application by Alice, Alice need function of choice the Data Segment representation.
77 for DataSegment polymerism. 77
78 In this paper, we add Alice computation of compress for achieving Data Segment polymerism. Data Segment has 3 type representation(Object type, ByteArray type using MessagePack, and compressed ByteArray type).
78 \end{eabstract} 79 \end{eabstract}
79 80
80 % 表題などの出力 81 % 表題などの出力
81 \maketitle 82 \maketitle
82 83
145 \item {\ttfamily void peek(String managerKey, String key)} 146 \item {\ttfamily void peek(String managerKey, String key)}
146 \end{itemize} 147 \end{itemize}
147 peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである。 148 peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである。
148 149
149 150
151 \subsection{Data Segmentの表現}
150 DSの表現にはMessagePack for Javaを利用している。 152 DSの表現にはMessagePack for Javaを利用している。
151 \begin{itemize} 153 \begin{itemize}
152 \item {\ttfamily DSは一般的なJavaのクラスオブジェクト} 154 \item {\ttfamily DSは一般的なJavaのクラスオブジェクト}
153 \item {\ttfamily MessagePackを用いて変換したbyte[]で表現されたバイナリオブジェクト} 155 \item {\ttfamily MessagePackを用いて変換したbyte[]で表現されたバイナリオブジェクト}
154 \end{itemize} 156 \end{itemize}
155 の2種類があり、LocalDSMにputされた場合は一般的なJavaのクラスオブジェクトとしてenQueueされる。 157 の2種類があり、LocalDSMにputされた場合は一般的なJavaのクラスオブジェクトとしてenQueueされる。
156 RemoteDSMにputされた場合は通信時にbyteArrayに変換されたバイナリオブジェクトがenQueueされる。 158 RemoteDSMにputされた場合は通信時にbyteArrayに変換されたバイナリオブジェクトがenQueueされる。
157 159
158 \section{Code Segment} 160 \subsection{Code Segment}
159 Alice上で実行されるタスクの単位がCSである。ユーザーはCSを組み合わせることでプログラミングを行う。CSをユーザーが記述する際に、内部で使用するDSの作成を記述する。 161 Alice上で実行されるタスクの単位がCSである。ユーザーはCSを組み合わせることでプログラミングを行う。CSをユーザーが記述する際に、内部で使用するDSの作成を記述する。
160 162
161 Input DS と Output DSはCSに用意されているAPIを用いて作成する。 163 Input DS と Output DSはCSに用意されているAPIを用いて作成する。
162 Input DSは、LocalかRemoteか、またkeyを指定する必要がある。CSは、記述したInput DSが全て揃うとThread poolに送られ、実行される。 164 Input DSは、LocalかRemoteか、またkeyを指定する必要がある。CSは、記述したInput DSが全て揃うとThread poolに送られ、実行される。
163 165
164 Output DSもLocalかRemoteか、またkeyを指定する必要がある。 166 Output DSもLocalかRemoteか、またkeyを指定する必要がある。
165 Inputの場合はsetKeyを呼ぶ際、Outputの場合はput(またはupdate)の際にノードとkeyの指定を行っている。 167 Inputの場合はsetKeyを呼ぶ際、Outputの場合はput(またはupdate)の際にノードとkeyの指定を行っている。
166 しかし、どの時点でノードとkeyの指定を行えばよいか、どのようなAPIを用意するべきかは、議論の余地がある。 168 しかし、どの時点でノードとkeyの指定を行えばよいか、どのようなAPIを用意するべきかは、議論の余地がある。
167 169
168 \section{Code Segmentの記述方法} 170 \subsection{Code Segmentの記述方法}
169 CSをユーザーが記述する際にはCSを継承して記述する(ソースコード \ref{src:StartCodeSegment} ,\ref{src:CodeSegment})。 171 CSをユーザーが記述する際にはCSを継承して記述する(ソースコード \ref{src:StartCodeSegment} ,\ref{src:CodeSegment})。
170 継承することによりCode Segmentで使用するAPIを利用する事ができる。 172 継承することによりCode Segmentで使用するAPIを利用する事ができる。
171 173
172 \begin{table}[html] 174 \begin{table}[html]
173 \lstinputlisting[label=src:StartCodeSegment, caption=StartCodeSegmentの例]{source/StartCodeSegment.java} 175 \lstinputlisting[label=src:StartCodeSegment, caption=StartCodeSegmentの例]{source/StartCodeSegment.java}
222 224
223 これらのMeta ComputationがAliceのComputationに影響することはない。プログラマーはCSを記述する際にトポロジーや切断、再接続という状況を予め想定した処理にする必要はない。プログラマーは目的の処理だけ記述する。そして、切断や再接続が起こった場合の処理を記述しMeta Computationで指定する。 225 これらのMeta ComputationがAliceのComputationに影響することはない。プログラマーはCSを記述する際にトポロジーや切断、再接続という状況を予め想定した処理にする必要はない。プログラマーは目的の処理だけ記述する。そして、切断や再接続が起こった場合の処理を記述しMeta Computationで指定する。
224 このようにプログラムすることで、通常処理と例外処理を分離することができるため、シンプルなプログラムを記述できる。 226 このようにプログラムすることで、通常処理と例外処理を分離することができるため、シンプルなプログラムを記述できる。
225 227
226 228
227 \section{Meta Data Segment} 229 \subsection{Meta Data Segment}
228 DSは、アプリケーションに管理されているデータのことである。アプリケーションを構成するCSによってその値は変更される。 230 DSは、アプリケーションに管理されているデータのことである。アプリケーションを構成するCSによってその値は変更される。
229 それに対してMeta DSは、分散フレームワークAliceが管理しているデータである。Aliceを構成するCSによってのみ、その値は変更される。一部のMeta DSはアプリケーションに利用することができる。 231 それに対してMeta DSは、分散フレームワークAliceが管理しているデータである。Aliceを構成するCSによってのみ、その値は変更される。一部のMeta DSはアプリケーションに利用することができる。
230 232
231 例えば、"start"というkeyでは、ノードがStart CSを実行可能かどうかの状態を表す。他にも"\_CLIST"というkeyでは、利用可能なRemote DSの一覧が管理されている。ユーザーはこの一覧にある名前を指定することで、動的にDSの伝搬などを行うことができる。 233 例えば、"start"というkeyでは、ノードがStart CSを実行可能かどうかの状態を表す。他にも"\_CLIST"というkeyでは、利用可能なRemote DSの一覧が管理されている。ユーザーはこの一覧にある名前を指定することで、動的にDSの伝搬などを行うことができる。
232 234
233 また、Input DSに付随しているものもある。Input DSはCS内部でReceiverという入れ物に格納される。ユーザーは、Receiverに対して操作することでDSを入手できる。 235 また、Input DSに付随しているものもある。Input DSはCS内部でReceiverという入れ物に格納される。ユーザーは、Receiverに対して操作することでDSを入手できる。
234 このReceiverには、fromというフィールドがあり、このDSを誰がputしたという情報が入っている。この情報をデータの伝搬する際に利用することで、DSをputしたノードに送り返すことを防ぐことができる。 236 このReceiverには、fromというフィールドがあり、このDSを誰がputしたという情報が入っている。この情報をデータの伝搬する際に利用することで、DSをputしたノードに送り返すことを防ぐことができる。
235 237
236 Meta DSはDS同様にDS APIを用いて取得できる。 238 Meta DSはDS同様にDS APIを用いて取得できる。
237 239
238 \section{Meta Code Segment} 240 \subsection{Meta Code Segment}
239 CSはアプリケーションを動作させるために必要なタスクであり、ユーザーによって定義される。 241 CSはアプリケーションを動作させるために必要なタスクであり、ユーザーによって定義される。
240 それに対してMeta CSはAliceを構成するタスクである。つまりMeta CSの群はAliceのComputationと言い換えることができる。一部のみユーザーが定義をすることができ、Aliceの挙動を変更することができる。 242 それに対してMeta CSはAliceを構成するタスクである。つまりMeta CSの群はAliceのComputationと言い換えることができる。一部のみユーザーが定義をすることができ、Aliceの挙動を変更することができる。
241 243
242 244
243 245
328 \begin{table}[html] 330 \begin{table}[html]
329 \lstinputlisting[label=src:asClass, caption=asClassの処理]{source/asClass.java} 331 \lstinputlisting[label=src:asClass, caption=asClassの処理]{source/asClass.java}
330 \end{table} 332 \end{table}
331 333
332 \subsection{パケットの再設計} 334 \subsection{パケットの再設計}
333 2.4で述べたように、Remoteからputされたデータは必ずシリアライズ化されておりbyteArrayで表現される。 335 2.5で述べたように、Remoteからputされたデータは必ずシリアライズ化されておりbyteArrayで表現される。
334 しかし、putされたbyteArrayが全てシリアライズ化された状態であるとはいえない。Localからも一般的なJavaのクラスオブジェクトとしてbyteArrayが使用されている場合が存在する。例えば、AliceVNCで使われる画像データはbyteArrayで表現されているが、これはLocalからputされている。 336 しかし、putされたbyteArrayが全てシリアライズ化された状態であるとはいえない。Localからも一般的なJavaのクラスオブジェクトとしてbyteArrayが使用されている場合が存在する。例えば、AliceVNCで使われる画像データはbyteArrayで表現されているが、これはLocalからputされている。
335 また、データの表現に圧縮形式を追加したことで、RemoteからでもputされたbyteArrayが圧縮されているのかそうでないのかが判断できなくなった。 337 また、データの表現に圧縮形式を追加したことで、RemoteからでもputされたbyteArrayが圧縮されているのかそうでないのかが判断できなくなった。
336 338
337 ここからわかることは、データを表現するにはデータ単体をやりとりするだけでは不十分ということである。 339 ここからわかることは、データを表現するにはデータ単体をやりとりするだけでは不十分ということである。
338 そこで、データとデータの状態を表すヘッダをまとめて1つのオブジェクトとして扱うように変更した。 340 そこで、データとデータの状態を表すヘッダをまとめて1つのオブジェクトとして扱うように変更した。
362 quickFlag&SEDAを挟まずCommandを処理を行うかを示す\\ 364 quickFlag&SEDAを挟まずCommandを処理を行うかを示す\\
363 \hline 365 \hline
364 serialized&データ本体のシリアライズ状態を示す\\ 366 serialized&データ本体のシリアライズ状態を示す\\
365 \hline 367 \hline
366 368
367 compressed&データ本体のシリアライズ状態を示す\\ 369 compressed&データ本体の圧縮状態を示す\\
368 \hline 370 \hline
369 371
370 dataSize&圧縮前のデータサイズを表す\\ 372 dataSize&圧縮前のデータサイズを表す\\
371 \hline 373 \hline
372 374
388 \nocite{*} 390 \nocite{*}
389 %\nocite{opencl} 391 %\nocite{opencl}
390 %\nocite{opencl:ref} 392 %\nocite{opencl:ref}
391 %\nocite{opencl:applied} 393 %\nocite{opencl:applied}
392 %\nocite{yutaka:os} 394 %\nocite{yutaka:os}
393 %\bibliographystyle{ipsjunsrt} 395 \bibliographystyle{ipsjunsrt}
394 %\bibliography{sigos} 396 \bibliography{sigos}
395 %\bibliography{cerium,book} 397 %\bibliography{cerium,book}
396 398
397 399
398 \end{document} 400 \end{document}