Document

アクセラレータを用いた
ヘテロ型スーパーコンピュータ上の
並列計算
~ 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%程
度で済んでいる