多数の小容量fpgaを用いた スケーラブルなステンシル計算機の開発

33
多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発 小林諒平† 高前田(山崎) 伸也†,†† 吉瀬謙二† † 東京工業大学 大学院情報理工学研究科 †† 日本学術振興会 特別研究員(DC1) 2013/05/24 先進的計算基盤システムシンポジウムSACSIS2013 リコンフィギャラブルコンピューティング(13:30-14:00) 発表25分,質疑5分

Upload: ryohei-kobayashi

Post on 08-Jul-2015

704 views

Category:

Technology


2 download

DESCRIPTION

SACSIS2013で発表しました.

TRANSCRIPT

Page 1: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

小林諒平† 高前田(山崎) 伸也†,†† 吉瀬謙二†

† 東京工業大学 大学院情報理工学研究科

†† 日本学術振興会 特別研究員(DC1)

2013/05/24 先進的計算基盤システムシンポジウムSACSIS2013 リコンフィギャラブルコンピューティング(13:30-14:00) 発表25分,質疑5分

Page 2: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

本研究の成果

1

1. 多数の小容量 FPGA を使用した2次元ステンシル

計算に対して,高効率な計算を実現する アーキテクチャを提案

2. 提案アーキテクチャを実現したFPGAべースの

高性能アクセラレータの実装

3. 100個の FPGA のアレーシステムにおける評価

および提案アーキテクチャの正当性の検証

Page 3: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

背景 ステンシル計算

関連研究

多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て

計算順序の最適化

アーキテクチャ

実装

評価

結論

発表の流れ

2

Page 4: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

偏微分方程式の近似解を求める手法の1つ

地震シミュレーション,デジタル信号処理,流体計算などの様々な分野て利用されている

ヤコビ法における2次元ステンシル計算 * Morgan, K et.al IJNME 1983

3

v1[i][j] = (C0 * v0[i-1][j]) + (C1 * v0[i][j+1]) + (C2 * v0[i][j-1]) + (C3 * v0[i+1][j]);

Time-step k

Update data set

v1[i][j]は重み定数(C0〜C3)をかけられた4近傍の点の値を足し合わせることによって計算される

Page 5: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

演算性能 (高度に最適化している)

非効率な原因として以下の理由が挙げられる 汎用的な構造はステンシル計算に適していない 限られたメモリ帯域

そのため,FPGAべースのカスタムコンピューティングが有望

マルチコアやGPGPUにおける ステンシル計算

4

Processor Performance [GFlop/s]

Peak Sustained (efficiency)

1 core of Xeon E5220 (quad-core)

8 cores of Xeon E5220 SMP node

1 x NVidia Tesla C1016

16 x NVidia Tesla C1016

9.0

72.0

78

1248

2.8 (31%)

15.9 (22%)

51 (65%)

530 (42%)

[2]

[3]

[2] Augustin et al. Euro-Par ’09 [3] Phillips et al. IPDPS 2010

Page 6: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

背景 ステンシル計算

関連研究

多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て

計算順序の最適化

アーキテクチャ

実装

評価

結論

発表の流れ

5

Page 7: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

多数の小容量FPGAを用いたタイル型アーキテクチャシミュレータ メニーコアプロセッサの高速シミュレーション環境

ステンシル計算を高速に解くためのFPGAアレーとしてこのシステムを利用

ScalableCore システム

6

One FPGA node

FPGA

SRAM PROM

Page 8: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

実装ては,1つのFPGAに64×128個のデータ要素を割り当てる 提案手法ては,1つのFPGAに割り当てるデータセットがこのサイズに固定

される FPGA アレーを構成するノートの数を変更することによって, 計算する問題サイズ

を変更する

データセットの分割とFPGAへの割り当て

7

(a) data set of 16 x 16 elements (b) block decomposition to 4 x 4 FPGAs

Page 9: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

目的

FPGA間のデータ通信において許容てきる通信レイテンシを増やして,データ待ちによるストールを削減する

