ppt - 早稲田大学

SMPクラスタにおける効率的な
MPI集団通信関数の実装
早稲田大学大学院 理工学研究科 情報・ネットワーク専攻
稲垣 良一
上田 和紀
研究の背景と目的
SMPクラスタでの
通信性能低下の要因
MPI集団通信関数
SMPクラスタでは、UPクラスタに
比べて集団通信の性能が低下す
る傾向がある
※本研究でのSMPクラスタでの集団通信とは、SMP
クラスタ内のプロセッサ数分だけ各ホスト内に計算
ノードが存在し、並列計算に参加している状態を言
うものとする。
1.ハードウェアの共有
メモリバス・通信の競合
 1プロセッサあたりの利用率低下

2.集団通信関数のアルゴリズム
SMPクラスタでの通信性能の
改善を目指す
本研究で提案する手法に基づき、全対
全通信について実装を行い、既存の実
装との比較を行った。


ランクの若いノードへ全ノードが一
斉に通信を開始
SMPクラスタで用いる場合、ハード
ウェアの競合の影響を受ける
右図)
2CPU SMPクラスタ2台使用時の
既存の実装における
全対全通信関数の通信ダイアグラム
Host 1
Time Host 0
node0 node1 node2 node3
各ホスト間のデータフローは非均一
効率が良いとはいえない!
集団通信関数のアルゴリズムを改良
⇒ノード間通信の通信順序のスケジューリング
SMP内にある複数のノードに対し、同時に通信を行わない
特定のノードに通信が集中しない
通信の競合を軽減させ、通信効率の向上を目指す
効率的な全対全通信関数の設計
①ノード構成情報の取得
例1) 2CPU SMPクラスタ4台
8ノード実行時のノード構成情報
ホスト内ノード数
実際の集団通信を行う前に、あらかじめ全
ノードがSMPクラスタのノード構成情報を取
得しておく。この情報に基づいて、集団通
信時のスケジューリングを決定する。
どのノードが同じホストに存在するかを把
握することで、同時にそのホストに対して通
信を行うことを避けることが可能になる。
※例1参照
②通信のスケジューリング
1. SMP内の複数ノードに対し、同時に通信
を行わない
2. 特定のノードに通信が集中しない
を念頭に①の情報を元に通信順序を決める。

ホスト数
Node0
Node1
Node2
Node3
Node4
Node5
Node6
Node7
例2) 4CPU SMPクラスタ3台
10ノード実行時のノード構成情報
Node0
Node1
Node2
Node3
Node4
Node5
Node6
Node7
Node8
Node9
※ノード構成情報は二次元配列で各ノードに保
存される
例3) 2CPU SMPクラスタ2台 (4ノード)
全対全通信の通信ダイアグラム
2CPU SMPクラスタでの全対全通信

SMP内には偶数番号のノードと奇数番号の
ノードが一つずつ存在。
以下の通信順にノード間通信を行う。
(myrank : 自ノードのランク;
hosts : 総ホスト台数;
np : 総計算ノード数)
1. 各偶数ノード→全奇数ノード
for (i =0; i < hosts; i++){
Send data to ((myrank + 1) + 2 * i) % np;
}
2. 各奇数ノード→全偶数ノード
for (i =0; i < hosts; i++){
Send data to ((myrank - 1) + 2 * i) % np;
}
3. 各偶数ノード→全偶数ノード
for (i =0; i < hosts; i++){
Send data to (myrank + 2 * i) % np;
}
4. 各奇数ノード→全奇数ノード
for (i =0; i < hosts; i++){
Send data to (myrank + 2 * i) % np;
}
※例3・4参照
※本研究内で行った実装では、step 3 と step 4 は同時に実
行するようになっている(例3参照)
例4) 2CPU SMPクラスタ4台 (8ノード)
全対全通信の様子
集団通信関数の実装
参考)効率的な一対全通信関数の設計
SMPI
(SMPI_Bcast として実装)
本研究の提案を既存のMPI関数
のように扱うための実装
※SMPI = SMP extension on MPI
 root node が各ホストの先頭にある場合
