annotate Paper/chapter/1-Christie.tex @ 8:91276da3d77e

fix file name
author riono <e165729@ie.u-ryukyu.ac.jp>
date Thu, 06 Jan 2022 22:55:58 +0900
parents
children 1e12b3e710d6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \chapter{Christie}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 ChristieとはJavaで記述された並列分散通信フレームワークである。Aliceという前身のプロジェクトが開発されていたが、以下のような問題があった。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 データを送受信するAPIはインスタンスを生成して関数を呼び出す様に設計されているが、外部Classからも関数が実行できてしまうため、
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 受信する際どのkeyに紐づいたデータを受け取るのか、直感的にわからない。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 データを管理しているlocalDataSegmentがシングルトンで設計されており、Localで接続を行う際に複数のアプリケーションで立ち上げる必要がある。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 データを受け取る際にObject型で受け取っているため、送信元を辿らない限り何の型が送信されているか不明瞭である。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 それらの問題点を解消するためにAliceを再設計され、作成されたものがChristieである。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 ChristieではAliceの機能や概念を維持しつつ、Aliceで発生していた問題点やプログラムを煩雑さなどを解消している。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 \section{Christieの基礎概念}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 Chrisiteはタスクとデータを細かい単位に分割してそれぞれの依存関係を記述し、
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 タスク実行に必要な入力が揃った順から並列実行するというプログラミング手法を用いている。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 将来的に当研究室で開発しているGearsOSのファイルシステムに組み込まれる予定があるため、GearsOSを構成する言語 Continuation based Cと
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 似た概念を持っている。Christieに存在する概念として以下の様なものがある。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 \begin{itemize}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 \item CodeGear
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 \item DataGear
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 \item CodeGearManager (以下CGM)
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 \item DataGearManager (以下DGM)
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 \end{itemize}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 CodeGearはクラスやスレッドに相当する。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 DataGearは変数データに相当し、CodeGear内でJavaのannotationの機能を用いて変数データを取得できる。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 CodeGear内に記述した全てのDataGearにデータが格納された際に、初めてそのCodeGearが実行されるという仕組みになっている。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 CGMはノードに相当し、CodeGear、DataGear、DGMを管理している。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 DGMはDataGearを管理しており、putという操作によって変数データ、つまりDataGearをDGMに格納できる。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 DGMのput操作を行う際にはLocalとRemoteのどちらかを選び、変数のkeyとデータを引数として渡す。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 LocalであればLocalのCGMが管理しているDGMに対してDataGearを格納していく。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 Remoteであれば、接続したRemote先のCGMが管理しているDGMにDataGearを格納する。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 %図欲しい DG CG CGM DGMの関係性を説明した図
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 \begin{figure}[htb]
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 \begin{center}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 \includegraphics[width=150mm]{images/ChristieClass.pdf}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 \end{center}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 \caption{同一プロセスでのChristieの複数インスタンス立ち上げ}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 \label{fig:MultiInstance}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 \end{figure}
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 図\ref{fig:MultiInstance}は、Christieを同一プロセスで複数のインスタンスを生成した際のDGMやCGMの接続構造を示している。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 全てのCGMはThreadPoolと他のCGMをListとして共有している。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 ThreadPoolとはCPUに合わせた並列度でqueueに入ったThreadを順次実行していく実行機構である。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 ThreadPoolが増えると、CPUコア数に合わない量のThreadを管理することになり並列度が下がるため、1つのThreadPoolで全てのCGMを管理している。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 またCGMのListを共有することでメタレベルで全てのCodeGear/DataGearにアクセス可能となっている。
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
91276da3d77e fix file name
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71