卒業研究 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
© Copyright 2025 ExpyDoc