Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qの高速化手法とライフサイエンスへの応用
土井 淳

doichan@jp.ibm.com

東京基礎研究所：日本アイ・ビー・エム株式会社
19 Oct. 2012「バイオスーパーコンピューティング研究会」第四回総会・講演会

Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qの概要

2

IBM System Technology GroupBlue Gene/Q

3. 計算ノード:
1チップモジュールと16 GB DDR3 メモリを搭
載, 204.8 GF/s

4. ノードカード:
32枚の計算ノード,トーラスネットワーク通信モジュール

2. チップモジュール

1. 計算チップ:
16 コア

5b. IOドロワー:
最大8枚のIOノード
8 PCIe Gen2 x8 スロット

7. システム:
20PF/s (96筐体)

5a. ミッドプレーン（1/2筐体）:
16枚のノードカード

3

6. Blue Gene/Q筐体,
209.8 TF/s

© 2011 IBM Corporation

Data Centric Deep Computing | IBM Research - Tokyo

Blue Geneファミリー仕様比較

Property
Node
Properties

BG/L

BG/P

BG/Q

Processors per chip

2* 440 PowerPC

4* 450 PowerPC

16* A2Processor Frequency

0.7GHz

0.85GHz

1.6 GHz

Processor Voltage

1.5V

1.2 V

0.7 V

Software managed

SMP

SMP

4 MB

8 MB

32 MB

Main Store/processor

512MB/1GB

2GB/4GB

16GB

Main Store Bandwidth

5.6GB/s (16B wide)

13.6 GB/s (2*16B wide)

42.6 GB/s (2*16B wide)

5.6GF/node

13.6 GF/node

204.8 GF/node

6*2*175MB/s=2.1GB/s
0.5/4

6*2*435MB/s=5.2GB/s
0.5/3

10*2*2GB/s=40GB/s
0.3/2.5

596TF (104k)

1PF (72k)

20PF (96k)

2.3MW

2.3MW

8MW

Coherency
L2/L3 Cache size (shared)

Peak Performance
Torus
NetworkBandwidth
Off-box latency: hw/MPI (µs)

SystemProperties

Peak Performance

Total Power

4

Data Centric Deep Computing | IBM Research - Tokyo
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU
PPC
FPU

L1 PF

PPC
FPU

L1 PF

Blue Gene/Q
compute chip
5L1 PFL1 PF
L1 PF
L1 PF
L1 PF
L1 PF
L1 PF

L1 PF
L1 PF
L1 PF
L1 PF

full crossbar switch

L1 PF

L1 PF
L1 PF
L1 PF
L1 PFdma

Test

2MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L22MB
L2Blue Gene/Qチップアーキテクチャ
 16+1 コアSMP（1コアはシステムが使用）
DDR-3Controller

External
DDR3

コアあたり4ハードウェアスレッド（SMT）
動作周波数，1.6 GHz コアあたり4浮動小数点数演算のSIMD演算器
ノードあたり 204.8 GF
563 GB/s の共通L2メモリ間バイセクションバンド幅 32 MBの共通L2キャッシュメモリ
 42.6 GB/s のDDR3メモリバンド幅 (1.333 GHz DDR3)
 2.0 GB/sのバンド幅の10本のプロセッサ間リンク

DDR-3Controller

External
DDR3

 2.0 GB/sのバンド幅の1本のI/Oリンク ノードあたり16 GB のメモリ
 ノードあたり~30 Wの消費電力

2 GB/s I/O link (to I/O subsystem)
Network

PCI_Express

10*2GB/s intra-rack & inter-rack (5-D torus)
note: chip I/O shares function with PCI_Express

Data Centric Deep Computing | IBM Research - Tokyo

Quad FPU：4-wayのSIMD演算器
 4-way 浮動小数点演算– BG/L,Pは 2-way– 倍精度，単精度ともに256

 2-way 複素数演算