計算順序の最適化(1/7)

8 FPGA間てのデータ通信

Page 10: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

(a)と(b)を比較

計算順序の最適化(2/7)

9

・イテレーション : ある時刻て全てのデータ要素を更新する一連の処理 ・全てのデータ要素は値の計算および更新が1サイクルて終わるものとする ・各FPGAに割り当てられた16個のデータ要素の値は各イテレーションて更新

提案手法

Page 11: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

計算順序の最適化(3/7)

10

C12 C13

C8 C9

C4 C5

C0 C1

C14

C10

C6

C2

C15

C11

C7

C3

D0 D1

D4 D5

D8 D9

D12 D13

D2

D6

D10

D14

D3

D7

D11

D15

FP

GA

(C)

FP

GA

(D)

(b)

A1 A0 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15

B1 B0 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B0

A0

0 16

A1

B1

First Iteration end A0 A1

A4 A5

A8 A9

A12 A13

A2

A6

A10

A14

A3

A7

A11

A15

B0 B1

B4 B5

B8 B9

B12 B13

B2

B6

B10

B14

B3

B7

B11

B15

FP

GA

(A)

FP

GA

(B)

(a)

提案手法 C1 C0 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15

D1 D0 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D0

C0

0 16

C1

D1

First Iteration end

Page 12: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

計算順序の最適化(4/7)

11

C12 C13

C8 C9

C4 C5

C0 C1

C14

C10

C6

C2

C15

C11

C7

C3

D0 D1

D4 D5

D8 D9

D12 D13

D2

D6

D10

D14

D3

D7

D11

D15

FP

GA

(C)

FP

GA

(D)

(b)

A1 A0 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15

B1 B0 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B0

A0

0 16

A1

B1

First Iteration end A0 A1

A4 A5

A8 A9

A12 A13

A2

A6

A10

A14

A3

A7

A11

A15

B0 B1

B4 B5

B8 B9

B12 B13

B2

B6

B10

B14

B3

B7

B11

B15

FP

GA

(A)

FP

GA

(B)

(a)

B1の計算をストールさせないためには,A13 の値は3サイクル以内(14, 15, 16)に通信しなければならない

提案手法 C1 C0 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15

D1 D0 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D0

C0

0 16

C1

D1

First Iteration end

Page 13: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

計算順序の最適化(5/7)

12

C12 C13

C8 C9

C4 C5

C0 C1

C14

C10

C6

C2

C15

C11

C7

C3

D0 D1

D4 D5

D8 D9

D12 D13

D2

D6

D10

D14

D3

D7

D11

D15

FP

GA

(C)

FP

GA

(D)

(b)

A1 A0 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15

B1 B0 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B0

A0

0 16

A1

B1

First Iteration end A0 A1

A4 A5

A8 A9

A12 A13

A2

A6

A10

A14

A3

A7

A11

A15

B0 B1

B4 B5

B8 B9

B12 B13

B2

B6

B10

B14

B3

B7

B11

B15

FP

GA

(A)

FP

GA

(B)

(a)

B1の計算をストールさせないためには,A13 の値は3サイクル以内(14, 15, 16)に通信しなければならない

提案手法 C1 C0 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15

D1 D0 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D0

C0

0 16

C1

D1

First Iteration end

D1の計算をストールさせないためには,15サイクルの余裕がある

Page 14: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

計算順序の最適化(6/7)

13

提案手法

FP

GA

FP

GA

M

… …

Iteration end

N-1 cycles (a)

N

FP

GA

FP

GA

M

(b)

N

… …

Iteration end

N×M-1 cycles

N×Mのデータが割り当てられる場合,FPGAの間て許容てきる通信レイテンシはN×M−1サイクル

N×Mのデータが割り当てられる場合,FPGAの間て許容てきる通信レイテンシはN−1サイクル

Page 15: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

計算順序の最適化(7/7)

14

:計算する方向

