PSIシンポジウム 2005-12-19

第5回 PSI プロジェクト研究者全体会議
サブテーマ 3-2
Base SIMulator-Parser 開発
ならびに
NAS Parallel Benchmark FT の
性能評価実験
2007/7/13
九州大学
情報基盤研究開発センター
本田宏明
1
内容
•
•
•
•
PSI-SIM と BSIM-Parser
スケルトン化手法
BSIM-Parser の開発
性能評価実験 (NAS Parallel Benchmark3.1 FT)
– 実実行(オリジナルコード実行)
– 擬似実行(スケルトンコード実行)
• 手動生成スケルトン
• 自動生成スケルトン
• まとめ
2
PSI-SIMのワークフロー
評価アプリ
ケーション
(実機実行:可能)
1. BSIM-Parser
評価アプリ
ケーション
(実機実行:不可能)
プログラムコード抽象化
(BSIM-Parser)
プロセッサ情報
データベース
評価アプリケーションのプログラム
コード抽象化(通信プロファイルの
高速生成を目的)
2. BSIM-Logger
スケルトン
コード
通信プロファイル生成
(BSIM-Logger)
予測実行時間
ネットワーク性能
通信プロファイルの生成(中規模シ
ステムによる大規模システムの通
信プロファイル生成を目的)
評価イン
ターコネク
ト構成
通信プロファイル
(ゼロ通信遅延)
モデル化
インターコネクト
シミュレーション
(NSIM)
インターコネクト
コンフィグレーション
(NDLファイル)
通信プロファイル
(通信遅延有)
可視化/解析
(ANA)
通信トラフィックの可視化
プログラム最適化の指針提供
3. NSIM
ネットワークシミュレーション(ゼロ
通信遅延プロファイルへの実遅延
時間付加が目的)
4. ANA
アプリケーションの可視化/解析
(アプリケーションの評価や開発支
援が目的)
5. Open-FMO
次世代ペタスケールソフトウェアの
開発と評価
3
BSIM-Parser の開発
入力
次世代スパコンを対象とした
プログラムソース
•
BSIM-Parser
•
出力
•
スケルトンコード
次世代スパコンについて,ソフトウエア実行の
性能評価を行う際に,そのままシミュレーショ
ンを行うのでは,計算時間が多くなりすぎる。
現在存在しない計算ノードアーキテクチャに対
しても性能評価を行えないか?
プログラムの実行時間を削減 しつつ
演算時間見積り を行い,通信ログを採取可能
とするため,スケルトン化手法 による
ソースの変換する
Log Generation
(BSIM-Logger)
on Real Machines
PSI-BSIM
(Base SIMulator)
– プログラムコードの
演算部分実行時間の見積り
– 演算部分のコメント化,
実行時間のソースへの埋め込み
以上の役割を持ち,自動スケルトン化を可能とする
4
BSIM-Parser を開発する事を目的とする
スケルトン化
オリジナルコード (コンパイル実行可能)
loop or if
演算ブロック ;
end
スケルトンコード (コンパイル実行可能)
loop or if
演算ブロックの
コード置き換え
BSIM_Add_time (計算時間) ;
end
BSIM-Logger へ
• 演算ブロックを一つの関数に置き換えることで
実行時間を削減
• BSIM_add_time はBSIM-Logger にて処理
5
スケルトン化のレベル
• レベル1:
– ストレート・ライン・コード の抽象化.IF文やLOOP文よる分岐,関数呼
出し,ならびに,MPI通信は含まない.
• レベル2:
– IF文を含む連続コード部分 の抽象化.ただし,LOOP文による後ろ方
向への分岐や関数呼出し,ならびに,MPI通信は含まない.
• レベル3:
– LOOP文を含む連続したコード部分 の抽象化.ただし,関数呼出し,な
らびに,MPI通信は含まない.
• レベル4:
– 関数呼出しを含む連続コード部分 の抽象化.ただし,MPI通信は含ま
ない.
• レベル5:
– MPI通信を含む連続コード部分 の抽象化.
本研究では,ストレート演算ブロック:レベル1 での
スケルトン化を行った.
6
BSIM-Parser の全体構成
• プログラムの構文解析ならび
に中間言語表現への変換は
COINS コンパイラを利用
• 中間言語表現で
変数依存解析ツールと接続
入力
Fortran, C
オリジナル
ソース
コンパイラ
開発
coins
中間言語
表現
現状でほぼ全自動により
スケルトンコード生成
変数依存
解析
LIR2C
開発
タグつき
C ソース
(リバース生成)
演算時間
見積り,
コード変換
出力
スケルトン
コード
7
オリジナルコード
実際の変数依存解析例
do k = 1, d(3)
do j = 1, d(2)
do i = 1, d(1)
u0(i,j,k) = u0(i,j,k)*(twiddle(i,j,k))
u1(i,j,k) = u0(i,j,k)
end do
NAS Parallel FT: evolve 関数より
end do
end do
COINS 中間表現(S 式)
スケルトン化対象
演算ブロック
コンパイラによる最適化手法の
一つである,静的単一代入の方法を利用
…
(JUMPC
(TSTLES I32 (MEM I32 (FRAME I32 i.1) &ID (i.1 13))
(MEM I32 (ADD I32 (MEM I32 (FRAME I32 d.7) &ID (d.7 14)) (MUL I32 (SUB I32 (INTCONST I32 1) (INTCONS
(LABEL I32 _lab6) (LABEL I32 _lab5))
(DEFLABEL _lab6) (INFO LINE 12)
スケルトン化対象
(SET
自動的に置き換え
中間表現
(F64
(MEM F64
(ADD I32
(ADD I32 (ADD I32 (MEM I32 (FRAME I32 u0.4) &ID (u0.4 26)) (MUL I32 (SUB I32 (MEM I32 (FRAME I32 k.
(MUL I32 (SUB I32 (MEM I32 (FRAME I32 j.2) &ID (j.2 28)) (INTCONST I32 1)) (INTCONST I32 240))) 8
サポート対象
•
以下の機能についてサポート
–
入力として Fortran77 と C 言語 のプログラム
–
レベル1,スケルトン化
•
•
静的に変数依存解析可能な範囲に限定
–
整数変数のみによる条件分岐
–
浮動小数点演算や通信により取得したデータを元にする
分岐は取り扱わない
関数内解析
–
関数内のみの解析
–
レベル1解析 (LIR表現の文数を変更しない)
•
–
実行部の計算時間見積り手法:
1. IC×CPI×CCT
2. 既存コンピュータによる実計算時間測定(人手が必要)
9
性能評価実験
自動スケルトン化されたアプリケーションにより,
オリジナルプログラムの実行に対する性能見積りが
どの程度可能か?
• 対象プログラム
– NAS Parallel
Benchmark3.1 FT
• オリジナルコード実行
• スケルトンコード実行
• 測定環境
– 理研クラスター計算機
– BSIM-Logger 実装を含んだ
MPICH2-1.0.4p1
– 総ランク数 64
– 使用ノード数 4
– 自動ならびに手動による
レベル1計算ブロック抽出
–
– IC * CPI * CCT による計算時間見積り
• 全ての演算のCPI を一定とする
10
NAS Parallel Benchmark3.1 FT プログラム実行時間
自動ならびに手動スケルトン生成擬似実行と
実実行 64ランク(4x16) との比較
~ 29 秒 :擬似実行予想(自動)
~ 41 秒 :擬似実行予想(手動)
~ 45 秒 :実実行
実行時間 (sec.)
100
自動では
64%の見積り
擬似実行(自動)
CPI=1.63
10
擬似実行(手動)
CPI=1.63
1
S1
0.1
C
2
3B
C
4
実実行
S: 64*64*64
A: 256*256*128
B: 512*256*256
C: 512*512*512
0.01
• Sタイプの逐次計算においてベース実行における平均 CPI = 1.63 を算出
• 擬似実行自身の実行時間は ~18.6 秒(実実行の40.8%)
自動生成スケルトンコードによる擬似実行においても,
実実行に対し比較的良い計算実行時間の見積りを与える
11
まとめ
• 次世代スーパーコンピュータ性能評価環境 PSI-SIM
のうち,BSIM-Parser 部分について開発を行い,
BSIM-Parser ツールを用いてスケルトンコードを自動
作成し,性能評価実験を行った。
• 性能評価実験から,今回のNAS Parallel Benchmark
FT プログラムについて,自動生成したレベル1スケル
トンコードの実行時間見積りについて,実実行の結果
と比較的よく一致した。
今後の予定
• 実行時間予想の精度向上
• より抽象度の高いスケルトンコード自動生成
• レベルの高い 3D-FFT スケルトンコード作成
12