Load– BG/L,Pは1-way

 Multiply-add演算のサポートA2RFRFRFRF64– 最大でサイクルあたり8演算

 A2コアのAXUポートに接続– サイクルあたり１命令発行

 4本のレジスタファイル– スレッドあたり32x256ビット （4x倍精度浮動小数点数） L1キャッシュと256ビットの読み書きが可能
6Permute
MAD0MAD1MAD2MAD3

Data Centric Deep Computing | IBM Research - Tokyo

5次元トーラス通信網

1～4次元目Blue, Yellow, Green and Orange links

5th dim. length=2(fixed)

4x4x4x4x2 5D torus = 512 nodes (midplane)
1 rack: 8x4x4x4x2, 2racks: 8x8x4x4x2, 3 racks: 12x8x4x4x2, ...
7

Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qの実行モード
nodecore0
core1
t0 t1 t2 t3t0 t1 t2 t3

coren

core15t0 t1 t2 t3

t0 t1 t2 t3

1ノードあたりのプロセス数を1～64の範囲で選択
ノードあたりのプロセス数＊プロセスあたりのスレッド数≦64

フルflat-MPIモード
64 プロセス
1 スレッド/プロセス
P0 P1
P2 P3

P4 P5
P6 P7

T0,T0,T0,T0 T0,T0,T0,T0

Pn Pm P60 P61
Po Pp 6P2 P63
T0,T0,T0,T0

8

T0,T0,T0,T0

ミックスモード
2,4,8,16,32 プロセス
32,16,8,4,2 スレッド

フルSMPモード
1 プロセス64 スレッド

P0

P0

P1

T0,T1,
T2,T3

T0,T1,
T2,T3

T0,T1,
T2,T3

T4,T5,
T6,T7

T28,T29,
T30,T31

T28,T29,
T30,T31Tn,Tm,To,Tp

T60,T61,
T62,T63

Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qの開発環境とアプリケーションの移植

9

Data Centric Deep Computing | IBM Research - Tokyo

移植可能なアプリケーション
 使用言語– C/C++– Fortran

 並列化– MPI（MPICH2相当）– OpenMP– pThread• マスタースレッドとあわせてノードあたり最大64スレッド生成可能

 メモリ空間– 64ビット– ノードあたり16GB（仮想メモリ＝実メモリなので16GBが上限）
10Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qの開発環境
 フロントエンドノード– ログインノード，作業ノード• クロスコンパイル，アプリケーションやデータの管理や可視化など• Blue Gene/Qへのジョブの投入– LoadLeveler等により資源割り当て管理可能– Linux環境

リモートログイン(ssh)• 通常のほとんどのLinuxツールが利用可能– Power7プロセッサ ファイルサーバー– GPFSファイルシステム

ファイルサーバ

ファイルサーバ

Power 7

Power 7

フロントエンド

サービスノード

Power 7

Power 7IOノード

 Blue Gene/Q– ユーザログイン不可
11

ディスク装置ディスク装置Blue Gene/Q

Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qの開発環境（続き）
 クロスコンパイラ– XL C/C++コンパイラー，XL Fortranコンパイラー– gnuコンパイラ：gcc, g++, gfortran 数値計算ライブラリ– MASS,MASSV：算術演算ライブラリ(-lmの最適化版)– ESSL：数値計算ライブラリ（BLAS,LAPACK,FFT） プロファイラ
– gprof デバッガ– gdb– 今後各種市販ツールも利用可能予定
12

Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qへのアプリケーション移植
分散メモリ並列化 いいえ
されているかいいえ
1プロセスで動作確認

いいえ
メモリ不足

デバッグ

はいはい

はい
分散メモリ並列化を行う

SMP並列化

動作確認は低めのレベルのコンパイルオプションから始めて，徐々にレベルを上げていく

いいえ

されているかはいいいえ

ハイブリッド並列環境でデバッグ

動作確認

はい
最適なプロセス数とスレッド数の組み合わせを見つける

