• 追加された行はこの色です。
  • 削除された行はこの色です。
現在(&lastmod;)作成中です。
既に書いている内容も&color(#ff0000){大幅に変わる};可能性が高いので注意。

-------

神戸大学 大学院システム情報学研究科 計算科学専攻 陰山 聡

-------

-------
【目次】
#contents
-------

#br
#br
#br
* 2次元並列化 [#ab9ae55e]

引き続き正方形領域の熱伝導問題(平衡温度分布)を解く例題を扱う。
- 引き続き、正方形領域の熱伝導問題(平衡温度分布)を解く例題を扱う。
- これまでMPIで並列化を行うにあたり、正方形領域のy方向(j方向)に複数の領域に分割し、
それぞれの領域に一つずつMPIプロセスを割り当てて並列化していた。
このような並列化を1次元領域分割による並列化という。
下の図は正方形領域を16個の領域に分割した例である。

#ref(domain_decomp_1d.png)

- 同様に二次元領域分割による並列化も考えられる。
正方形を16個の領域に2次元的に分割すると下の図のようになる。

#ref(domain_decomp_2d.png)

- 上の二つの図はどちらも16個のMPIプロセスで並列化しているので、
計算速度の点で見ればどちらも同じと思うかもしれない。

- だがそれは違う。
プロセス間の通信にかかる時間がゼロであれば、そのとおりだが、実際にはプロセス間の通信(MPI_SENDやMPI_RECV等)には有限の―それどころかかなり長い―時間がかかる。

- では、プロセス間通信に長い時間がかかるという前提の下で、
1次元領域分割と、2次元領域分割ではどちらが計算が速いであろうか?



- 下の図は正方形領域を400個の格子点で離散化した場合を示す。

#ref(400_points_raw.png)


- これを4つのMPIプロセスで並列化することを考える。
1次元領域分割の場合、下の図のようになる。

#ref(400_points_1d_decomp.png)


- 2次元領域分割の場合、同じく4つのMPIプロセスで並列化すると、下の図のようになる。

#ref(400_points_2d_decomp.png)

-------
#br
#br
#br
* 授業アンケート [#k801d0b1]
今回の演習内容はどうでしたか?(どれか一つ、一度だけ押してください。)
#vote(簡単すぎた[0], 難しすぎた[0], ちょうどよかった[0])
#vote(簡単すぎた[1], 難しすぎた[4], ちょうどよかった[0])

#br
#br
#br
* 質問、コメントなど自由にどうぞ [#o9c99adc]

「お名前」欄は空欄で可。

#pcomment


------------------------------

as of &_now; (&counter;)