第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
© Copyright 2024 ExpyDoc