Top500, HPCGへの挑戦

計算科学研究機構 運用技術部門
ソフトウェア技術チーム チームヘッド
南 一生

本日の趣旨 世界で最も高速なスパコンを評価するプロジェクトとしてTOP500がある．

 TOP500は，1993年に発足した．
 TOP500にはLINPACKというベンチマークプログラムが用いられている．

 LINPACKは，演算性能の評価に重きを置いているため，近年，実アプリケーションとの乖離が指摘されることもあった．

 そこで，実アプリケーションで使われる計算手法の性能評価に重きを置いたベンチマークプログラム:HPCGが提案されている．

 「京」は，2011年にTOP500，1位，2014年にHPCG，2位を獲得した．

 現代のスパコンの特徴から見たBMTの特性と，高い性能を引き出すベンチマークプログラムのチューニングへの挑戦について話す．

2

最初にーコンピュータの過去と現在ー

3

昔のコンピュータ
シングルプロセッサ

動作周波数が低い演算器

 メモリは一定時間を経過しないと同じメモリバンクにアクセスできない 昔は20サイクルくらい待っていた しかし動作周波数が低かったため演

メモリ

算器も遅く演算速度とメモり転送性能は釣り合っていた
メモリバンク(例は4バンク)4シングルプロセッサの問題
メモリウォール問題

動作周波数が高い場合(現在) メモリは動作周波数が高くなってく

演算器

るともっと待つ事となる(100-200サイクル)

メモリ
インタリーブ メモリに比べて演算器は動作周波数が高くなり高速になった

メモリ

 さらに半導体プロセスの微細化により演算器はCPUにたくさん搭載可能となった

メモリバンク(例は4バンク) 結果的に演算器に比べメモリのデータ転送能力が低くなった5

シングルプロセッサの問題
対策

動作周波数が高い場合

 データ供給能力の高いキャッシュを演算器

メモリと演算器間に設ける
 データをなるべくキャッシュに置きデ1次キャッシュータを再利用する事でメモリのデータ供給能力の不足を補う

2次キャッシュ こうすることで演算器の能力を使い切る
 多くのスカラー機はこの方式を取っ

メモリ
インタリーブ

メモリている6

シングルプロセッサの問題
一台のコンピュータの処理限界
 動作周波数を上げる事で電力が吹き上がる
 動作周波数の限界を迎えつつある メモリウォール問題もあり一台のコンピュータの演算能力を上げてもメモリの能力が追いつかない

そこで！
7

そこで超並列処理！
1ラック

50m×60mの部屋に

96プロセッサ

864ラック
82944プロセッサ
66万コア

マルチコア(8コア)8次にー現代のスパコンについてー

9現代のスパコン利用の難しさ
アプリケーションの超並列性を引き出す

現代のスーパーコンピュータシステム

プロセッサの単体性能
現代のプロセッサを引き出す

System
Rack

演算器
System Board

1次キャッシュ
2次キャッシュメモ
リ
10並列化とは？
計算時間

逐次計算
計算時間

並列計算

11

並列化とは？
計算時間

通信時間 計算時間

通信時間

プロセッサ１
通信

できるだけ同じ計算時間(ロードインバランスを出さない)

プロセッサ２
通信
プロセッサ３

通信

通信時間を出来るだけ小さくする！

プロセッサ４
12

100
プロセッサ

並列化とは？
並列計算できない部分(1秒)

並列計算できる部分(99秒)

1+0.99=1.99秒

1+0.099=1.099秒

ほぼ50倍

ほぼ91倍

必要な並列度を確保する！
1000
プロセッサ

並列計算できない部分(非並列部)を限りなく小さくする！

13

プロセッサの単体性能を引き出すとは？
マルチコア化

以下を考慮した
プログラミング

データの再利用可能なアプリ

データの再利用不可能なアプリ

メモリ

メモリ

データ

データ

2次キャッシュデータ
1次キャッシュデータ

2次キャッシュ
再利用

データ
再利用
1次キャッシュデータ
14

LINPACKとHPCG

15

シミュレーションは・・・
連立1次方程式として解くことが多い
２元連立1次方程式

２元連立1次方程式の行列形式

