linpack

39
2013/2/92/10 - とある勉強会での発表資料 - Yuki Kawaguchi なぜなに Linpack 1

Upload: yuki-kawaguchi

Post on 30-Jun-2015

2.043 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: linpack

2013/2/9,2/10- とある勉強会での発表資料 -

Yuki Kawaguchi

なぜなに Linpack

1

Page 2: linpack

自己紹介

2

名前: Yuki Kawaguchitwitter: @kawa0810はてな id: kawa0810

・学生時代の研究並列・分散処理,GPGPU,数値計算関係

・仕事ソフトウェア開発 & サポート

Page 3: linpack

本題

3

Page 4: linpack

Linpack と Top500

4

・LU 分解による連立一次方程式 Ax = b の解法 ただし,A は係数行列,x は未知ベクトル,b は既知ベクトル

・Top500 のベンチマークで利用

Linpack とは?

・スパコンの上位500位を決定するプロジェクト http://www.top500.org・毎年,6月と11月の年2回測定 & 更新・評価方法:High Performance Linpack

Top500 とは?

Page 5: linpack

HPC チャレンジベンチマーク

5

・High Performance Linpack (HPL)Linpack で連立一次方程式を解く際の TFLOPS

・STREAM:メモリへの連続アクセスの際のバンド幅

・PTRANS:行列の転値

・RandomAccess:メモリへのランダムアクセス

・Fast Fourier Transform (FFT):高速フーリエ変換

・Communication bandwidth and latency通信のバンド幅とレイテンシ

・DGEMM:倍精度の行列行列積

表彰

Page 6: linpack

現在の Top500 のベスト3

6

1位:Titan (Cray Inc.)・性能:17.59 PFLOPS・特徴:NVIDIA 製 GPU 搭載

2位:Sequoia (IBM)・性能:16.32 PFLOPS・特徴:汎用型,省エネ設計

3位:K,京 (Fujitsu)・性能:10.51 PFLOPS・特徴:汎用型

Page 7: linpack

目的

7

Linpack の並列化方法について『簡単(?)』にご紹介!!

Page 8: linpack

LU 分解の復習 - 1

8

係数行列 A を A = LU に分解するただし,L は対角要素を1とする下三角行列,    U は上三角行列である.

Ax = b は 次式のように表せる

LUx = b

Page 9: linpack

LU 分解の復習 - 2

9

ここで,y = Ux とすると,

Ly = b

となる.L は下三角行列なので前進代入法を用いて解くことにより次式が得られる.

y = L�1b

������

1l21 1 0l31 l32 1...

.... . . . . .

ln1 ln2 · · · 1

������

������

y1

y2

y3...

yn

������=

������

b1

b2

b3...

bn

������

Page 10: linpack

LU 分解の復習 - 3

10

ここで,y を Ux にもどすと,

Ux = L�1b

となる.U は上三角行列なので後退代入法を用いて解くことにより次式が得られる.

x = U�1L�1b

������

u11 u12 u13 · · · u1n

u22 u23 · · · u2n

u33 · · · u3n

0. . .

...unn

������

������

x1

x2

x3...

xn

������= L�1

������

b1

b2

b3...

bn

������

Page 11: linpack

LU 分解の演算量と問題点

11

・LU 分解:

・前進代入法:

・後退代入法:

O(n2)

O(n2)

O

�2n3

3+ 2n2

O

�23n3

Page 12: linpack

LU 分解の演算量と問題点

12

・LU 分解:

・前進代入法:

・後退代入法:

O(n2)

O(n2)

O

�2n3

3+ 2n2

如何に並列化するかがポイント

O

�23n3

Page 13: linpack

並列 LU 分解のアルゴリズム

13

Left-Looking 法・データの分散方法によって大量の通信が発生する・Cell/B.E. で用いられている

Right-Looking 法・バランスよくデータ分散が可能・ブロック Right-Looking 法がよく用いられる

Crout 法・大量の通信が必要・分散メモリ型並列計算機では実装が困難

Page 14: linpack

ブロック Right-Looking 法 - 1

14

A をブロックに分割する

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

Page 15: linpack

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

ブロック Right-Looking 法 - 2

15

軸選択を行いながら LU 分解する

Page 16: linpack

ブロック Right-Looking 法 - 3

16

a12 a15a14a13

a22 a23 a24 a25

a32 a33 a34 a35

a42 a43 a44 a45

a52 a53 a54 a55

u11

l11

l21

l31

l41

l51

Page 17: linpack

ブロック Right-Looking 法 - 4

17

a12 a15a14a13

a22 a23 a24 a25

a32 a33 a34 a35

a42 a43 a44 a45

a52 a53 a54 a55

u11

l11

l21

l31

l41

l51

 をかけるl�111

Page 18: linpack

ブロック Right-Looking 法 - 5

18

a22 a23 a24 a25

a32 a33 a34 a35

a42 a43 a44 a45

a52 a53 a54 a55

u11

l11

l21

l31

l41

l51

u12 u13 u14 u15

Page 19: linpack

ブロック Right-Looking 法 - 6

19

a22 a23 a24 a25

a32 a33 a34 a35

a42 a43 a44 a45

a52 a53 a54 a55

u11

l11

l21

l31

l41

l51