13

flat-MPI環境で動作確認

はいノードあたり32プロセス以上で動かない場合は共有メモリ並列化も検討する必要がある

いいえ

いいえ
メモリ不足
はい

共有メモリ並列化必要

デバッグ

Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qにおけるアプリケーション最適化

14

Data Centric Deep Computing | IBM Research - Tokyo

アプリケーションの最適化
 メモリアクセスの最適化– キャッシュメモリの最適化• ループ最適化，キャッシュブロッキング等– データレイアウト，データアクセスの最適化

 Quad FPUによるSIMD演算– コンパイラによるSIMD化– SIMDに向いたコードへの書き換え– ハンドチューニングによるSIMD化

 共有メモリ並列化による最適化– ノードあたりのプロセス数と，プロセスあたりのスレッド数の選択

 分散メモリ並列化の最適化– 問題の分割とノードマッピング– 計算と通信のオーバーラップ
15

Data Centric Deep Computing | IBM Research - Tokyo

L1 キャッシュブロッキング

COMPLEX*16 A(N,M), B(M,N)

行列の転置の例
COMPLEX*16 A(N,M), B(M,N)
DO I=1,N
DO J=1,M
A(I,J) = B(J,I)
ENDDO
ENDDO
M

データストア時に毎回キャッシュミス
するN

DO I=1,N,4
DO IC=1,4
DO J=1,M,4
A(I+IC,J) = B(J ,I+IC)
A(I+IC,J+1) = B(J+1,I+IC)
A(I+IC,J+2) = B(J+2,I+IC)
A(I+IC,J+3) = B(J+3,I+IC)
ENDDO
最初の1回は
ENDDO
キャッシュミスする
ENDDO
が後の3回はヒット64バイトL1
キャッシュラインN

64バイトL1
キャッシュライン

M

N

M
N
M
16

Data Centric Deep Computing | IBM Research - Tokyo

データレイアウトの考察： Structure of Arrays (SoA) vs Array of Structure (AoS)
Structure of Arrays
X(N)

...

Y(N)

...

Z(N)

...

T(N)

...

or A(N,4)

一般的にSIMDやベクトル化に向いている

多くの要素を扱う場合にデータストリームが多くなる
多次元配列の袖領域へのアクセス時にキャッシュミスが頻発するケースがある

Array of StructureA(4,N)...
キャッシュの利用に有利
こちらのほうがSIMDに適している場合もある（要素数や計算による）要素数によってはSIMD化できない(例えば，3次元ベクトルは，4-way SIMDには向かない)
17Data Centric Deep Computing | IBM Research - Tokyo

Quad FPUによるSIMD化
 コンパイラによる自動SIMD化– コンパイラが自動的にSIMD化しやすいコードにする必要あり– ディレクティブによりコンパイラを助ける

 SIMD化しやすいコードに書き換える– 連続アクセス• ループアンローリングにより簡単にSIMD化できるようなコード– 直接アクセス• テーブル参照等で非連続アクセスの場合自動SIMD化は困難– 単純な計算の長いループ

18Data Centric Deep Computing | IBM Research - Tokyo

連続アクセス，直接アクセスへの書き換えの例
アドレスが計算で求まるような場合
COMPLEX*16 A(*),B(*)
i=Nx+1
DO y=1,Nyi=i+1
DO x=1,Nxi=i+1
B(i) = (A(xup(i))+A(xdn(i))+A(yup(i))+A(ydn(i)))/4.0D0
ENDDO
i=i+1
ENDDO

COMPLEX*16 A(*),B(*)
i=Nx+1
DO y=1,Nyi=i+1
DO x=1,Nxi=i+1
B(i) = (A(i+1)+A(i-1)+A(i+(Nx+2))+A(i-(Nx+2)))/4.0D0
ENDDO
i=i+1
ENDDO