3x + 5y = 3

æ 3 5 öæ x ö æ 3 ö
çè 1 4 ÷ø ç y ÷ = çè 8 ÷øèø

x + 4y = 8書き換え

æ a2 a3 0 00
ç b1 b2 b3 00çç 0 c1 c2 c3 0
ç 0 0 d1 d2 d 3
ç 0 0 0 e1 e2ççè 0 0 0 0 f 1

行列解æ x ö æ -4 öç y ÷ =ç 3 ÷øèø è行列ææööu0çç÷
÷v0÷ çç
÷ç
0 ÷ç w ÷=ç
0 ÷ç x ÷ çe3 ÷ çç y ÷÷ ç÷
f 2 ÷ø çè z ÷ø çç
è

g1 ö
÷
g2 ÷
g3 ÷
÷
g4 ÷
g5 ÷
÷ 略してこう書く
g6 ÷ø

Ax = b16

LINPACKとHPCG
LINPACK(密行列・直接解法)

Ax = bHPCG(疎行列・反復解法)

00
精密な計算をする電子状態シミュレーショ
ン等の分野このタイプが多い(*)正確には連立一次方程式でなく固有値方程式となる工学等の分野にこのタイプが多い
17

LINPACKとHPCGの難しい点
LINPACKHPCG

 できるだけ同じ計算時間
並  通信時間を出来るだけ小さくする列性  必要な並列度を確保する
能 並列計算できない部分(非並列部)を限りなく小さくする
単体性
能 マルチコア化
 データの再利用可能なアプリ
18

LINPACKのためのチャレンジ
 行方向通信について
 計算と通信が同時実行可．計算と通信のオーバーラップ．

 「京」独特の通信ハードウエア(Tofu)
 Tofuの特徴を生かした徹底的に速い通信ライブラリ開発列 列方向通信について

・・・・

行

 計算と通信が同時に実行できない
 行方向の通信を早くしたい・・・・

 Tofuはデータの配置を6次元に自由に配置可能
 行方向通信が早くなるようデータ配置を工夫

・・・・

・・・・

・・・・

・・・・

・・・・

・・・・

・・・・

(プロセッサ) プロセッサ内計算について
 元々プロセッサの性能は出やすいが！

 プロセッサ性能限界まで高速化！

(全体)

・・・・

 できるだけ大規模な問題を解いて性能を出す
 大規模化して長時間実行となる
 高い信頼性により長時間実行が可能

19

LINPACKの結果（） （）（）（）（20HPCGのためのチャレンジ
マルチコア化

コア1

データ(1) (2) (3) (4) (5) (6) (7)・・

do i=1,100a(i)のロード

2

3(1)

4

1

2

3 ・・・・(2)b(i)のロードa(i)とb(i)の演算i番目の結果のストア

end do マルチコア化は複数のコアを同時に使うこと
 HPCGのオリジナルプログラムは(1)の後に(2)の計算を行う必要あり
 したがって複数コアを同時に使えない
21

HPCGのためのチャレンジ
マルチコア化
do i=1,100a(i)のロード(1) (2)b(i)のロード

a(i)とb(i)の演算i番目の結果のストア
end do プログラムを書換え(1)と同時に(2)の計算をできるようにした
 同時に複数コア使えるようにした
 上図のように実行時間を大幅に短縮

22HPCGのためのチャレンジ
データの再利用性が少ない場合の効率的なデータアクセスの実現
(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8) (9)(10) (11) (12) (13) (14)HPCGオリジナル

プログラム書換え後
 データの再利用性が少ない しかも飛び飛びのアクセスとなっている
 このような飛び飛びのアクセスは非常に効率が悪い

 飛び飛びの度合いを大幅に縮小するようにプログラムを書換え
23

HPCGの結果

HPCG/HPL

1.7%
4.4%
1.8%
1.9%

24

HPCGの結果
 HPCGオリジナルに比べて19.2倍の高速化
 １位の天河２はピーク性能で京の5倍程度
 しかしHPCGの性能差は1.3倍しかない

 HPCG/HPL性能比：4.1%は群を抜いている

25

••

ご清聴ありがとうございました

26