u12 u13 u14 u15

Page 20: linpack

ブロック Right-Looking 法 - 7

20

u11

l11

l21

l31

l41

l51

u12 u13 u14 u15

a�

22 a�

23 a�

24 a�

25

a�

32 a�

33 a�

34 a�

35

a�

45a�

44a�

43a�

42

a�

52 a�

53 a�

54 a�

55

Page 21: linpack

ブロック Right-Looking 法 - 8

21

再び, 軸選択を行いながら LU 分解するすべて終わるまで繰り返す

u11

l11

l21

l31

l41

l51

u12 u13 u14 u15

a�

22 a�

23 a�

24 a�

25

a�

32 a�

33 a�

34 a�

35

a�

45a�

44a�

43a�

42

a�

52 a�

53 a�

54 a�

55

Page 22: linpack

ブロック Right-Looking 法 - 9

22

LU 分解完成!!

u11

l11

l21

l31

l41

l51

u12 u13 u14 u15

l22

l33

l44

l32

l42

l52 l53 l54

l43

u25

u35

u45

u34

u24u23

l55

u22

u33

u44

u55

Page 23: linpack

問題点:データの分散方法

23

どうやって各マシンにデータを分散配置させればいいのか?

u11

l11

l21

l31

l41

l51

u12 u13 u14 u15

a�

22 a�

23 a�

24 a�

25

a�

32 a�

33 a�

34 a�

35

a�

45a�

44a�

43a�

42

a�

52 a�

53 a�

54 a�

55

Page 24: linpack

ブロック・サイクリック分割

24

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

各ブロックをそれぞれ PU に割り当てる

Page 25: linpack

並列 HPL - 1

25

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

各ブロックをそれぞれ PU に割り当てる

Page 26: linpack

並列 HPL - 2

26

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

軸要素を各 PU に転送する

Page 27: linpack

並列 HPL - 3

27

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

軸要素を使い LU 分解する

Page 28: linpack

並列 HPL - 4

28

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

再度,軸要素を各 PU に転送する

Page 29: linpack

並列 HPL - 5

29

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

再度,軸要素を使い LU 分解する

繰り返す

Page 30: linpack

並列 HPL - 6

30

LU 分解が終わり次第各ブロックを転送する

a12 a15a14a13

a22 a23 a24 a25

a32 a33 a34 a35

a42 a43 a44 a45

a52 a53 a54 a55

u11

l11

l21

l31

l41

l51

横方向通信

Page 31: linpack

並列 HPL - 7

31

  を転送し,u を求める (dtrsm)

a12 a15a14a13

a22 a23 a24 a25

a32 a33 a34 a35

a42 a43 a44 a45

a52 a53 a54 a55

u11

l11

l21

l31

l41

l51

l11

Page 32: linpack

並列 HPL - 7

32

a22 a23 a24 a25

a32 a33 a34 a35

a42 a43 a44 a45

a52 a53 a54 a55

l21

l31

l41

l51

u11

l11u12 u13 u14 u15

u を送信する

縦方向通信

Page 33: linpack

並列 HPL - 8

33

l21

l31

l41

l51

u11

l11u12 u13 u14 u15

a�

22 a�

23 a�

24 a�

25

a�

32 a�

33 a�

34 a�

35

a�

45a�

44a�

43a�

42

a�

52 a�

53 a�

54 a�

55

繰り返す

データがそろい次第計算

Page 34: linpack

並列 HPL - 9

34

LU 分解完成!!

u11

l11

l21

l31

l41

l51

u12 u13 u14 u15

l22

l33

l44

l32

l42

l52 l53 l54

l43

u25

u35

u45

u34

u24u23

l55

u22

u33

u44

u55

Page 35: linpack

性能をだすための重要点 - 1

35

通信 (Message Passing Interface)・無駄な通信をいかにさせずに計算させるか?・非同期通信の利用

a11 a12 a15a14a13

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

Page 36: linpack

性能をだすための重要点 - 2

36

計算 (Basic Linear Algebra Subprograms)・行列行列積・MPI + マルチスレッド + SIMD + キャッシュ・アクセラレータ型計算機の利用

�����

l11 l12 l13 l14 l15l21 l22 l23 l24 l25l31 l32 l33 l34 l35l41 l42 l43 l44 l45l51 l52 l53 l54 l55

�����

�����

u11 u12 u13 u14 u15

u21 u22 u23 u24 u25

u31 u32 u33 u34 u35

u41 u42 u43 u44 u45

u51 u52 u53 u54 u55

�����

Page 37: linpack

前進代入法と後退代入法

37

パトラッシュ,僕はもう疲れたよ...

Page 38: linpack

結論

38

Linpack の自作は面倒

ライブラリを使いましょう!!

・Super LU・各ベンダのライブラリ・etc

Page 39: linpack

今後のスパコン分野 (推測)

39

アクセラレータ型計算機の普及・NVIDIA 製 GPU の新アーキテクチャの登場 (Kepler)・Intel 社の Many Intelgrated Core の参入

CPU の機能向上・クロック数はあがらない → コア数の増加・ベクタ長命令の強化 (Altivec,SSE,AVX,etc)

出典:NVIDIA 社http://www.nvidia.co.jp

出典:Intel 社.http://www.intel.com