Mercurial > hg > Papers > 2021 > ikki-sigos
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 |