Document

大規模システム評価環境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?
性能予測対象マシン
ターゲットマシン
ペタスケールを「体感」する!?
ペタフロップス・スパコン
(実効)
1PFlops
10TFlops
100GFlops
1GFlops
10MFlops
100KFlops
1KFlops
10Flops
0.1Flops
Xeon@3GHzが160万台
九大PCクラスタ(ピーク)
(Xeon 3GHz×32)
小学4年:0.8ops
(正解率100%)
小学2年:0.4ops
(正解率100%)
九大スパコン(ピーク)
(Itanium2 1.6GHz×1K)
井上こうじ×66億
九大准教授
1.5ops
発表内容
• はじめに(「ペタスケール」を体感する!)
• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM
– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・
ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・
ターゲット」の性能を予測する!
• まとめと今後の展開
発表内容
• はじめに(「ペタスケール」を体感する!)
• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM
– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・
ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・
ターゲット」の性能を予測する!
• まとめと今後の展開
「ホスト/ターゲット間の性能差」に
プログラム実行限界
よる3つの限界
• ホスト1ノードでターゲット100
ペタスケール
並列プログラム
Real
Machine
通信
ログ
Interconnect
Simulator
性能
レポート
~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(…)
…….
仮想超並列実行を高速化する!
~プログラム抽象化と疑似実行モードのサポート~
・・・・・
スケルトンコード MPI_Send(…);
実行の様子
・・・・・
MPIイベント(Send)
時刻の更新(203e-9)
MPIイベント(Recv)
・・・・・
/* コメント
for (i=0; i<1000; i++)
s += a[i];
*/
BSIM_Add_time(203e-9);
MPI_Recv(…);
・・・・・
BSIM
• プロセス毎に時刻を管理
• BSIM_Add_Time関数により時刻
を更新
通信プロファイル
• 演算省略による実行時間削減
・・・
• ペイロードを転送しない仮想通信機
103.264767865
MPI_Send end
11
203e-9
能による実通信時間削減
103.264768068 MPI_Recv start
どの程度,高速かつ高精度なのか?
ERI (Electron Repulsion Integral)の場合
ゼロ通信レイテンシを仮定
FMO-ERI(スケルトンコード)
– 対象分子 (Gly)15、基底関数6-31G* (108原子、1009関数)
– BSIM_Add_timeに加える時間は実機測定結果に基づきモデル化
オリジナル
スケルトン
アプリ実行時間(sec)
実行所要時間(sec)
24GF/sホスト(4ノード)で386GF/s(64ノード)ターゲットの性能予測
→×16
オリジナル スケルトン
での予測
通信プロファイルは正しいのか?
ERI (Electron Repulsion Integral)の場合
64ノードを使用した実際の実行
ゼロ通信レイテンシを仮定
4ノードを使用した擬似実行
PSI-SIMのアプローチ
~「実行結果」は保証しない!~
性能評価専用コードの導入
ペタスケール
• 実行の振舞いを維持しつ
並列プログラム
つ使用メモリ容量を削減
プログラム抽象化の導入
Real
• 演算コード部分を「実行
Machine
時間」で置換え
ペタスケール
並列プログラム
通信遅延時間
に関する情報
演算実行時間
に関する情報
Real Machine
or
Net. Simulator
Real Machine
or
CPU Simulator
スケルトン
コード
通信
ログ
仮想超並列実行環境の構築
• スケルトンコードを実機で実行
Interconnect
Simulator
• 通信ログが不要に!
• 大規模ネットワークSim.が不要に!
性能
• 高速実行が可能に!
レポート
Real Machine
(BSIM)
性能
レポート
発表内容
• はじめに(「ペタスケール」を体感する!)
• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境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
性能予測フロー
・プログラムの超並列化
・QP1Kにて実行
→実行時間測定
比較
・スケルトンコード作成
・通信遅延情報作成
・BSIMによる実行
→性能予測
並列プログラム
通信遅延時間
に関する情報
Real
Machine
• アプリケーション・プログラム
– HPL
– PHASE(固体第一原理計算)
– Open-FMO(タンパク質第一原理計算)
– FMO-ERI(二電子積分計算)
演算実行時間
に関する情報
スケルトン
コード
Real
Machine
BSIM
(on Real
Machine)
性能
レポート
超並列化スケルトン・コードの開発
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);
}
}
実行時間
見積り
原始積分1組あたりの計算時間(T0)
スケルトンコード
計算カーネルの抽象化
(実行時間での置換え)
使用メモリ/通信の削減
スケルトンコード作成
超並列化
スケルトンコード
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);
}
}
スケルトン化
通信レイテンシ情報の測定
~MPI-Allreduceの場合~
通信遅延時間の実測値
プロセス数
• 実機にてプロセス数とデータサイズを変更した際の遅延時間
を測定
• これら以外の場合については実測値より近似
Exe. Time (sec)
Exe. Time (sec)
どの程度正しく予測できたのか?
(Open-FMO / FMO-ERI)
予測
(通信)
実測
(通信)
FMO-ERI
•6.5TF/sを50GF/sホストで予測
•実行時間予測誤差(絶対値)
予測
• 全実行時間:4%
(演算) • 演算部分:2%
実測
(演算)
対象分子:Lysozyme(リゾチーム)
基底関数 STO-3G (1961原子、6005関数)
実測(演算+通信)
予測
(通信)
Open-FMO
•6.5TF/sを200GF/sホストで予測
•実行時間予測誤差(絶対値)
予測 • 実機全実行時間と予測演算時
(演算)
間を比較:35~140%
対象分子:Aquaporin(アクアポリン)
基底関数 STO-3G
492
984
#of Fragments
Exe. Time (sec)
どの程度正しく予測できたのか?
(HPL / PHASE)
予測
(通信)
5.02TFlops
•6.5TF/sを200GF/sホストで予測
•実行時間予測誤差(問題サイズ320K)
予測 • 全体:<10%
(演算)
• 演算部分:<1%
実測(通信)
実測(演算)
160,000
HPL
240,000
320,000
Problem Size
Exe. Time (sec)
PHASE
2.51TFlops
予測 •6.5TF/sを200GF/sホストで予測
(通信)•実行時間予測誤差(バンド数16K)
実測(通信)
予測
(演算)
実測(演算)
4K
8K
バンド数
16K
• 全体:約10%
• 演算部分:約1%
性能予測にどの程度の時間が必
要なのか?
ERI
ホストマシン性能
性能予測所要時
間(秒)
6.5TFlopsターゲッ
トマシンでのオリジ
ナルコード実行時
間との比
OpenHPL(320K) PHASE(16K)
FMO(984)
50GFlops 200GFlops 200GFlops 200GFlops
505
12,120
2,520
2,400
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トーラスネット
ワークで接続
通信遅延時間
に関する情報
Estimation
(From Spec.)
演算実行時間
に関する情報
スケルトン
コード
• 合計 32,768スカラコア
• ピーク浮動小数点演算
性能 2.1PFlops
BSIM
1.6TFlopsホスト
(on Real
Machine)
– インテルXeon3.06GHz
– 128ノード(2プロセッサ/ノード)
性能
レポート
CPU
Simulation
超高性能プロセッサPSI-SIMD
•
•
高Flops,低消費電力アーキテクチャの追求
スカラSPARCコア+最大32SIMD演算ユニット
– SPARCにSIMD命令を追加
– メモリ階層:SIMD FP演算器-レジスタ-バッファメモリ(SBM)-メインメモリ
プロセッサコア Ncore
プロセッサコア 1
プロセッサコア 0
SIMD処理部
SIMD-PE 3
SBM
Even SFPU
SFPR/SFUB SIMD-PE 1
RSS
SFPR/SFUB SIMD-PE 0
Odd SFPU
PE PE
PE PE
PE PE
PE PE
4MB PE PE
PE PE
L2$
PE PE
PE PE
45nmプロセスによる
1コアのイメージ
9mm
Scalar
Core
デコーダ
10mm
スカラ
RSA
処理部
SBM
SBM Transfer Unit
SIMD-PE N PE
インターコネクト
インタフェース
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
MAC
メモリアドレス処理(TLB)
CSE
RSE
INTユニット
GPR/GUB
RSF
FPユニット
FPR/FUB
RSBR
L1-Iキャッシュ
L1-Dキャッシュ
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
FB-DIMM
L2キャッシュ
[山村SWoPP’07]
マルチコア構成のイメージ
超並列化スケルトン・コードの開発
~HPLの場合(1/3)~
HPL
オリジナルコード
超並列化
計算カーネル
抽出
実行時間
見積り PSIM
計算カーネルの抽象化
(実行時間での置換え)
使用メモリ/通信の削減
スケルトンコード作成
超並列化
スケルトンコード
• 高負荷計算カーネル検出
– updateTTルーチン ∝ N3
– 全実行時間の90%以上
– 特に,dgemm/dtrsm関数による行列計算
• 高負荷計算カーネル抽出
→dgemm/dtrsm
– 実行処理フローを変えずにカーネル部以外
を除去
– 演算用配列の削除
– 転送の送受信先・メッセージサイズを再現
• PSI-SIMDコア向けdgemm/dtrsmの開発
– SIMD向け計算アルゴリズム
– PSIM/WCVによる性能解析とチューニング
超並列化スケルトン・コードの開発
~HPLの場合(2/3)~
HPL
オリジナルコード
超並列化
計算カーネル
抽出
実行時間
見積り PSIM
• PSIM(プロセッサシミュレータ)による
実行サイクル数計測
• 8コアのメモリアクセス競合効果を机上
評価して1コア実行サイクル数を補正
• 小規模実行や部分実行により得た詳
細データに基づき性能式を導出
スカラコア
計算カーネルの抽象化
(実行時間での置換え)
SIMD
使用メモリ/通信の削減
スケルトンコード作成
超並列化
スケルトンコード
zgemm
dgemm
超並列化スケルトン・コードの開発
~HPLの場合(1/3)~
オリジナルコードの計算カーネル
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)
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 {
1.6TFlopsマシンで
2.1PFlopsマシンの性能を予測する!
通信遅延無し
通信遅延有り(3D-Torus)
実行時間
性能
BSIM
所要時間
実行時間
性能
BSIM
所要時間
1,397秒
1.07PFlops
約6時間
1,478秒
1.01PFlops
約6時間
165秒
0.6PFlops
約4.5時間
---------
---------
---------
HPL
PHASE
• HPL
– プロセス数:4,096 (P=Q=64)
– 問題サイズ:131万元
– ブロックサイズ:512
• PHASE
– プロセス数:4,096
– 問題サイズ:65,536 (バンド数)
– ブロックサイズ:512
3桁小規模なホスト(1.6TF)でペタ
スケール・ターゲット性能(2.1PF)
を予測
HPL
3D-Torus: 1.02PFlops
Clos: 1.04PFlops
発表内容
• はじめに(「ペタスケール」を体感する!)
• 従来のスパコン性能予測における限界
• 大規模システム性能評価環境PSI-SIM
– プログラムコードの抽象化(スケルトンコード)
– 仮想超並列実行環境(BSIM)
• 「ギガ・フロップス・ホスト」で「テラ・フロップス・
ターゲット」の性能を予測する!
• 「テラ・フロップス・ホスト」で「ペタ・フロップス・
ターゲット」の性能を予測する!
• まとめと今後の展開
今後の展開
• スパコン向けSW開発環境の構築!!
– 次世代スパコンの特徴とは?
• 世界に1つだけの「コンピュータ・システム」
• 無料では使えない!
– ソフトウェア開発者にとっては?
• 事前にプログラム実行時間を把握したい
• 事前に十分なチューニングを行いたい
– 性能評価環境PSI-SIMをベースとしたソフトウェ
ア開発環境の構築
• メニーコア向け性能評価環境への発展!!
世界No1へのチャレンジ!!
• 如何にして,手元で「世界最高性能のスパコン
を模擬するか?」
– PSI-SIMを用いた仮想環境の構築
• 如何にして,手元での「ソフトウェア・チューニン
グ」を可能にするか?」
– PSI-SIMを用いた実行状況モニタリング
– 俯瞰ビューアを用いたボトルネック/改善効果解析
• 「ペタ」から「エクサ」へ
– 井上こうじが666,666,666,666,666,666人くらい(?)
お詫びとお断り
• 「アーキテクチャ」の話ではありません!
• 「集積回路」の話ではありません!
• 本日の発表は,現在進行中の「次世代スー
パコンピュータ開発@理研」とは全く関係があ
りません!
• 文部科学省「次世代IT基盤構築のための研
究開発:将来のスーパーコンピューティング
のための要素技術の研究開発」に関する成
果報告です!