テーブルの中身がわからない場合
REAL*8 V(*),U(*)
D=0.0D0
DO i=1,Nidx
D=D+V(idx(i))*U(i)
ENDDO

19

REAL*8 V(*),U(*)
REAL*8 VT(*)
D=0.0D0
DO i=1,Nidx
VT(i)=V(idx(i))
ENDDO
DO i=1,Nidx
D=D+VT(i)*U(i)ENDDO

一度作業用の配列にコピーしてしまう
2個目のループは連続アクセスなのでSIMD化可能

Data Centric Deep Computing | IBM Research - Tokyo

SMPによる並列化に関する考察

 ノードあたりのプロセス数を増やすと– プロセスあたりのメモリ量，メモリと通信のバンド幅が減る• メモリ量についてはシステムリソースもプロセス分必要なので，相対的にプロセスが増えるとユーザメモリが小さくなる

 ノードあたりのプロセス数を減らすと– 効率の良い共有メモリ並列化が必要• プログラム内に共有メモリ並列化できる十分な並列度が必要– スレッド間同期等のオーバーヘッド

20

Data Centric Deep Computing | IBM Research - Tokyo

SMTを使用する
 コアあたり2以上のハードウェアスレッドを利用する– 1サイクルあたり浮動小数点演算と整数演算を1つずつ同時に実行できる– しかし，1スレッドあたり1サイクルに1つの命令のみしか発行できない– コアあたり2スレッド以上であればそれぞれのスレッドから浮動小数点演算と整数演算を同時に発行/実行できる

 SMTにより命令レイテンシを隠す– 1つのスレッドがストールしても他のスレッドが動ける可能性がある

ノードあたりのスレッド数を変えた場
合の実行時間の比較

Elapsed time [sec]100

SMT on
10

1
1

21

2

48
Number of threads / node16

32

Data Centric Deep Computing | IBM Research - Tokyo

プロセス数とスレッド数の組み合わせの考察 プロセス数とスレッド数がうまくバランスの取れる組み合わせを見つける– メモリアクセス，通信パターンなどに依存する– 一般的に，プロセス数を少なめにした方が，性能が良い傾向

 アプリケーション毎に試す必要がある– 可能な限り，MPI+OpenMPのハイブリッド並列が望まれる
100

格子QCDの例(プロセス数*プロセスあたりスレッド数 = 32)

通信を計算の裏に隠すような最適化を施したコードのため，ノードあたりのプロセス数を増やすと，通信バンド幅が下がることで，通信時間を隠しきれなくなっている

80
Elapsed time [sec]

ノードあたりの問題サイズを一定にし，ノードあたりの全スレッド数が32になるような組み合わせで実行した場合の実行時間の比較

90
70
60
50
40
30
20
100
12

4

8Processes / node
221632

Data Centric Deep Computing | IBM Research - Tokyo

問題の分割とノードマッピング
 分散メモリ並列化ではどのように問題を分割するかが重要– 通信量，通信パターン，アルゴリズム等を考慮– Blue Geneの場合多くの並列度を稼げる分割方法が必要• 格子状のデータ構造であればできるだけ多次元分割する必要がある

 5次元トーラスに問題をマッピングする– 差分法のような問題の場合隣接格子との通信が重要– 隣接格子が物理的に隣の計算ノードになるようなマッピング• トーラスは5次元なので，問題の次元数（分割した次元数）に合わせた仮想的なトーラスを形成する
0 1 2 30 1 2 3• 512ノードを3次元トーラストして使うには
4 5 6 715 10 9 4– 4x4x4x4x2>>> (4x4)x4x(4x2) = 16x4x8– 実行時にノードマッピングを変えることが可能
23

8

9 10 11

14 11 8512 13 14 15

13 12 76

Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qにおける格子QCDの最適化事例

24

Data Centric Deep Computing | IBM Research - Tokyo

格子QCDのカーネルルーチン
3x3 ゲージ場行列