実装済みの関数
SMPI_Alltoall
(vs. MPI_Alltoall)
(vs. MPI_Bcast)
SMPI_Bcast
SMPI_Init
(SMPクラスタのノード構成取得関数)
その他ノード構成情報の操作関数
MPICH-Score
設計方針
ホスト間の通信を最小回数にする。
をベースに実装
Node0 Node1
Node0 Node1
Node0 Node1
Node2 Node3
Node2 Node3
Node2 Node3
Node4 Node5
Node4 Node5
Node4 Node5
Node6 Node7
Node6 Node7
Node6 Node7
各ホストの先頭ノードに
対してBcast
各ホストの残りのノードに対して
各ホスト内でそれぞれBcast
 root node が各ホストの先頭にない場合
評価
評価環境
SMP PC Cluster FOLON-Ⅳ
CPU : Dual PentiumⅢ1.26GHz
Memory : 2GB
Network : Myrinet2000
16台構成
(最大32Nodeで実行可能)
Redhat Linux 7.3 + SCore 5.4
Node0 Node1
Node0 Node1
Node2 Node3
Node2 Node3
Node4 Node5
Node5 Node4
Node6 Node7
Node6 Node7
上の手順
に進む
動的にホスト構成情報を入れ替える
 2CPU SMPクラスタ4台(計8ノード)を用
いた場合の全対全通信の通信時間
総データ量 MPI_Alltoall
SMPI_Alltoall
性能向上率
16MB
0.0496
0.0377
+31.4%
32MB
0.0939
0.0755
+24.3%
64MB
0.1911
0.1412
+35.3%
128MB
0.3690
0.2969
+24.3%
256MB
0.7165
0.5772
+24.1%
512MB
1.4598
1.1721
+24.5%
1024MB
2.9241
2.2788
+28.3%
(通信時間の単位は秒)
 本手法は
 送信するデータ量が大きい
 SMPクラスタの規模が大きい
成果
 提案した手法により、SMPクラスタ上
での通信性能が改善された。性能評
価の範囲では、最大35%通信性能が
向上した。
今後の課題
 他の集団通信関数にも本手法を適
用し、SMPクラスタ上での性能向上
を目指す
場合において有効であることが確認できた
 現時点では、2CPU
 しかしながらUPクラスタには通信性能面
では及ばなかった
SMPクラスタで
しか動作しないので、プロセッサ数
に依存しないスケジューリング手法
を考案する。
全対全通信の評価 (MPI_Alltoall)
2x2 – 4nodes
4x2 – 8nodes
評価環境
SMP PC Cluster FOLON-Ⅳ
CPU : Dual PentiumⅢ 1.26GHz
Memory : 2GB
Network : Myrinet2000
16台構成 (最大32Nodeで実行可能)
Redhat Linux 7.3 + SCore 5.4
凡例
赤 : 従来の実装 (MPICH-SCore)
緑 : 本研究の提案に基づく実装
青 : 同じNode数のUPクラスタ
(通信に使った実装はMPICH-SCore)
8x2 – 16nodes
16x2 – 32nodes
通信性能向上率の推移
一対全通信の評価 (MPI_Bcast)
8x2 – 16nodes
16x2 – 32nodes
評価環境
SMP PC Cluster FOLON-Ⅳ
CPU : Dual PentiumⅢ 1.26GHz
Memory : 2GB
Network : Myrinet2000
16台構成 (最大32Nodeで実行可能)
Redhat Linux 7.3 + SCore 5.4
ある大きさのデータ(4MB)をBcast した
ときにかかる時間を root node を変更
しながら計測。横軸成分はroot nodeを
さす。
7x2 – 13nodes (6x2 + 1)
13x2 – 25nodes (12x2 + 1)
凡例
赤 : 従来の実装 (MPICH-SCore)
緑 : 本研究の提案に基づく手法
青 : 同じNode数のUPクラスタ
(通信に使った実装はMPICH-SCore)
ホスト間通信の回数を最小回数
に抑えているので、root node に
よって通信時間が変化すること
がなく、安定した通信時間で通
信が実行されている。