PPT

卒業研究
JCSPを用いたプログラム開発
05162042 池部理奈
目次
① JCSPについて
1)JCSP Base Edition
2)JCSP Network Edition
3)JCSPプログラム開発
② マンデルブロー集合のプログラミング
1)プログラム構成
2)計算時間の結果
③ まとめ
池部理奈 卒業研究発表 2009.03.03
2
JCSPについて
CSP(Communicating Sequential Process)の概念を
Javaで実装するためのライブラリ。
パラレルプロセスはチャネルとCSPプロセスから構成されている。
ParaMain
Chan
SendProc
ReadProc
パラレルプロセスParaMainの構成
池部理奈 卒業研究発表 2009.03.03
3
チャネルの種類
One2Oneチャネル
Farmer
out
in
Worker
Occamではこのタイプのチャネルを使っている
池部理奈 卒業研究発表 2009.03.03
4
多対一の関係のチャネル
Any2Oneチャネル
Worker0
out
Worker1 out
Worker2
これらのチャネルは
Any側のどのプロセスが通信するか
確定的でない
out
One2Anyチャネル
Farmer0
in Farmer0
in
out
in
in
Worker0
Worker1
Worker2
池部理奈 卒業研究発表 2009.03.03
5
JCSPの実行形態(1/2)
JCSPを用いて開発される並列プロセスのプログラムは、主に
2種類の実行形態をとることができる。
1つは、チャネルで接続された複数の並列プロセスを1つのCPU
上で行うタイプ。
計算機(1個のCPU)
Main
P1
P0
P2
池部理奈 卒業研究発表 2009.03.03
6
JCSPの実行形態(2/2)
もう一方の実行形態は、ネットワークに接続された実際の計算機
(ノード)に各プロセスを配置して実行するタイプ。
Node1
Main
P1
しかし実際の物理的な
ネットワークの接続形態は
必ずしもこのようにはなっていない
Node0
Main
P0
Node2
Main
P2
池部理奈 卒業研究発表 2009.03.03
7
ネットワーク
物理的なノードの接続形態とソフトウェア上のプロセスの
接続形態を合理的にマッピングする必要が生じる。
Node1
Main
P1
Node0
Main
P0
Node2
Main
P2
JCSPには、このチャネルの接続問題を解決するために
CNSというものが用意されている!
池部理奈 卒業研究発表 2009.03.03
8
CNS server
CNS(チャネルネームサーバー)は、ノードのIPアドレスとチャネルの
名前を管理し、各プロセスからの問い合わせに対応するもの。
プログラムの設計時には物理的なネットワークの接続形態を
考慮する必要がなく、大変便利である。
池部理奈 卒業研究発表 2009.03.03
9
JCSPプログラム開発
一般的なプログラム開発
第一段階 : 一台の計算機内に並列プロセスとして実行
第二段階 : 一台の計算機内の複数のJava仮想マシンで
ネットワークプログラムとして実行
第三段階 : 実際のネットワークの複数の計算機でネットワーク
プログラムを実行
第一段階
第二段階
第三段階
CNS
Farmer
Worker
CNS
Farmer
Worker
Worker
Farmer
池部理奈 卒業研究発表 2009.03.03
10
マンデルブロー集合のプログラミング
プログラムをFarmer部とWorker部に分ける
Farmer部
座標をWorkerに送り、計算結果を受信する
Worker部
受け取った座標を計算し、発散速度の結果を
Farmerに送信する
400
Worker 0
Farmer 0
Worker 1
400
Worker 2
池部理奈 卒業研究発表 2009.03.03
11
計算時間の比較
粒度、Workerの台数、実行形態に注目して、比較。
① 粒度を変えて時間を比較。(実行形態:第一段階)
TPCOREと違い、
Worker3台以上でも
繋げられる
② Workerの台数を変えて時間を比較。(実行形態:第一段階)
③ 実行形態による時間の比較。(Worker:1台)
第一段階
第二段階
CNS
Farmer
Worker
第三段階
CNS
Farmer
Worker
Worker
Farmer
池部理奈 卒業研究発表 2009.03.03
12
①と②の結果
計算回数50
ms
5000
4000
worker 1台
worker 2台
worker 3台
worker 5台
worker20台
3000
2000
1000
0
worker 1台
worker 2台
worker 3台
worker 5台
worker20台
1
2
4
5
3500 1828 881 734
3328 1797 875 718
4307 2203 1116 897
4406 2219 1171 954
4734 2437 1250 1000
8
10
40
80
100 400 800 16k
474
469
587
625
640
391
375
481
500
562
130
125
172
172
192
93.7
94
119
123
131
78
94
93
101
108
62
60
57
62
64
47
52
57
57
58
47
48
39
53
56
粒度
① 粒度が粗いほうが、計算時間は短い。
② Workerの台数による時間差はあまりない。
池部理奈 卒業研究発表 2009.03.03
13
③の結果(1/2)
計算回数50
ms
450000
400000
350000
300000
第一段階
第二段階
第三段階
250000
200000
150000
100000
50000
粒度
0
1
2
4
5
8
10
40
80
100 400 800
62
47
第一段階 3500 1828 881 734.33 473.67 390.67 130 93.667 78
415844244812113828
88938
54140
42828
12188
6958
5656
2117
1313
第二段階
第三段階 249672131927 63266 49062 30968 29660 8781 4609 3432 1281 786
第一段階
第二段階
CNS
Farmer
Worker
16k
47
464
239
160k
39
406
249
第三段階
CNS
Farmer
Worker
Worker
Farmer
池部理奈 卒業研究発表 2009.03.03
14
③の結果(2/2)
計算回数50
ms
8000
7000
6000
第一段階
第二段階
第三段階
5000
4000
3000
2000
1000
0
粒度
80
第一段階 93.6667
第二段階 6958
第三段階 4609
100
400
800
16k
160k
78
5656
3432
62
2117
1281
47
1313
786
47
464
239
39
406
249
ネットワークに接続すると、非常に時間がかかる。
また、1台のCPU上で実行させるよりも複数台のCPUで実行させた方が、
約2倍ほどはやくなっている。
池部理奈 卒業研究発表 2009.03.03
15
なぜCPU複数台のほうがはやい?
W
data
ack
▼
F
data
ack
W
F
一台のCPU上では送受信を一本の回線で行う
ため、時間がかかってしまうと思われる
池部理奈 卒業研究発表 2009.03.03
16
まとめ
今回は単純な計算だったのでネットワークプログラムで
実行させた場合、通信にかかる時間が計算時間の差に
大きく影響していた。
もっと複雑な計算をさせるプログラムにすれば、
複数台のCPUの方がはやい結果が出ると思われる。
池部理奈 卒業研究発表 2009.03.03
17