通信機構合わせた最適化をおこなう並列化ンパイラ 横田大輔† 千葉滋† ‡ 板野肯三† †筑波大学電子・情報工学系 ‡科学技術振興事業団さきがけ研究21
高速な並列コードを得たい ハードウェアの活用 ソフトウェアの解析 ハードウェアが持つ特殊な通信機能 通信を自動最適化したい RDMA(CP-PACS/Pilot-3:日立SR2201) ソフトウェアの解析 通信を自動最適化したい 通信の最適化には通信パターンの把握が必要 現在のところ静的な解析では限界がある
本研究の目的 動的な解析による通信パターンの把握 コンパイラによるRDMAの活用 インスペクタ・エグゼキュータの応用 HPFコード→RDMAを利用したSPMDコード
CP-PACS/Pilot3 2048PE(CP-PACS)/128PE(Pilot3) 分散メモリ機 特殊な通信機構(RDMA) 片側通信 送信先のメモリに直接書き込む 通信を事前にセッティングできる ブロックストライドによる送信が可能
RDMA 送信側メモリ 受信側メモリ 通信 4~65532byte 4~1020byte RDMAによる通信
インスペクタ・エグゼキュータ 通信の解析が静的にできない場合に有効 インスペクタ処理は比較的重たい 定型的なコードの挿入で並列化できる 通信パターンの解析を実行時に行う インスペクタ処理は比較的重たい 同じ通信パターンが繰り返されると有効 定型的なコードの挿入で並列化できる
インスペクタ・エグゼキュータ インスペクタ ・通信パターンの解析 エグゼキュータ 通信 ・目的データの交換 処理
本研究が提案する手法(1/2) HPF命令+実行時の情報による通信の最適化 解析の高速化 通信をブロックストライドにまとめ、通信回数を減らす INDEPENDENT命令が許す範囲で通信を移動 解析の高速化 通信パターンに影響しないコードを実行しない 追加した命令でユーザが指示可能
本研究が提案する手法(2/2) 通信の最適化 通信+コードの最適化Ⅰ 通信+コードの最適化Ⅱ(実装中) RDMAの活用 インスペクタ・エグゼキュータの応用 通信+コードの最適化Ⅰ インスペクタ部を実行した後、エグゼキュータ部を最適化コンパイル(1CPU) 通信+コードの最適化Ⅱ(実装中) インスペクタ部を実行した後、エグゼキュータ部を最適化コンパイル(多CPU)
通信の最適化(1/2) インスペクタ ・通信パターンの解析 通信の最適化 エグゼキュータ 通信 ・目的データの交換 処理
通信の最適化(2/2) 実行速度が速い 全てのプロセッサが同じパターンで通信してなければならない 実行時情報を用いて通信関連のコードを最適化 1プロセッサ分しか通信パターンを解析しない
通信+コードの最適化Ⅰ(1/2) ソースコード インスペクタ用 コード生成 通信履歴 インスペクタ実行 テーブル 1CPUの計算機 並列コード
通信+コードの最適化Ⅰ(2/2) 実行速度が速い 全てのプロセッサが同じパターンで通信してなければならない コンパイル時間の増加 実行時情報を用いて通信関連のコードをさらに最適化 全てのプロセッサが同じパターンで通信してなければならない 1プロセッサ分しか通信パターンを解析しない コンパイル時間の増加 コンパイル中にソースコードの一部分を実行
通信+コードの最適化Ⅱ(1/2) ソースコード インスペクタ用 コード生成 通信履歴 テーブル インスペクタ実行 コード生成 多CPUの 計算機 並列コード
通信+コードの最適化Ⅱ(2/2) 実行速度が速い 各プロセッサは通信パターンが異なってもコンパイル可能 コンパイル時間の増加 実行時情報を用いて通信関連のコードをさらに最適化 各プロセッサは通信パターンが異なってもコンパイル可能 全プロセッサ分の通信パターンを解析 コンパイル時間の増加 コンパイル中にソースコードの一部分を実行
実装 FreeBSD4.2 HPF(サブセット)を入力としCP-PACS/Pilot3用の並列なFortran90を出力 出力されるコードはRDMAによるブロックストライド通信を用いたSPMDコード
実験(1/2) コンパイル時間と実行時間の測定 ベンチマーク コンパイル環境はFreeBSD4.2,PentiumII300Mhz,メモリ128M 実行環境はPilot3上の4~64PE ベンチマーク pde1(GENESIS Distributed Memory Benchmarks) shallow(Shallow Water Benchmark)
実験(2/2) 他方式との比較 通信の最適化 通信+コードの最適化Ⅰ 商用並列化コンパイラ (日立製98年バージョン02-05) 素朴なインスペクタ・エグゼキュータ
結果(pde1:実行時間) 実行時間(pde1: N = 7, プロセッサ数= 64)
結果(pde1:速度向上比)
結果(pde1:通信+コードの最適化Ⅰコンパイル時間)
結果(shallow:実行時間) 実行時間 (shallow: N = 1024, プロセッサ数= 64)
結果(shallow:速度向上比)
結果(shallow:通信+コードの最適化Ⅰコンパイル時間)
結論 コンパイラによるエグゼキュータ部の最適化は効果があった コンパイル時間は容認できる 最大6%の速度改善 コンパイル時間はプロセッサ数が増加すると減少
おわりに 実行時の情報を用いた通信の最適化 今後の課題 効果的にRDMAを用いることができた エグゼキュータ部を最適化し、さらに高速化できた 通信+コードの最適化Ⅱによるコンパイラの実装