Mercurial > hg > Papers > 2015 > nozomi-sigos
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} |