アクセラレータを用いた ヘテロ型スーパーコンピュータ上の 並列計算 ~ TSUBAME 47.38TFlopsへの道 ~ 遠藤敏夫(東工大) (松岡聡教授らとの共同研究) 東工大TSUBAMEシステム Voltaire ISR9288 Infiniband 10Gbps x ~1400 ports SunFire X4600 16 Opteron core/node x 655nodes 500GB 48disks 500GB 500GB 48disks 48disks ClearSpeed CSX600 SIMD accelerator x 360 PCI-X boards 理論ピーク性能 • Opteron: 4.8GFlops x 10480core = 50.4TFlops • ClearSpeed: 96GFlops x 360board = 34.6TFlops • 合計: 85.0TFlops 2006年6月 Top500 ランキング TSUBAMEは 38.18TFlops • 世界7位を達成 • 日本1位を達成 この時点では, Opteronのみを 利用 Top500とLinpack • Top500の主要ルール – Linpackベンチマークの速度(GFlops)を競う • 密行列連立一次方程式 – プログラムは自由 – 問題サイズは自由 • 典型的には,以下のソフトウェアを用いる – High Performance Linpack (HPL) by A.Petitet – 高速なBLAS library (GOTO BLASなど) • 問題サイズは,メモリに収まる最大とするのが有利 2006年6月ランキングでの性能測定 • High Performance Linpack (HPL) • 648ノード, 10368 CPU core • 5184プロセス x 2 core – GOTO BLASのスレッド並列化機能 を利用 • Voltaire MPI • GOTO BLAS 38.18 TFlops 実行時間: 11.5時間 主要パラメータ Matrix size: 1334160 Block size: 240 Proc map: Row major Proc grid: 36x144 Panel bcast: 1ring Look ahead: 1 アクセラレータ併用で さらに向上をねらいたい 本研究の概要 • Linpackを,CPUとSIMDアクセラレータを併用する TSUBAMEで動作させるための課題と解決法 – アクセラレータは一部のノードにのみ – 古典的MPIプログラムを,小さい変更で 47.38TFlops ・・・ヘテロなLinpack性能として世界一 • 大規模計算アプリをヘテロ型システムで効率的に動 作させるためのテストケース – TSUBAME,京速計算機 – Cellプロセッサのシステム (IBM Roadrunner) – General purpose GPU ClearSpeedアクセラレータ • 理論性能96GFlopsのPCI-Xアクセラレータボード – – – – CSX600 SIMD processor x 2と,1GB DRAM 0.5GFlops PE x 96 x 2 (192並列) PCI-Xバス1.06GB/s 消費電力25W • 利用するためのソフトウェア: – Cnプログラミング言語 – 行列演算ライブラリ ← 本研究で利用 – FFTライブラリ ClearSpeed 行列演算ライブラリ (MxB) x (BxM)行列積の速度 40 入力行列データ 計算 Speed (GFlops) 関数call 30 20 B=960 B=576 10 B=768 B=384 0 出力行列データ 0 return 2000 4000 6000 8000 10000 12000 matrix size M • 行列サイズによる性能差が激しい • 最高で40GFlops程度 HPLの性質 • MPIによる並列化 • 行列積の性能でほとんど決まる • 二次元ブロックサイクリック分割に より,均等分割 性能不均一な環境で どうやって高速に? 6プロセス (2x3)での分割例 N B ヘテロ環境での課題 • HPLを,以下の条件で効率的に動作させたい – OpteronとClearSpeedアクセラレータの双方を有効に働 かせる必要 • 16 Opteron coreは約70GFlops • ClearSpeedは40GFlops弱 片方だけではダメ – ClearSpeedは一部のマシンにのみ存在 – HPLへの変更は最小限にしたい • プロセス毎の仕事量は均等のまま ヘテロ環境のための方針 二種類のHPLプロセスを導入 • ホストプロセスは,通常通りにGOTO BLASを用い計算 • SIMDプロセスは,行列積演算をアクセラレータに依頼 ホスト プロセス SIMD プロセス CS Lib CS Lib SIMDサーバは複数のSIMDプロセスからの依頼を受け付ける • mmapで行列データを共有 SIMD サーバ 予備実験環境 • TSUBAME 一部ノードを利用 – 2.4GHz Opteron x 16 core / node – 32GB memory / node • • • • Voltaire MPI GOTO BLAS (ホストプロセス用) ClearSpeed BLAS (SIMDサーバ用) HPLの,行列積呼び出し部分を改造 ナイーブな実装の性能 16ノードでの速度 1200 Full Acc: 全ノードでアクセラレータ使用 Speed (GFlops) 1000 800 600 Half Acc: 半分のノードにアクセラレータ 400 200 0 0 Full Acc 50000 100000 Matrix size N Half Acc 150000 No Acc: CPUのみ No Acc • アクセラレータ追加により,性能が大幅に下がってしまった! 原因究明,コード改良,パラメータチューニングの繰り返し・・・ ノード内資源の利用の チューニング 1プロセス=4スレッドの場合 Opteron x 16 cores ClearSpeed アクセラレータ • アクセラレータとの通信のためのCPU利用率を無視できない • 半端CPU coreも利用 648ノード3312プロセスの配置 ISR9288 switch ISR9288 switch IB(InfiniBand) x24 ISR9288 switch MPO(fiber) x24 ISR9288 switch ISR9288 switch ISR9288 switch 120 nodes 120 nodes ISR9288 switch ISR9288 switch 10GB Voltaire InfiniBand 120 nodes 120 nodes ClearSpeedあり 92 HPLの プロセス格子 - なるべく上流の 通信量を減らす 36 120 nodes 55 nodes HPLの改造:Lookaheadの改良 • パネル通信と行列積計算のオーバラップ • ClearSpeedの特性には合わない マルチスレッド化により行列積の細分化を防ぐ オリジナル 変更後 while (通信が未終了) スレッド作成 If (メッセージが来ている) 通信処理 break 一部だけ行列積演算 残りの部分の行列積演算 行列積が細切れになると, ClearSpeed BLASの性能は落ちる 通信処理 スレッド終了待ち 行列積演算 測定時の条件 • 9月最終週,システムメンテナンス時 • 改造HPL + Voltaire MPI + GOTO BLAS + ClearSpeed BLAS • ブロックサイズ – 960 (CPUのみは240) • 行列サイズ – 物理メモリになるべく合わせる – 648へテロノード時:1148160 • プロセス数 – CSあり: 3プロセス+3プロセス – CSなし: 4プロセス 測定準備 • ClearSpeed利用時に計算結果のエラーが見られた – ||Ax-b||が充分に0に近いかのチェック – ボード上メモリのエラー?通信時のデータ化け? – 計算エラーがあるとTop500で認められない • 360枚それぞれで独自にHPLテスト,異常アクセラ レータを洗い出し,交換 • ClearSpeedのクロック周波数を250MHz→233MHz へ – 測定時のシステム全体のピーク82.1TF 50 45 40 35 30 25 20 15 10 5 0 相対性能 (No Acc=1) 47.38TF 38.18TF 1.6 1.4 Relative Speed Speed (TFlops) 改良・チューニング後の性能 1.2 1 0.8 0.6 0.4 0.2 0 60 350 648 Number of nodes Full Acc Half Acc No Acc 60 350 Number of nodes Full Acc • 648ノード,360アクセラレータで47.38TF – – – – 648 No Accの38.18TFに比べ,+24% アクセラレータあたり +25.5GFlops 行列サイズN=1148160 (No AccではN=1334160) 実行時間 5.9時間 Half Acc No Acc 行列サイズ v.s. 性能 60ノードでの実験 6000 • Half Accでは行列サイ ズを小さくする必要 Speed (GFlops) 5000 4000 3000 2000 Full CS No CS 1000 Half CS 0 0 200000 Matrix size N 400000 – CSつきノードは1.5倍メ モリを占有 – 計算性能とメモリ量が 比例する方が効率的 おわりに • ヘテロ型スパコンTSUBAME上で並列Linpack測定 – CPUとSIMDアクセラレータの双方を活用 – 多数のプロセスを起動,プロセス数の調整により不均一性 へ対応 • 648ノード,360アクセラレータで47.38TFlopsを達成 – 2006年6月Top500にあてはめると,5位相当の速度 – ヘテロ型システムでのLinpack評価としては世界一 – CPUのみに比べて+24%の速度向上, 消費電力は+1%程 度で済んでいる
© Copyright 2024 ExpyDoc