Wilson-Diracオペレーター{4 スピノル（3色の物理量を持つ）

D( n, m ) = δ ( n, m ) − κ ∑ (1 − γ µ )U µ (n)δ ( n + µ , m ) + (1 + γ µ )U µt (n − µ )δ ( n − µ , m )
4µ =1

前方後方}

4次元分加算4つの3次元ベクトルと3x3行列の乗算を8隣接(XYZT,+-)について行うステンシル計算（全て複素数）δ (n+2,m)U2(n)U1(n-1)YYδ (n-1,m)

U1(n)δ (n,m)δ (n+1,m)U2(n-2)δ (n-2,m)25

X

X

格子QCDの並列化

Data Centric Deep Computing | IBM Research - Tokyo

Wilson-DiracオペレーターのQuad FPUによる最適化
 Quad FPUによる複素数演算– Quad FPUは2つの複素数演算を同時に実行– 2つのベクトルと行列乗算を同時に実行

spinA(1) spinB(1)m(1,1) m(2,1) m(3,1)
spinA(2) spinB(2) x m(1,2) m(2,2) m(3,2)
spinA(3) spinB(3)m(1,3) m(2,3) m(3,3)

 Quad FPUに向いたデータ配置– 格子QCDでは，3x4の形のスピノル構造が良く用いられる• COMPLEX*16 W(3,4,Nx,Ny,Nz,Nt)• このままだと非常にSIMD化しづらい

spin1(1)spin2(1)spin3(1)spin4(1)spin1(2)spin2(2)spin3(2)spin4(2)spin1(3)spin2(3)spin3(3)spin4(3)– 4x3の形に書き直す• COMPLEX*16 W(4,3,Nx,Ny,Nz,Nt)• きれいにSIMD化できる

spin1(1) spin2(1) spin3(1) spin4(1)spin1(2) spin2(2) spin3(2) spin4(2)spin1(3) spin2(3) spin3(3) spin4(3) Quad FPU命令の最適化

26– 今回はインラインアセンブラを用いてハンドQR0
コーディング

spin1(1) spin2(1)QR3

spin3(1) spin4(1)QR1spin1(2) spin2(2)QR4spin3(2) spin4(2)QR2spin1(3) spin2(3)QR5spin3(3) spin4(3)Data Centric Deep Computing | IBM Research - Tokyo

通信と計算のオーバーラップ
8方向それぞれについてパイプライン的に処理する
X+:

各方向のローカル計算

X-:Y+:
Y-:
Z+:
Z-:
T+:
T-:
ハーフスピノル生成27

行列の掛け算データ通信

出力先へ加算Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qにおける格子QCDのスケーリング
BiCGStab法を用いた反復計算を行う場合の実効性能の測定値
10000

Blue Gene/Q 16ラックで1ペタフロップスを達成

Sustained TFLOPS

1000

100

101000

10000
Number of Nodes

詳細は11月にソルトレイクシティで開催されるSC12にて発表予定
28100000

Data Centric Deep Computing | IBM Research - Tokyo

Blue Gene/Qにおける心臓シミュレーションの事例

Matthias Reumann
IBM Research – Australia
29

IBM Research – Australia

Cardiovascular disease (CVD)► Leading causes of death(WHO report Sept. 2011)► Research reduces deaths► Cardiac models help understandmechanisms of CVD in a way thatcannot be done neither in vivo norin vitro.

F. H. Netter. Thieme. 1990

Challenge: multi-scale cardiac simulations to model and understandthe progression of disease[30]

IBM Research – Australia

12/10/18

IBM Research – Australia

Multi-scale cardiac models – Molecules to Cells to Organ

Silva and Rudy. 2005

Clancy and Rudy. 2005

[31]

IBM Research – Australia

12/10/18

IBM Research – Australia

5 years ago: Existing codes did not scale
25

A: OpenMP scaling

25

1515
S20

S20

B: MPI scaling

