Mercurial > hg > Papers > 2022 > riono-master
changeset 36:a60e8d536a28
update continuation
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 06 Feb 2022 21:27:31 +0900 |
parents | e33201b0018d |
children | 441f0e35fb71 |
files | Paper/chapter/1-Christie.tex Paper/chapter/5-LibraryComparison.tex Paper/master_paper.pdf |
diffstat | 3 files changed, 38 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/chapter/1-Christie.tex Sun Feb 06 14:38:41 2022 +0900 +++ b/Paper/chapter/1-Christie.tex Sun Feb 06 21:27:31 2022 +0900 @@ -69,9 +69,6 @@ DGMに対してput操作を行うことでDGM内のqueueにDGを保管できる。 DGを取り出す際には、CG内で宣言した変数データにannotationを付ける。 -\section{Christieにおける継続} - - \section{annotationを使用したデータの記述} ChristieではDGの指定にannotationを使用する。 annotationとはクラスやメソッド、パッケージに対して付加情報を記述できる @@ -138,13 +135,35 @@ その制約により、複雑になりがちな分散プログラミングのコードの可読性を高めている。 実行されたCGを再度実行する場合にも、CGのインスタンスを生成してsetupメソッドに渡す。 +\section{Christieにおける継続} +プログラムにおける継続とは、計算の途中を前後に分割し、分割した後の部分をfirst class objectとして扱うものである。 +つまり、計算途中などのどのような状況でもそのobjectを取り出すことが可能であると言うことである。 +しかし継続を扱うためにはStackを含めた実行環境全体をheapにコピーする必要がある。 + +継続の一種に軽量継続がある。 +軽量継続は、Stackや環境のコピーを持っていないが、全ての必要な情報を関数の引数として持っている。 +必要な情報とは、計算に必要なデータや関数を実行した後にJumpするべき関数である。 +%cbcの例出す? + +Christieでは、CodeGearとDataGearでプログラムを行っているが、 +内部ではannotationでkeyを待ち、DataGearManagerにkeyをつけてDataGearを渡している。 +keyでつながったCodeGearに計算は接続されている。実行されたCodeGearはdataをputし、次のCodeGearをSetupしてプログラムの処理が行われていく。 +これにより簡易的な継続が行われているといえる。 + +また、keyでデータを渡すデータ構造にTreeMapを使用することがある。 +TreeMapはStackのような働きをするが、ThreeMap自体を分散環境かで通信する場合に巨大なデータ構造を渡してしまうことになる。 +この方法では分散通信のパフォーマンスが低下してしまうと考えられるため、TreeMapのkey使用してPut/Takeすることで対応可能であると考える。 +その際、2nd keyとして接続先のhostname:portを指定する。 +こうするとで、データはproxyとしてアクセスすることが可能となる。 +これよりChristieは、0名前付き継続と呼ぶことが可能な継続の一つを使用していると言える。 + \section{DataGearManagerの複数立ち上げ} AliceではLocalDGMと同じ機能のLocalDataSegmentManagaer(以下LocalDSM)がstaticで実装されていたため、複数のLocalDSMを立ち上げることができなかった。 しかしChristieではCGMの生成に伴いLocalDGMも生成されるため、複数作成が可能である。 複数のLocalDGM同士のやり取りも、Remoteへの接続と同じ様に相手をRemoteDGMとしてproxyとして立ち上げることでアクセス可能である(図\ref{fig:LocalRemoteCommunication})。 -\begin{figure}[htb] +\begin{figure}[tb] \begin{center} \includegraphics[width=120mm]{images/LocalRemoteCommunication.pdf} \end{center} @@ -157,6 +176,8 @@ 6行目にあるように、RemoteDGMを立ち上げるにはCGMが持つcreateRemoteDGMメソッドを用いる。 引数にはRemoteDGM名と接続するremoteノードhost名、ポート番号を指定している。 +\newpage + \lstinputlisting[label=src:2LocalDGM, caption=LocalDGMを2つ作る例]{src/java/RemoteDGMCommunication.java} remoteへの接続と同じ様にアクセスが可能になっており、コードを変更せずに同一マシン上の1つのアプリケーション内で分散アプリケーションのテストが可能となっている。
--- a/Paper/chapter/5-LibraryComparison.tex Sun Feb 06 14:38:41 2022 +0900 +++ b/Paper/chapter/5-LibraryComparison.tex Sun Feb 06 21:27:31 2022 +0900 @@ -1,3 +1,15 @@ \chapter{Christie Sharpの評価} -\section{Unityの通信ライブラリとの比較} \ No newline at end of file +\section{Unityの通信ライブラリとの比較} + +\section{Photon network 2} + + +\section{Mirror} + +\section{Christie Sharpの利点} + + + + +