11. Comparison between (a) and (b) (2/2)
A0 A1 A2 A3
First Iteration end
0 16
FPGA(A)
A4 A5 A6 A7
A8 A9 A10 A11 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A0 A1
A12 A13 A14 A15 …
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B0 B1
B0 B1 B2 B3
In order not to stall the computation
FPGA(B)
B4 B5 B6 B7
of B1, the value of A13 must be
B8 B9 B10 B11
communicated within three cycles
(a) B12 B13 B14 B15 (14, 15, 16) after the computation…
Proposed C12 C13 C14 C15 0 First Iteration end 16
method
FPGA(C)
C8 C9 C10 C11 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C0 C1
C4 C5 C6 C7 …
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D0 D1
C0 C1 C2 C3
D0 D1 D2 D3
FPGA(D)
D4 D5 D6 D7
D8 D9 D10 D11
(b) D12 D13 D14 D15 10
12. Comparison between (a) and (b) (2/2)
A0 A1 A2 A3
First Iteration end
0 16
FPGA(A)
A4 A5 A6 A7
A8 A9 A10 A11 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A0 A1
A12 A13 A14 A15 …
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B0 B1
B0 B1 B2 B3
In order not to stall the computation
FPGA(B)
B4 B5 B6 B7
of B1, the value of A13 must be
B8 B9 B10 B11
communicated within three cycles
(a) B12 B13 B14 B15 (14, 15, 16) after the computation…
Proposed C12 C13 C14 C15 0 First Iteration end 16
method
FPGA(C)
C8 C9 C10 C11 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C0 C1
C4 C5 C6 C7 …
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D0 D1
C0 C1 C2 C3
D0 D1 D2 D3
FPGA(D)
D4 D5 D6 D7
In order not to stall the
D8 D9 D10 D11 computation of D1 of Iteration 2
(17th cycle), the margin to send
(b) D12 D13 D14 D15 11
value of C1 (1st cycle) is 15 cycles
13. Comparison between (a) and (b) (N×M grid-points)
N If the N×M grid-points are assigned to a
single FPGA, every shared value must be
communicated within N–1cycles
FPGA
M Iteration end
… …
FPGA
(a) N-1 cycles
If the N×M grid-points are assigned to a
Proposed N
single FPGA, every shared value must be
method
communicated within N×M–1cycles
FPGA
M Iteration end
… …
FPGA
N×M-1 cycles 12
(b)
14. Computing Order Applied Proposed Method
:computation order
? この提案手法により約1イテレーションの許容できる通信レイテンシを確保
? 格子点の数が増加するほど,許容できる通信レイテンシはスケールする
13
16. System Architecture
Configura on ROM
XCF04S
Ser/Des
North
Clock FPGA
Spartan-6
Reset
Sync
mux2
Memory unit (BlockRAMs)
W 0 1 2 3 4 5 6 7 E Computation unit
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 (Multiply and Adder)
mux mux mux mux mux mux mux mux
MADD MADD MADD MADD MADD MADD MADD MADD
Ser/Des
Ser/Des
West East
mux8
South
Ser/Des
15
17. Relationship between The Data Subset and
BlockRAM(Memory unit)
BlockRAM: low-latency SRAM which each FPGA has.
FPGA array 4×4 BlockRAMs
(Data is assigned)
The data set which assigned to each FPGA is split in the
vertical direction, and is stored in each BlockRAM (0~7)
If the data set of 64×128 is assigned to one FPGA, the split data set
(8×128) is stored in each BlockRAM (0~7).
16
18. Relationship between MADD and
BlockRAM(Memory unit)
?The data set stored in each
BlockRAM is computed by each MADD.
?Each MADD performs the
computation in parallel.
?The computed data is stored in
BlockRAM.
17
19. MADD Architecture(Computation unit)
? MADD
? Multiply: seven pipeline stages
? Adder: seven pipeline stages
? Both multiply and adder are single precision floating-point unit which
conforms to IEEE 754.
18
30. MADD Pipeline Operation (in cycles 0?7)
? The computation of grid-points 11~18 8
7
6
5
The grid-points 1~8 are loaded from 4
3
BlockRAM and they are input to the 2
1
multiplier in cycles 0~7. 8-stages
Input2(adder)
8-stages
Input1(adder)
29
31. MADD Pipeline Operation (in cycles 8?15)
? The computation of grid-points 11~18 17
16
15
14
13
The computation result is output from 12
11
multiplier, at the same times, grid-points 10
10~17 are input to the multiplier in 8 8-stages
7
cycles 8~15. 6
5
4
3
Input2(adder) 2 8-stages
1
Input1(adder)
30
32. MADD Pipeline Operation (in cycles 16?23)
? The computation of grid-points 11~18 19
18
17
16
The grid-points 12~19 are input to the 15
14
multiplier, at the same time, value of grid- 13
12
points 1?8 and 10~17 multiplied by a 8 17
7 16 8-stages
weighting factor are summed in cycles 16~ 6 15
5 14
23. 4 13
3 12
2 11 8-stages
Input2(adder) 1 10
Input1(adder)
31
35. MADD Pipeline Operation (in cycles 40?48)
? The computation of grid-points 11~18 27
26
25
24
The computation results that data of up, down, 23
22
left and right gird-points are multiplied by a 21 18
20 17
weighting factor and summed are output in 16
cycles 40~48. 15 8-stages
14
13
Input2(adder) 12
11
8 17 19 28 8-stages
7 16 18 27
6 15 17 26
5 14 16 25
4 13 15 Input1(adder)
24
3 12 14 23
2 11 13 22
1 10 12 21
34
36. MADD Pipeline Operation(Computation unit)
?The filing rate of the pipeline: (N-8/N)×100% (N is
cycles which taken this computation.)
? Achievement of high computation performance and the small circuit area
? This scheduling is valid only when width of computed grid is equal to the
pipeline stages of multiplier and adder.
35
44. 同期机构の设计
? FPGAノード(A)をMasterノードと定義
? 各FPGAノードはMasterノードからα +β の周期で送信される信号に同期して計算
を実行
? 同期信号を受信するまで,Masterノード以外のノードは計算をストール
synchronize synchronize
α β α β α β α :1 イテレーション間におけ
A るステンシル計算に要するサ
イクル
stall stall stall
B β :各FPGAノードのクロック
のずれを吸収するマージン
C
D
43
45. 同期機構の実装
? 各FPGAノードはMasterノードからα +β の周期で送信される信号に同期して計算
を実行
? 同期信号を受信するまで,Masterノード以外のノードは計算をストール
? 信号を受信したFPGAノードは数サイクル待ってから,左方向と下方向に同期信
号を送信し,計算を再開
α β
A α β
A
B
master B
for anti-chattering
C
C D
D
for anti-chattering
44
48. Environment (Performance of Single FPGA Node)
? FPGA:Xilinx Spartan-6 XC6SLX16
? BlockRAM: 64KB
? Design tool: Xilinx ISE webpack 13.3
? Hardware description language: Verilog HDL
? Implementation of MADD:IP core generated by Xilinx core-generator
? Implementing single MADD expends four pieces of 32 DSP-blocks which a Spartan-6
FPGA has.
◇ Therefore, the number of MADD to be able to be implemented in single FPGA is
eight
SRAM is not used.
ScalableCore board
47
49. Performance of Single FPGA Node(1/2)
? Grid-size:64×128
? Iteration:500,000
? Performance and Power Consumption(160MHz)
? Performance:2.24GFlop/s
? Power Consumption:2.37W
Peak performance[GFlop/s]
Peak = 2×F×NFPGA×NMADD×7/8
Peak:Peak performance[GFlop/s]
F:Operation frequency[GHz]
NFPGA:the number of FPGA
NMADD:the number of MADD
7/8: Average utilization of MADD unit
→ The four multiplications and the three additions
v1[i][j] = (C0 * v0[i-1][j]) + (C1 * v0[i][j+1]) +
(C2 * v0[i][j-1]) + (C3 * v0[i+1][j]);
48
50. Performance of Single FPGA Node(2/2)
? 演算性能 (160MHz)
? 2.24GFlop/s
26% of Intel Core i7-2600 (single
thread, 3.4GHz, -O3 option)
? 電力あたりの演算性能:0.95GFlop/sW
Performance/W value is about six-times
better than Nvidia GTX280 GPU card.
Nvidia GTX 280 card
? ハードウェア資源使用率
? LUT: 50%
? Slice: 67%
? BlockRAM: 75%
? DSP48A1: 100% 49