comparison Paper/paper.tex @ 8:2b7f737a2ced

add about Christie
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Sat, 01 May 2021 03:44:55 +0900
parents 9cf99ee758a5
children 8c1e0271eb24
comparison
equal deleted inserted replaced
7:9cf99ee758a5 8:2b7f737a2ced
186 \item \|DataGear|(以下DG) 186 \item \|DataGear|(以下DG)
187 \item \|CodeGearManager|(以下CGM) 187 \item \|CodeGearManager|(以下CGM)
188 \item \|DataGearManager|(以下DGM) 188 \item \|DataGearManager|(以下DGM)
189 \end{itemize} 189 \end{itemize}
190 CodeGearはクラスやスレッドに相当する. DataGearは変数データであり, CodeGear内でjavaのアノテーションを用いて記述する. 190 CodeGearはクラスやスレッドに相当する. DataGearは変数データであり, CodeGear内でjavaのアノテーションを用いて記述する.
191
191 DataGearはKeyと必ず対応しており, CodeGear内の全てのKeyにDataGearが揃った際に初めてCodeGearが動作するという仕組みになっている. 192 DataGearはKeyと必ず対応しており, CodeGear内の全てのKeyにDataGearが揃った際に初めてCodeGearが動作するという仕組みになっている.
193
192 CodeGearManagerはいわゆるノードに相当し, CodeGear, DataGear, DataGearManagerを管理する. 194 CodeGearManagerはいわゆるノードに相当し, CodeGear, DataGear, DataGearManagerを管理する.
193 複数のCodeGearManager同士が配線され, DataGearを送信し合うことで分散処理を実現している. 195 複数のCodeGearManager同士が配線され, DataGearを送信し合うことで分散処理を実現している.
196
194 DataGearManagerはDGを管理しているもので変数プールに相当し, CodeGearManagerの持っているDataGearのkeyとputされたデータの全てを所持している. 197 DataGearManagerはDGを管理しているもので変数プールに相当し, CodeGearManagerの持っているDataGearのkeyとputされたデータの全てを所持している.
195 DataGearManagerはLocalとRemoteに区分することができ, LocalはCodeGearManager自身のDataGearManagerが持つDataGearの一覧である. 198 DataGearManagerはLocalとRemoteに区分することができ, LocalDataGearManagerはCodeGearManager自身が所持するDataGear(key)のプールであり, Localにputすることにより自身の持つkeyにDataGearを送ることができる.
196 対するRemoteDataGearManagerはDataGearManagerが持つ 199 対するRemoteDataGearManagerはCodeGearManagerが配線されている別のCodeGearManagerが持つDataGearのプールである. つまり, 任意の接続されたRemoteDataGearにDataGearをputすると対応したノードが持つkeyにDataGearが送信される. RemoteDataGearにDataGearをputする処理が分散処理の肝となっている. RemoteDataGearの仕組みを図\ref{fig:RDGM}に示す.
200
201 \begin{figure}[tb]
202 \begin{center}
203 \includegraphics[width=80mm]{images/Remote_DataGearManager.pdf}
204 \end{center}
205 \caption{RemoteDataGearと接続ノードの関係図}
206 \label{fig:RDGM}
207 \end{figure}
208
209
210 Christieの要となるDataGearのkeyはjavaのアノテーション機能が使われている. アノテーションには以下の4つが存在する.
211 \begin{description}
212 \item[Take] 先頭のDGを読み込み,そのDGを削除する.DGが複数ある場合,この動作を用いる.
213 \item[Peek] 先頭のDGを読み込むが,DGが削除されない.そのため,特に操作をしない場合は同じデータを参照し続ける.
214 \item[TakeFrom(Remote DGM name)] Takeと似ているが,Remote DGM nameを指定することで,その接続先(Remote)のDGMからTake操作を行える.
215 \item[PeekFrom(Remote DGM name)] Peekと似ているが,Remote DGM nameを指定することで,その接続先(Remote)のDGMからPeek操作を行える.
216 \end{description}
217
218 コード\ref{codes: StartHelloWorld}はChristieで記述したHello Worldのコードである.
219
220 \begin{lstlisting}[frame=lrbt,label=codes: StartHelloWorld,caption={ChristieにおけるCGMとCGのsetup}]
221 public class StartHelloWorld extends StartCodeGear {
222
223 public StartHelloWorld(CodeGearManager cgm) {
224 super(cgm);
225 }
226
227 public static void main(String[] args){
228 CodeGearManager cgm = createCGM(10000);
229 cgm.setup(new HelloWorldCodeGear());
230 cgm.setup(new FinishHelloWorld());
231 cgm.getLocalDGM().put("helloWorld","hello");
232 cgm.getLocalDGM().put("helloWorld","world");
233 }
234 }
235 \end{lstlisting}
236
237
238 \begin{lstlisting}[frame=lrbt,label=codes: StartHelloCG,caption={HelloWorldCodeGear}]
239 public class HelloWorldCodeGear extends CodeGear {
240
241 @Take
242 String helloWorld;
243
244 @Override
245 protected void run(CodeGearManager cgm) {
246 System.out.print(helloWorld + " ");
247 cgm.setup(new HelloWorldCodeGear());
248 cgm.getLocalDGM().put(helloWorld,helloWorld);
249 }
250 }
251 \end{lstlisting}
197 252
198 %4 253 %4
199 \section{論文の構成} 254 \section{論文の構成}
200 \label{config} 255 \label{config}
201 256