ほほ1イテレーションの処理サイクル数まて通信レイテンシを許容

データ要素の数が増加するほど,通信レイテンシを許容てきるサイクル数は増加

多数のFPGAを使用するときは,このペアを必要な数だけ敷き詰めればよい

Page 16: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

背景 ステンシル計算

関連研究

多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て

計算順序の最適化

アーキテクチャ

実装

評価

結論

発表の流れ

15

Page 17: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

v1[i][j] = (C0 * v0[i-1][j]) + (C1 * v0[i][j-1]) + (C2 * v0[i][j+1]) + (C3 * v0[i+1][j]);

MADDにおけるステンシル計算

16

8-stages

8-stages

Page 18: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

FPGAノートのデータ要素とBlockRAMの関係

17

BlockRAM: low-latency SRAM which each FPGA has.

各FPGAに割り当てられるデータセットは縦方向に分割され, 各BlockRAM(0∼7)に格納される

1つのFPGAに64×128のデータセットが割り当てられる場合, 各BlockRAM(0~7)に,分割されたデータセット(8×128)が格納される

FPGA array 4×4 (Data is assigned)

BlockRAMs

Page 19: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

MADDとBlockRAMの関係

18

・BlockRAMに格納されたデータセットは,接続されているMADDによって計算される ・各MADDは並列に動作 ・MADDの計算結果はBlockRAMに書き戻される(時刻kからk+1に更新)

Page 20: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

単精度浮動小数点数 積和演算器(IEEE754準拠)

Xilinxのコアジェネレータによって自動生成

乗算器:7段パイプライン

加算器:7段パイプライン

MADDアーキテクチャ

19

Register

Page 21: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

20

Ser/Des Ser/Des

Clock

Reset

FPGA Spartan-6

Configuration ROM

XCF04S

JTAG port

West East

mux mux mux mux mux mux mux mux

mux8

MADD MADD MADD MADD MADD MADD MADD MADD

mux2

Ser/Des

Ser/

Des

No

rth

Sou

th

Sync

Mul

Add

0

Mux

32bit

32bit

C constant table

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7 8 9

FIFO FIFO FIFO FIFO FIFO FIFO FIFO FIFO

ノートのシステムアーキテクチャ

メモリユニット (MADDが計算した値を格納・隣接FPGAから送信される値を格納)

演算器MADD Multiply & Adder (各MADDは並列処理する)

隣接FPGAに同期信号を送信

隣接FPGAに送信する値を格納する

シリアライザ・デシリアライザ (データリカバリ・NRZI符号を使用)

Page 22: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

背景 ステンシル計算

関連研究

多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て

計算順序の最適化

アーキテクチャ

実装

評価

結論

発表の流れ

21

Page 23: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

FPGAが奇数行か偶数行かを識別する回路 データ要素の計算順序を決めるため

回路規模は非常に小さい FPGAあたりに1つのNOTゲート

位置情報の取得

22

Bottom row FPGAs

Row 1: odd row FPGAs

Row 2: even row FPGAs

Row 3: odd row FPGAs

FPGA

NOT

FPGA

NOT

FPGA

NOT

FPGA

NOT

0

1

0

1

FPGA

NOT

FPGA

NOT

FPGA

NOT

FPGA

NOT

0

1

0

1

FPGA

NOT

FPGA

NOT

FPGA

NOT

FPGA

NOT

0

1

0

1

FPGA

NOT

FPGA

NOT

FPGA

NOT

FPGA

NOT

0

1

0

1

Page 24: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

ScalableCoreシステム

23

Page 25: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

FPGA(A)をMasterと定義 Master以外のFPGAはMasterから送信される信号に同期

Master以外のFPGAは同期信号を受信するまて計算をストール

同期信号は,Masterがα +β の周期て生成 α :1イテレーションのためのステンシル計算に処理に要するサイクル数

β :各FPGAのクロックのばらつきを吸収するためのマージン

FPGAアレーの同期機構の仕組み

