SERCフォーラムserc-j.jp/公開資料.pdfSERCフォーラム ソフトウェア保守技術者の技術力評価を考える 主催 ソフトウェア・メインテナンス研究会(SERC)-----
大規模システム評価環境PSI-SIMcpc.ait.kyushu-u.ac.jp/~koji.inoue/paper/2008/... · CPU...
Transcript of 大規模システム評価環境PSI-SIMcpc.ait.kyushu-u.ac.jp/~koji.inoue/paper/2008/... · CPU...
大規模システム評価環境PSI-SIM数千個のマルチコア・プロセッサを搭載したペタス
ケールコンピュータの性能予測
○井上こうじ1) 薄田竜太郎2) 安藤壽茂3) 石附茂3)
小松秀実3) 稲富雄一1) 本田宏明1) 山村周史3)
柴村英智4) 于雲青1) 青柳睦1) 木村康則3)村上和彰1)
1) 九州大学 2) IST 3) 富士通株式会社 4) ISIT
お詫びとお断り
• 「アーキテクチャ」の話ではありません!• 「集積回路」の話ではありません!• 文部科学省「次世代IT基盤構築のための研
究開発:将来のスーパーコンピューティングのための要素技術の研究開発」に関する成果報告です!
与えられたミッションとは?「テラフロップスマシン」で「ペタフロップスマシン」
の性能を予測せよ!
How are you, Mr. Tera?
I am fine!How about you, Mr. Peta?
性能予測対象マシン
ターゲットマシン性能予測実施マシン
ホストマシン
ペタスケールを「体感」する!?
0.1Flops
10Flops
1KFlops
100KFlops
10MFlops
1GFlops
100GFlops
10TFlops
1PFlops
小学4年:0.8ops(正解率100%)
小学2年:0.4ops(正解率100%)
九大准教授1.5ops井上こうじ×66億
ペタフロップス・スパコン(実効)
九大PCクラスタ(ピーク)(Xeon 3GHz×32)
九大スパコン(ピーク)(Itanium2 1.6GHz×1K)
Xeon@3GHzが160万台
発表内容• はじめに(「ペタスケール」を体感する!)• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・ターゲット」の性能を予測する!
• まとめと今後の展開
発表内容• はじめに(「ペタスケール」を体感する!)• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・ターゲット」の性能を予測する!
• まとめと今後の展開
「ホスト/ターゲット間の性能差」による3つの限界
RealMachine
InterconnectSimulator
プログラム実行限界• ホスト1ノードでターゲット100~1,000ノード分の実行
• 特にメモリ不足が深刻に!
ログ採取限界• HPL実行@4Kノード・ターゲットでも1テラ・バイト
• ノード数や問題サイズ増大と共により深刻に!
シミュレーション限界• 全対全通信@4Kノード・ターゲットでも9時間!
• ノード数増加や問題サイズ増大と共により深刻に!
ペタスケール並列プログラム
通信ログ
性能レポート
発表内容• はじめに(「ペタスケール」を体感する!)• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・ターゲット」の性能を予測する!
• まとめと今後の展開
PSI-SIMの性能予測フロー~「実行結果」は保証しない!~
スケルトンコード
通信性能情報
通信遅延情報の事前採取
• インターコネクトシミュレーション
• 実機での測定• 仕様から見積り• など
最終システム性能レポート
超並列化オリジナルコード
演算実行時間情報の事前採取の事前採取• プロセッサ
シミュレーション• 実機での測定• 仕様から見積り• など
演算性能情報
Real Machine(BSIM)
ターゲット
スケルトン・コードの導入~性能評価専用プログラムコード~
• ポイント1:演算部分を実行時間に置換え• ポイント2:実行を模擬する通信機能• ポイント3:プログラム作成者による使用メモリ容量の削減
…….MPI_Send(…);
for (i=0; i<1000; i++)s += a[i]
MPI_Recv(…)…….
…….LMPI_Send(…);/* コメント
for (i=0; i<1000; i++)s += a[i]
*/BSIM_Add_time(203e-9)LMPI_Recv(…)…….
オリジナルコード スケルトンコード
仮想超並列実行を高速化する!~プログラム抽象化と疑似実行モードのサポート~
11203e-9・・・103.264767865 MPI_Send end103.264768068 MPI_Recv start
通信プロファイル
• プロセス毎に時刻を管理• BSIM_Add_Time関数により時刻
を更新• 演算省略による実行時間削減
• ペイロードを転送しない仮想通信機能による実通信時間削減
・・・・・MPI_Send(…);/* コメント
for (i=0; i<1000; i++)s += a[i];
*/BSIM_Add_time(203e-9);MPI_Recv(…);・・・・・
スケルトンコード
BSIM
・・・・・MPIイベント(Send)時刻の更新(203e-9)MPIイベント(Recv)・・・・・
実行の様子
どの程度,高速かつ高精度なのか?ERI (Electron Repulsion Integral)の場合
実行所要時間(sec) オリジナル
スケルトン アプリ実行時間(sec)
オリジナル
ゼロ通信レイテンシを仮定
FMO-ERI(スケルトンコード)
– 対象分子 (Gly)15、基底関数6-31G* (108原子、1009関数)
– BSIM_Add_timeに加える時間は実機測定結果に基づきモデル化
24GF/sホスト(4ノード)で386GF/s(64ノード)ターゲットの性能予測
→×16
スケルトンでの予測
通信プロファイルは正しいのか?ERI (Electron Repulsion Integral)の場合
ゼロ通信レイテンシを仮定64ノードを使用した実際の実行
4ノードを使用した擬似実行
PSI-SIMのアプローチ~「実行結果」は保証しない!~
Real Machine(BSIM)
スケルトンコード
RealMachine
InterconnectSimulator
ペタスケール並列プログラム
通信ログ
性能レポート
ペタスケール並列プログラム
性能レポート
演算実行時間に関する情報
Real Machineor
CPU Simulator
通信遅延時間に関する情報
Real Machineor
Net. Simulator
性能評価専用コードの導入
• 実行の振舞いを維持しつつ使用メモリ容量を削減
プログラム抽象化の導入
• 演算コード部分を「実行時間」で置換え
仮想超並列実行環境の構築• スケルトンコードを実機で実行• 通信ログが不要に!• 大規模ネットワークSim.が不要に!• 高速実行が可能に!
発表内容• はじめに(「ペタスケール」を体感する!)• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・ターゲット」の性能を予測する!
• まとめと今後の展開
50~200GFlopsマシンで6.5TFlopsマシンの性能を予測する!
6.5TFlopsターゲットマシン(PRIMEQUEST1,024コア)
プロセッサ インテルItanium2,動作周波数1.6GHz,デュアルコア
計算ノード数 16(32プロセッサ/ノード,128GBメモリ/ノード),全コア数は1,024
インターコネクト 計算ノード内:クロスバ,計算ノード間:InfiniBand
200GFlopsホストマシン(正確には192GFlopsマシン)
プロセッサ インテルXeon, 動作周波数3GHz, シングルコア
計算ノード数 16(2プロセッサ/ノード,7GBメモリ/ノード)
インターコネクト InfiniBand,Gigabit Ethernet
50GFlopsホストマシン(正確には51.2GFlopsマシン)
プロセッサ インテルXeon , 動作周波数1.6GHz, クアッドコア
計算ノード数 2(2プロセッサ/ノード,10GBメモリ/ノード)
インターコネクト Gigabit Ethernet
性能予測フロー
• アプリケーション・プログラム
–HPL–PHASE(固体第一原理計算)
–Open-FMO(タンパク質第一原理計算)
–FMO-ERI(二電子積分計算)
BSIM(on Real Machine)
スケルトンコード
並列プログラム
性能レポート
演算実行時間に関する情報
RealMachine
通信遅延時間に関する情報
RealMachine
・プログラムの超並列化・QP1Kにて実行→実行時間測定
・スケルトンコード作成・通信遅延情報作成・BSIMによる実行→性能予測
比較
超並列化スケルトン・コードの開発~FMO-ERIの場合~
スケルトンコード作成
計算カーネルの抽象化(実行時間での置換え)
超並列化計算カーネル
抽出
FMO-ERIオリジナルコード
実行時間見積り
使用メモリ/通信の削減
超並列化スケルトンコード
オリジナルコードの計算カーネル
スケルトンコード
スケルトン化
for (ijcs=0; ijcs<NCS pair; ijcs++) {for (klcs=0; klcs<=ijcs; klcs++) {
for (ijps=0; ijps<Nsurvive, ijcs; ijps++) {for (klps=0; klps<Nsurvive, klcs; klps++) {
calculate_primitive_ERI(ijps, klps);calculate_contracted_ERI(ijcs, klcs);
}}add_to_Fock_matrix(ijcs, klcs);
}}
for (ijcs=0; ijcs<NCS pair; ijcs++) {for (klcs=0; klcs<=ijcs; klcs++) {
/* for (ijps=0; ijps<Nsurvive, ij; ijps++) {for (klps=0; klps<Nsurvive, kl; klps++) {
calculate_primitive_ERI(ijps, klps);calculate_contracted_ERI(ijcs, klcs);
}}add_to_Fock_matrix(ijcs, klcs);
*/BSIM_Add_time(T0×Nsurvive, ijcs×Nsurvive, klcs);
}}
実行時間見積り
原始積分1組あたりの計算時間(T0)
通信レイテンシ情報の測定~MPI-Allreduceの場合~
プロセス数
通信遅延時間の実測値
• 実機にてプロセス数とデータサイズを変更した際の遅延時間を測定
• これら以外の場合については実測値より近似
どの程度正しく予測できたのか?(Open-FMO / FMO-ERI)
Open-FMO
•6.5TF/sを50GF/sホストで予測•実行時間予測誤差(絶対値)
• 全実行時間:4%• 演算部分:2%
Exe
. Tim
e (s
ec)
FMO-ERI
実測(演算)
予測(演算)
•6.5TF/sを200GF/sホストで予測•実行時間予測誤差(絶対値)
• 実機全実行時間と予測演算時間を比較:35~140%
Exe
. Tim
e (s
ec)
492 984#of Fragments
実測(通信)
予測(通信)
実測(演算+通信)
対象分子:Lysozyme(リゾチーム)基底関数 STO-3G (1961原子、6005関数)
対象分子:Aquaporin(アクアポリン)基底関数 STO-3G
予測(演算)
予測(通信)
どの程度正しく予測できたのか?(HPL / PHASE)
160,000 240,000 320,000Problem Size
Exe
. Tim
e (s
ec) HPL
予測(演算)
実測(通信)
実測(演算)
•6.5TF/sを200GF/sホストで予測•実行時間予測誤差(問題サイズ320K)
• 全体:<10%• 演算部分:<1%
5.02TFlops
PHASE
4K 8K 16Kバンド数
Exe
. Tim
e (s
ec)
実測(通信)
実測(演算)
•6.5TF/sを200GF/sホストで予測•実行時間予測誤差(バンド数16K)
• 全体:約10%• 演算部分:約1%
2.51TFlops
予測(通信)
予測(演算)
予測(通信)
性能予測にどの程度の時間が必要なのか?
ERI Open-FMO(984)
HPL(320K) PHASE(16K)
ホストマシン性能 50GFlops 200GFlops 200GFlops 200GFlops性能予測所要時間(秒)
505 12,120 2,520 2,400
6.5TFlopsターゲッ
トマシンでのオリジナルコード実行時間との比
0.55 0.34 0.58 7.14
発表内容• はじめに(「ペタスケール」を体感する!)• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・ターゲット」の性能を予測する!
• まとめと今後の展開
1.6TFlopsマシンで2.1PFlopsマシンの性能を予測する!
2.1PFlopsターゲット
– コア:スカラコア+16PE SIMD演算機構 (2GHz,64GFlops)
– 8コア/計算ノード (512GFlops/計算ノード)
– 4,096ノードを3Dトーラスネットワークで接続
• 合計 32,768スカラコア
• ピーク浮動小数点演算性能 2.1PFlops
1.6TFlopsホスト
– インテルXeon3.06GHz– 128ノード(2プロセッサ/ノード)
BSIM(on Real Machine)
スケルトンコード
並列プログラム
性能レポート
演算実行時間に関する情報
CPU Simulation
通信遅延時間に関する情報
Estimation(From Spec.)
超高性能プロセッサPSI-SIMD• 高Flops,低消費電力アーキテクチャの追求
• スカラSPARCコア+最大32SIMD演算ユニット– SPARCにSIMD命令を追加
– メモリ階層:SIMD FP演算器-レジスタ-バッファメモリ(SBM)-メインメモリ
9mm
10mmPEPEPEPEPEPEPEPE
PEPEPEPEPEPEPEPE
ScalarCore
4MBL2$
45nmプロセスによる1コアのイメージ
L1-DキャッシュL1-Iキャッシュ
L2キャッシュ
SB
M T
ransfe
r Unit
MAC
インターコネクトインタフェース
RSS
RSA
RSE
RSF
デコ
ーダ
FPユニット
INTユニット
RSBR
メモリアドレス処理(TLB)
GPR/GUB
FPR/FUB
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
プロセッサコア 0プロセッサコア 1
プロセッサコア Ncore
SIMD処理部
スカラ処理部 CSE
SBMSIMD-PE 0SFPR/SFUB
SBMSFPR/SFUB SIMD-PE 1
SIMD-PE NPE
SIMD-PE 3
Odd SFPU
Even SFPU
マルチコア構成のイメージ[山村SWoPP’07]
超並列化スケルトン・コードの開発~HPLの場合(1/3)~
• 高負荷計算カーネル検出– updateTTルーチン ∝ N3
– 全実行時間の90%以上
– 特に,dgemm/dtrsm関数による行列計算
• 高負荷計算カーネル抽出→dgemm/dtrsm– 実行処理フローを変えずにカーネル部以外
を除去
– 演算用配列の削除
– 転送の送受信先・メッセージサイズを再現
• PSI-SIMDコア向けdgemm/dtrsmの開発– SIMD向け計算アルゴリズム
– PSIM/WCVによる性能解析とチューニング
スケルトンコード作成
計算カーネルの抽象化(実行時間での置換え)
超並列化計算カーネル
抽出
HPLオリジナルコード
実行時間見積り
使用メモリ/通信の削減
超並列化スケルトンコード
PSIM
超並列化スケルトン・コードの開発~HPLの場合(2/3)~
• PSIM(プロセッサシミュレータ)による実行サイクル数計測
• 8コアのメモリアクセス競合効果を机上評価して1コア実行サイクル数を補正
• 小規模実行や部分実行により得た詳細データに基づき性能式を導出
スカラコア
SIMD
zgemm
dgemmスケルトンコード作成
計算カーネルの抽象化(実行時間での置換え)
超並列化計算カーネル
抽出
HPLオリジナルコード
実行時間見積り
使用メモリ/通信の削減
超並列化スケルトンコード
PSIM
if( curr != 0 ) {HPL_dgemm( HplColumnMajor, HplNoTrans, HplTrans,
mp, nn, jb, -HPL _rone, HPL_rone, L2ptr, ldl2, Uptr, LDU, HPL_rone,Mptr( Aptr, jb, 0, lda ), lda );
HPL_dlatcpy( jb, nn, Uptr, LDU, Aptr, lda );} else {
オリジナルコードの計算カーネル
スケルトンコード
if( curr != 0 ) {mx=((mp-1)/32+1)*4;nx=((nn-1)/4+1)*4;jx=((jb-1)/2+1)*2;estimate=3.14e-07+mx*(2.0e-09*jb +4.951e-09*nn+nx*(0.977e-12*((jb-1)/32+1)*32+4.1760e-11*jx);
BSIM_Add_time( estimate );HPL_dlatcpy( jb, nn, Uptr, LDU, Aptr, lda );
} else {
mx=((mp-1)/32+1)*4nx=((nn-1)/4+1)*4jx=((jb-1)/2+1)*2estimate=3.14e-07+mx*(2.0e-09*jb+4.951e-09*nn+nx*(0.977e-12*((jb-1)/32+1)*32+4.1760e-11*jx)
実行時間見積り式•使用配列サイズの縮小/削除
•仮想的な通信の実現
超並列化スケルトン・コードの開発~HPLの場合(1/3)~
スケルトンコード作成
計算カーネルの抽象化(実行時間での置換え)
超並列化計算カーネル
抽出
HPLオリジナルコード
実行時間見積り
使用メモリ/通信の削減
超並列化スケルトンコード
PSIM
1.6TFlopsマシンで2.1PFlopsマシンの性能を予測する!
• HPL– プロセス数:4,096 (P=Q=64) – 問題サイズ:131万元– ブロックサイズ:512
• PHASE– プロセス数:4,096– 問題サイズ:65,536 (バンド数)– ブロックサイズ:512
通信遅延無し 通信遅延有り(3D-Torus)
実行時間 性能BSIM
所要時間実行時間 性能
BSIM所要時間
HPL 1,397秒 1.07PFlops 約6時間 1,478秒 1.01PFlops 約6時間
PHASE 165秒 0.6PFlops 約4.5時間 --------- --------- ---------
3桁小規模なホスト(1.6TF)でペタ
スケール・ターゲット性能(2.1PF)
を予測
HPL
3D-Torus: 1.02PFlops
Clos: 1.04PFlops
発表内容• はじめに(「ペタスケール」を体感する!)• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・ターゲット」の性能を予測する!
• まとめと今後の展開
今後の展開
• スパコン向けSW開発環境の構築!!– 次世代スパコンの特徴とは?
• 世界に1つだけの「コンピュータ・システム」
• 無料では使えない!– ソフトウェア開発者にとっては?
• 事前にプログラム実行時間を把握したい
• 事前に十分なチューニングを行いたい
– 性能評価環境PSI-SIMをベースとしたソフトウェア開発環境の構築
• メニーコア向け性能評価環境への発展!!