多数の小容量fpgaを用いた スケーラブルなステンシル計算機の開発
DESCRIPTION
SACSIS2013で発表しました.TRANSCRIPT
多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発
小林諒平† 高前田(山崎) 伸也†,†† 吉瀬謙二†
† 東京工業大学 大学院情報理工学研究科
†† 日本学術振興会 特別研究員(DC1)
2013/05/24 先進的計算基盤システムシンポジウムSACSIS2013 リコンフィギャラブルコンピューティング(13:30-14:00) 発表25分,質疑5分
本研究の成果
1
1. 多数の小容量 FPGA を使用した2次元ステンシル
計算に対して,高効率な計算を実現する アーキテクチャを提案
2. 提案アーキテクチャを実現したFPGAべースの
高性能アクセラレータの実装
3. 100個の FPGA のアレーシステムにおける評価
および提案アーキテクチャの正当性の検証
背景 ステンシル計算
関連研究
多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て
計算順序の最適化
アーキテクチャ
実装
評価
結論
発表の流れ
2
偏微分方程式の近似解を求める手法の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近傍の点の値を足し合わせることによって計算される
演算性能 (高度に最適化している)
非効率な原因として以下の理由が挙げられる 汎用的な構造はステンシル計算に適していない 限られたメモリ帯域
そのため,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
背景 ステンシル計算
関連研究
多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て
計算順序の最適化
アーキテクチャ
実装
評価
結論
発表の流れ
5
多数の小容量FPGAを用いたタイル型アーキテクチャシミュレータ メニーコアプロセッサの高速シミュレーション環境
ステンシル計算を高速に解くためのFPGAアレーとしてこのシステムを利用
ScalableCore システム
6
One FPGA node
FPGA
SRAM PROM
実装ては,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
目的
FPGA間のデータ通信において許容てきる通信レイテンシを増やして,データ待ちによるストールを削減する
計算順序の最適化(1/7)
8 FPGA間てのデータ通信
(a)と(b)を比較
計算順序の最適化(2/7)
9
・イテレーション : ある時刻て全てのデータ要素を更新する一連の処理 ・全てのデータ要素は値の計算および更新が1サイクルて終わるものとする ・各FPGAに割り当てられた16個のデータ要素の値は各イテレーションて更新
提案手法
計算順序の最適化(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
計算順序の最適化(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
計算順序の最適化(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サイクルの余裕がある
計算順序の最適化(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サイクル
計算順序の最適化(7/7)
14
:計算する方向
ほほ1イテレーションの処理サイクル数まて通信レイテンシを許容
データ要素の数が増加するほど,通信レイテンシを許容てきるサイクル数は増加
多数のFPGAを使用するときは,このペアを必要な数だけ敷き詰めればよい
背景 ステンシル計算
関連研究
多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て
計算順序の最適化
アーキテクチャ
実装
評価
結論
発表の流れ
15
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
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
MADDとBlockRAMの関係
18
・BlockRAMに格納されたデータセットは,接続されているMADDによって計算される ・各MADDは並列に動作 ・MADDの計算結果はBlockRAMに書き戻される(時刻kからk+1に更新)
単精度浮動小数点数 積和演算器(IEEE754準拠)
Xilinxのコアジェネレータによって自動生成
乗算器:7段パイプライン
加算器:7段パイプライン
MADDアーキテクチャ
19
Register
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符号を使用)
背景 ステンシル計算
関連研究
多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て
計算順序の最適化
アーキテクチャ
実装
評価
結論
発表の流れ
21
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
ScalableCoreシステム
23
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)
同期信号を受信したマスター(FPGA A)以外のFPGAノートは,左方向と下方向に同期信号を送信
同期信号は数十サイクルの幅をもつ波形 送受信ミスの防止対策
受信するFPGAては,この同期信号が数サイクル連続して1となる場合に,同期信号の受信とする
FPGAアレーの同期機構の実装
25
FPGA D
FPGA B
FPGA C
FPGA A FPGA A
FPGA B
FPGA C
FPGA D
α β
α β
背景 ステンシル計算
関連研究
多数の小容量FPGAを用いたスケーラブルな ステンシル計算手法 データセットの分割とFPGAへの割り当て
計算順序の最適化
アーキテクチャ
実装
評価
結論
発表の流れ
26
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
Slices:99% MADD,SerDes,位置情報の取得回路,同期機構
DSP48A1: 100%
8個のMADDを実装するのに全てのDSPブロックを使用
ハートウェア資源使用率
28
データセット: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]
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
電力量あたりの性能: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倍
本研究の成果 多数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