24

α

FPGA A

FPGA B

FPGA C

FPGA D

stall

synchronize synchronize

α α

stall stall

β β β

(Master)

Page 26: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

同期信号を受信したマスター(FPGA A)以外のFPGAノートは,左方向と下方向に同期信号を送信

同期信号は数十サイクルの幅をもつ波形 送受信ミスの防止対策

受信するFPGAては,この同期信号が数サイクル連続して1となる場合に,同期信号の受信とする

FPGAアレーの同期機構の実装

25

FPGA D

FPGA B

FPGA C

FPGA A FPGA A

FPGA B

FPGA C

FPGA D

α β

α β

Page 27: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

背景 ステンシル計算

関連研究

多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て

計算順序の最適化

アーキテクチャ

実装

評価

結論

発表の流れ

26

Page 28: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

FPGA:Xilinx Spartan-6 XC6SLX16

BlockRAM:64KB

デザインツール:Xilinx ISE Version 14.2

ハートウェア記述言語:Verilog HDL

MADDの実装:Xlinxのコアジェネレータて自動生成

MADDを1つ実装するために,DSP ブロックを 4 個を消費

1個のFPGA は,32個のDSPフロックを持つ→1個のFPGAに実装するMADDは8個

評価環境

27 The 100-Node FPGA Array

Page 29: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

Slices:99% MADD,SerDes,位置情報の取得回路,同期機構

DSP48A1: 100%

8個のMADDを実装するのに全てのDSPブロックを使用

ハートウェア資源使用率

28

Page 30: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

データセット:256×512要素

イテレーション:5,800,000回(動作周波数 40MHz て実行時間が約10分)

ステンシル計算のピーク性能と実効性能かほほ同じ

提案した,計算手法のオーバーヘットが少ない

周波数を上げるにつれて,電力量あたりの性能が向上

16ノートのFPGAアレーにおけるステンシル計算 のピーク性能と実効性能,電力効率

29

0

2

4

6

8

10

12

14

16

0.01 0.02 0.03 0.04 0.05 0.06

Pe

rfo

rman

ce[G

Flo

p/s

]

Freqency[GHz]

Peak

Effective

0

0.1

0.2

0.3

0.4

0.5

0.6

0.01 0.02 0.03 0.04 0.05 0.06

Pe

rfo

rman

ce p

er w

att

[GFl

op

/sW

]

Freqency[GHz]

Page 31: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

100ノート時の性能:83.9GFlop/s

FPGAアレー(動作周波数 60MHz)における ステンシル計算のピーク性能と実効性能

30

Intel Core i7-2700K (single thread, 3.5GHz, -O3 option)の25倍

0.1

1

10

100

1 2 4 8 16 32 64 100

Pe

rfo

rman

ce[G

Flo

p/s

]

Number of FPGA nodes

Peak

Effective

Page 32: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

電力量あたりの性能:0.57GFlop/sW (100-Node)

FPGAアレー(動作周波数 60MHz)における ステンシル計算の電力効率

31

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

1 2 4 8 16 32 64 100

Pe

rfo

rman

ce p

er

wat

t [G

Flo

p/s

W]

Number of FPGA nodes

NVIDIA GTX280 GPU cardの3.8倍

Page 33: 多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発

本研究の成果 多数FPGAを用いるステンシル計算の高性能アーキテクチャを提案

そのアーキテクチャを実現するシステムを開発

100個のFPGA のアレーシステムにおける評価および提案アーキテクチャの正当性の検証(とても安定して動作,もちろん正しく動作)

性能(100ノート) 周波数:0.06GHz (60MHz)

演算性能:83.9GFlop/s. ﹣Intel Core i7-2700K (single thread, 3.5GHz, -O3 option)の25倍

電力量あたりの演算性能:0.57GFlop/sW ﹣電力量あたりの演算性能はNvidia GTX280 GPU cardの3.8倍

今後の課題 より低電力に向けた設計

結論

32