170 likes | 284 Views
通信衝突削減のための タスク 配置最適化. 九州大学大学院 システム情報科学府 情報理学専攻 博士後期課程 1 年 森江 善之. 背景. 並列計算機の規模は拡大の傾向 計算ノードが多大なため、通 信が増加 クロスバを使用することは困難 →ツリー、メッシュ、トーラスなどを採用 通信衝突が増加! 通信衝突の頻度はタスク配置に依存する タスク 配置最適化により通信衝突を回避可能. 計算ノード 1 から計算ノード 4 へ 100B のデータ送信する 通 信コスト 4 * 100=400. 1. 2. 3. 4. 6. 5.
E N D
通信衝突削減のためのタスク配置最適化 九州大学大学院 システム情報科学府 情報理学専攻 博士後期課程 1年 森江 善之
背景 • 並列計算機の規模は拡大の傾向 • 計算ノードが多大なため、通信が増加 • クロスバを使用することは困難→ツリー、メッシュ、トーラスなどを採用 • 通信衝突が増加! • 通信衝突の頻度はタスク配置に依存する • タスク配置最適化により通信衝突を回避可能
計算ノード1から計算ノード4へ100Bのデータ送信する計算ノード1から計算ノード4へ100Bのデータ送信する 通信コスト 4*100=400 1 2 3 4 6 5 従来のタスク配置最適化-ホップ数を最小にするタスク配置- • 方針: • 通信コスト (=各タスク間における全通信のホップ数*通信量の総和)が小さくなるようにタスクを配置することで通信衝突を削減 出典:T. Agarwal, A.Sharma, L. V. Kale, ``Topology-aware task mapping for reducing communication contention on large parallel machines‘’, Proceedings of IEEE International Parallel and Distributed Processing Symposium 2006, pp.1-10, in 2006
ホップ数を最小にするだけで十分か? ホップ数を最小にすると・・・ T3でスイッチCをまたぐ通信が集中 通信衝突を回避するように タスク配置を行う スイッチ C スイッチ C スイッチ A スイッチB スイッチ A スイッチB 1 2 3 4 6 1 4 5 2 6 5 3 T1 T2 T3 T4 T1 T2 T3 T4 ホップ数 タスク1 タスク1 タスク4 タスク2 24<26 タスク5 タスク3 衝突した メッセージ数 タスク4 タスク2 タスク3 タスク5 3>0 タスク6 タスク6
通信衝突の削減のためのタスク配置最適化の提案通信衝突の削減のためのタスク配置最適化の提案 • 通信衝突による通信時間の増減を加味してより高性能なタスク配置最適化を行う • 準備 • メッセージサイズはすべて等しい • 並列に実行可能な通信は全て同時に実行される • 通信衝突は同時に同一リンクを通るメッセージが実行される時に発生する • 通信は完全に衝突するか全く衝突しないかのどちらかとなる
Concurrent Communication Set • 同時に実行される通信の集合をConcurrent Communication Setとよび、CCSiで表わす • iはCCS間の通信の実行順序を表し、この実行順序を通信ステップ(CS)と呼ぶ CS1 CS2 CS3 CS4 CCS3={e14,e25,e36} タスク1 タスク2 タスク3 タスク4 タスク5 タスク6 6
提案手法における目的関数 遅延 メッセージサイズ 衝突回数 通信帯域幅
同期関数のMPIプログラムへの挿入 CCS間での通信衝突発生! MPI_batrrier CCS1 CCS2 タスク1 タスク1 • CCS間の通信が衝突 • CCS間の通信が同時に実行されることがないようにMPI_Barrierの挿入などを行う タスク2 タスク2 タスク3 タスク3 タスク4 タスク4 タスク5 タスク5 タスク6 タスク6 タスク7 タスク7 タスク8 タスク8 MPI_Barrier(comm) If(t %2 == 0) MPI_Send( smsg, t+1 ) El se MPI_Recv( rmsg, t-1) MPI_Barrier(comm) If(t %2== 0) MPI_Recv( smsg1, t+1) else MPI_Send( rsmg1, t-1 )
性能評価実験 • 実験概要 • 提案手法の有効性を示すため、通信パターンを抽出したプログラムに各種タスク配置を適用した際の実行性能の比較実験を行う • タスク配置 • 順配置 • ホップ数最小タスク配置(全解探索) • 提案手法によるタスク配置(全解探索) • プログラム • recursive doubling (プログラムカーネル部分の通信ステップ数8) • CG法 (プログラムカーネル部分の通信ステップ数6) • NAS Parallel Benchmarks • umt2000 (プログラムカーネル部分の通信ステップ数16) • ASCI Purple Benchmarks スイッチA スイッチB スイッチC スイッチD スイッチE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
実験環境 • 計算ノード • CPU : Intel Xeon 3.0GHz • メモリ: 7GB • ノード数 : 16 • コンパイラ : gcc version 3.2.3 • MPIライブラリ : mpich-1.2.7p1 • 相互結合網 :ギガビットイーサーネット による2段のツリー
カーネル部分の通信パターンを抽出したプログラムを用いた実験結果(1/3)カーネル部分の通信パターンを抽出したプログラムを用いた実験結果(1/3) • ホップ数最小のタスク配置に対して最大で68%の性能向上 • メッセージサイズが同期関数のオーバーヘッドの影響を受けない程度に大きいときに提案手法が有効
カーネル部分の通信パターンを抽出したプログラムを用いた実験結果(2/3)カーネル部分の通信パターンを抽出したプログラムを用いた実験結果(2/3)
カーネル部分の通信パターンを抽出したプログラムを用いた実験結果(3/3)カーネル部分の通信パターンを抽出したプログラムを用いた実験結果(3/3)
タスク配置求解アルゴリズム(1/2) タスク配置問題 Hopfield Neural Networkとしてモデル化 エネルギー関数を生成 エネルギー関数: E = x1 * x3 * x7 + x5 * x1 * x4 + ... (エネルギー関数) Xn はHopfield Neural Networkの第nニューロン Eを最小とするタスク配置は通信時間を最小となる
タスク配置求解アルゴリズム(2/2) E • タスク配置求解アルゴリズムを並列に実行する • 各プロセスは可能解となる初期タスク配置をランダムに取り、そのタスク配置から貪欲アルゴリズムにより良いタスク配置を探索する • プロセスが局所解に陥った場合 • 局所解に至っていないプロセスが探索したタスク配置の中で最もEnergyの低いタスク配置から探索を再開する • 局所解に至ったプロセスは至っていないプロセスが探索していないタスク配置を探索する solutions
まとめと今後の課題 • まとめ • 通信パターンを抽出したプログラムを用いた実験においてホップ数最小タスク配置に対して最大68 %の性能向上 • タスク配置求解アルゴリズムについて述べた • 今後の課題 • アプリケーションにおける評価 • タスク配置求解アルゴリズムの実装 • 同期関数によるオーバーヘッドの低減 • 他のトポロジに対する適用 • Fat-Treeなど
ツールフロー Binary MPIプログラムの実行 MPI プログラム コンパイラ コンパイラ MPI プログラム 入力 Binary 通信の依存関係 MPIプログラムコードの変更 プロファイラ タスクマッピングテーブル 通信時刻 MSGサイズ 通信パターンwith CCS Concurrent Communication Set generator タスク配置最適化