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

-------

神戸大学 大学院システム情報学研究科 計算科学専攻 陰山 聡
* 担当教員 [#fe464295]

-------
【目次】
#contents
-------
- 陰山 聡
- 坂本 尚久

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

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

#ref(domain_decomp_1d.png)
- 2016.07.21(第一回、担当:陰山)
- 2016.07.28 (第二回、担当:坂本)

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

#ref(domain_decomp_2d.png)
* 内容 [#vd483d94]

- 上の二つの図はどちらも16個のMPIプロセスで並列化しているので、
計算速度の点で見ればどちらも同じと思うかもしれない。
熱伝導問題(床暖房システム)を例にとり、本格的な並列シミュレーションを行う。

- だがそれは違う。
プロセス間の通信にかかる時間がゼロであれば、そのとおりだが、実際にはプロセス間の通信(MPI_SENDやMPI_RECV等)には有限の―それどころかかなり長い―時間がかかる。
- 問題の定式化
- ハイブリッド並列化
- 離散化
- コーディング
- 並列化(MPI + OpenMP(ハイブリッド並列化)) 
- 大規模並列(最大 84 ノード= 1344 コア)計算
- 可視化

- では、プロセス間通信に長い時間がかかるという前提の下で、
1次元領域分割と、2次元領域分割ではどちらが計算が速いであろうか?
2次元領域分割にも様々な分割方法があるが、その中で最も最適な分割方法な何であろうか?

* 講義資料 [#k4b9962b]

#br
#br
#br
* 計算と通信 [#t0cec2d6]
- 2016.07.21 第一回講義資料

- 1次元空間を格子点で離散化した上で、MPIでプロセス間通信を行う場合を考える。
&attachref(170720.pdf);

#ref(mpi_comm_points_1d.png)

- 計算格子には2種類ある。一つは、その上で計算だけを行う格子。
もう一つはMPI通信のデータを送ったり、受けたりする格子である。
(一番外側から2番目の格子は計算も通信も行う。)
// - 2015.07.16 講義資料

- 一つのMPIプロセスが行う通信の量は、通信を行う格子点の数に比例する。
通信に時間がかかる場合、通信を行う格子点は少ないほうが望ましい。
// &attachref(150716a.pdf);

#br
#br
#br
* 1次元領域分割と2次元領域分割 [#d24ee06f]


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

#ref(400_points_raw.png)
今日の演習内容の難易度はどうでしたか?
#vote(簡単すぎた[0], ちょうどいい[3],ちょっと難しかった[2],さっぱりわからなかった[0])


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

#ref(400_points_1d_decomp.png)
- 2017.07.27 第二回講義資料

//&attachref(160728.pdf);
[[170727.pdf:https://dl.dropboxusercontent.com/u/30991646/170727.pdf]]

- 2次元領域分割の場合、同じく4つのMPIプロセスで並列化すると、下の図のようになる。
今日の演習内容の難易度はどうでしたか?
#vote(簡単すぎた[0], ちょうどいい[4],ちょっと難しかった[0],さっぱりわからなかった[2])

#ref(400_points_2d_decomp.png)

- 明らかにプロセスあたりの通信量は2次元領域分割の方が少ない。

#br
#br
#br
* 2次元領域分割の方法 [#u573e4c1]

- 同じMPIプロセス数による2次元領域分割でも様々な可能性がある。
たとえば、正方形を16個の長方形に分割する場合、次の二つではどちらが通信量が少ないであろうか?

#ref(domain_decomp_2db.png)
#ref(domain_decomp_2d.png)

- 正方形を16個に分割するのだから、どちらも方法でも一つのMPIプロセスが担当する面積は等しい(最初の正方形の16分の1)。
だが、下の二つの図を見ればわかるとおり、長方形よりも正方形に近い方が通信量が少ない。

#ref(domain_decomp_2d_points_00.png)
#ref(domain_decomp_2d_points_01.png)

- 面積の等しい長方形の中で、4辺の長さの合計が最も小さいものは正方形である、ということを考えれば自明であろう。

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

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

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

#pcomment


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

as of &_now; (&counter;)