1010

550005101520250

Number of CPUs

20406080

100 120 140

Number of CPUs

Kharche et al. Concurrency and Computation: Practiceand Experience. 2008
Plank et al. Capability Computing. 2006

First Author[32]

YearElements

CPU used

CPU available

Pavarino

2004

600 x 600 x 100

128

512

Colli Franzone

2007

200 x 200 x 50

3692

Murillo2004

512 x 512

128

128

Saleheen

1998

156 x 256 x 32

Potse

2006

567 x 501 x 711

32

Weber dos Santos

2004

0.64 x 0.64 x 2.56 cm

Plank

2007

862515

Simulation time
30 x 0.05 ms

Run time

Run time [h]

163.6

1.36

21 - 24 h
200 ms519 s

0.004 ms

2.217 s/time step

64

600 ms

39 h/51 h

1616

10000 steps

64

128500 ms

IBM Research – Australia

28254

4.325

235.45

6.4 h

12/10/18

IBM Research – Australia

3 – 4 years ago…
Full heart models require very long run times[33]

IBM Research – Australia

12/10/18

IBM Research – Australia

Methods – Orthogonal Recursive Bisection(ORB)(Data decomposition adapted from molecular dynamics)

BlueGene/L System Buildup

System64 Racks, 64x32x32

Rack

32 Node Cards

Node Card

180/360 TF/s
32 TB

(32 chips 4x4x2)
16 compute, 0-2 IO cards2.8/5.6 TF/s
512 GB

Compute Card

2 chips, 1x2x1Chip

90/180 GF/s
16 GB

2 processors
5.6/11.2 GF/s
1.0 GB
2.8/5.6 GF/s
4 MB

Reumann et al. In Proc IEEE EMBC 2008
Reumann et al. Biomed Tech 2011[34]

IBM Research – Australia

12/10/18

IBM Research – Australia

ORB TreeReumann et al. Biomed Tech 2011[35]

IBM Research – Australia

12/10/18

IBM Research – Australia

Multi-scale, reaction – diffusion cardiac models
Reumann, Gurev, Rice. Personalized Medicine 2009• Non-linear stiff ODEs
• 3-100 state variable per celldepending on model detail• 370 Mio tissue cells (0.1 mmcubic)

Pullan, 2006
[36]

IBM Research – Australia

12/10/18

IBM Research – Australia

Methods - Solution of reaction-diffusion equations

Vigmond et al. Progress in Biophysics andMolecular Biology. 2008

• Monodomain - iso-potential extracellular space• Bidomain - compute extracellular potential[37]

Reumann et al.
In Proc Computers in Cardiology. 2008

IBM Research – Australia

12/10/18

IBM Research – Australia

Scaling & Parallel Efficiency

Pope et al. IEEE TBME 2011

► A fast cardiac model of 1 second simulation time can run in 215

seconds wall clock time (Fitzhugh-Nagumo monodomain model with
~32.5M tissue cells on a 4 rack IBM Blue Gene/P supercomputer)► 10 times faster on the next generation IBM Blue Gene/Q supercomputer
詳細は11月にソルトレイクシティで開催されるSC12にてゴードンベル賞のファイナリスト講演でArthur A. Mirin et al. , Toward Real-Time Modeling of Human Heart
Ventricles at Cellular Resolution: Simulation of Drug-Induced Arrhythmias[38]

IBM Research – Australia

12/10/18

Data Centric Deep Computing | IBM Research - Tokyoまとめ Blue Gene/Qは特別なスパコンではない– 16GBのメモリとSMP，SMTのサポートによる高い互換性– 一般的なスパコンやPCクラスタと同等の開発環境• Linux開発環境• MPI+OpenMP– 一般的な分散メモリ並列コンピュータの最適化手法

 ペタスケールシミュレーション– 多くの分野でBlue Gene/Qの利用が始まっている– 未踏分野への応用の可能性

39