大規模システム評価環境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基盤構築のための研 究開発:将来のスーパーコンピューティング のための要素技術の研究開発」に関する成 果報告です!
© Copyright 2024 ExpyDoc