FPGAを⽤いた
⾼性能計算の可能性とデータフロープログラミング
佐野健太郎

理化学研究所 計算科学研究機構 プロセッサ研究チーム
東北⼤学 ⼤学院情報科学研究科
15 Dec, 2017概要
 マルチコアアーキテクチャの今後

 ポストムーア時代を⽣き延びる⽅法とは︖
 FPGAを⽤いた⾼性能計算

 最近の話題 データフロー計算システム
 密結合FPGAクラスタ
 データフローに基づく

プログラミング
 事例
 まとめ

2

第17回 PCクラスタシンポジウム

15 Dec, 2017

ムーアの法則
微細化により 18~24ヶ⽉ごとにチップ上のトランジスタは倍増

CMOS性能向上の鍵

デナードスケーリング則トランジスタの⼨法に⽐例して電圧と電流は低減

講演@CAE計算環境研究会

34 Dec, 2017

マルチコアスケーリングはいつまで続くか︖
デナード則の破綻

性能

単体コアの性能向上
マイクロプロセッサ
性能爆発時代

メインフレームの時代
×1.5 / 年

ムーアの法則デナードスケーリング則×1.3 / 年

1960

1970

1980

1990

2000

?

マルチコアの時代
×1.22 / 年

トランジスタ数は18～24ヶ月で倍→計算機の性能は18～24ヶ月で倍これはもう終わり
2010

年

FIT2016 天野英晴「ポストムーア時代の計算プラットフォーム」パネルスライドより
4

第17回 PCクラスタシンポジウム

15 Dec, 2017

マルチコアスケーリングの終焉
さらに⾼集積化が進み、コアが多数となったとしてもQ1. 消費電⼒を⼀定以下に抑えられるか︖
いいえ。 電⼒制約のために⼀部のコアは稼働できなくなりますQ2. 全コアに対し⼗分な並列性があるか︖
いいえ。 並列性不⾜のために⼀部のコアは性能に寄与しません

第17回 PCクラスタシンポジウム

5

15 Dec, 2017

Microprocessor Trend in 40 Years
Semiconductor
Scaling

1.5um

0.8um 350nm 180nm 90nm 45nm 20nm
1um 0.5um 250nm 130nm 65nm 28nm 14nm

トランジスタ数Transistors(x103)

Single‐thread
シングルコア
性能performance(SpecINT x103)
動作周波数
Frequency(MHz)

Typical
電⼒（W）
power (W)
コア数
# ofcores

2020
Original data up to the year 2010 collected and plotted by M. Horowitz, F. Labonte, O. Shacham, K. Olukotun, L. Hammond, and C. Batten,
New plot and data collected for 2010-2015 by K. Rupp, and Trend lines drawn by K.Sano

6

第17回 PCクラスタシンポジウム

15 Dec, 2017

Mooreʼs Law is Ending.
Semiconductor
Scaling107

微細化の停滞 or 停⽌,
Tr.コストの増⼤(Bogus scaling, Fab cost)

0.8um 350nm 180nm 90nm 45nm 20nm 10nm 7nm
1um 0.5um 250nm 130nm 65nm 28nm 14nm

1.5um

ばらつきの増⼤5nm?

3nm?

Transistors
トランジスタ数106
シングルコア性能
Thread perf.

105

シングルコア
⻩⾦時代

104

動作周波数
Frequency

103

デナード
則の破綻

102

電⼒Power
コア数
Cores101

マルチコアの時代

100
1970

1980

1990

2000

Year
第17回 PCクラスタシンポジウム

72010

トランジスタ電⼒
減少せず,
2020
チップ電⼒の壁.
(Dark silicon)
15 Dec, 2017

ポストムーアを⽣き延びる限界を迎える技術△
 ダークシリコン× 信号伝搬やメモリ参照の遅延 ×
 単⼀チップ上の集積度向上

発展が期待できる技術
 パッケージ・システム
レベルの集積 （多チップ）○
 チップ内外のI/O帯域○（2.5D, 3D, 光電⼦技術, …）

多数のチップにより与えられた膨大な数のトランジスタを増大する信号遅延の下でも 効率良く使う アーキテクチャが必要
8

第17回 PCクラスタシンポジウム

15 Dec, 2017

ノイマン型 v.s. データフロー
xi
レジスタ
ファイルxx+ALU+

命令デコーダxxixi
CAxx

B
x++yi

マイクロプロセッサ （ノイマン型）

データフロー （⾮ノイマン型）
 サイクル ⇒ フロー

 メモリ更新サイクル
 制御サイクル （実⾏中の決定） 逐次実⾏ ⇒ 遅延の影響⼤ マルチコア︓メモリを介した⾮効率なデータ移動や同期

 制御 ⇒ 構造 （実⾏前の決定） 演算とデータ移動の融合
 遅延を許容 （パイプライン）
規則的な⼤量データ処理向き

第17回 PCクラスタシンポジウム

915 Dec, 2017

FPGA ︓ カスタムハードウェアを実現
ロジックブロック

整数・浮動⼩数点演算器
配線とスイッチブロック
オンチップ
メモリブロック

High-speed I/O(PCI-Express, 10G Ethernet
Interlaken, serial transceiver)
Memory I/F (DDR4, HBM, etc.)

日経エレクトロニクス2016年月号

ロジックというよりは 演算器・メモリ・高速I/Oの巨大アレイ浮動小数点に対応、動作周波数はまもなく 1GHz近く へ10

第17回 PCクラスタシンポジウム

15 Dec, 2017

⽬標・チャレンジ
来るべきポストムーア時代の⾼性能計算機アーキテクチャ・並列計算モデル
ポストムーア時代
 メニーコアのみでは⾮効率、しかし膨⼤な数のチップ 「カスタム化の導⼊、⼤域的同期を避けた並列計算」が有望チャレンジとアプローチ
 適したアーキテクチャは︖
プログラミングモデルは︖

専⽤＆汎⽤ ⇒ FPGA
局所的な同期 ⇒ データフロー

研究課題
 FPGA・カスタムハードウェアを利⽤した計算の⾼速化
 データフロープログラミングモデルと動的実⾏の処理系
11

第17回 PCクラスタシンポジウム

15 Dec, 2017

FPGAに関する最近の話題

12

第17回 PCクラスタシンポジウム

15 Dec, 2017

$16.7B Acquisition of ALTERA by Intel(2015)

intelALTERA(FPGA vendor)
13

第17回 PCクラスタシンポジウム

15 Dec, 2017

FPGAのデータセンター利⽤の広がり

Search engine w/ FPGAs

High-speed trading w/ FPGAs

Xeon & FPGA
with QPIPower & FPGA
with CAPIDeep learning w/ FPGAs

Data centers w/ FPGAs

FPGAs are now serving applications for end users.
14

第17回 PCクラスタシンポジウム

15 Dec, 2017

FPGA Wins Versus
Google TPUs for AI
Microsoftʼs Project Brainwave
 DNN processor (DPU) that is programmed/synthesizedon 14nm Stratix10 FPGAs fordeep learning in could services
 Accelerators linked acrosshigh bandwidth, low-latency
fabric to dynamically allocate
the resources to optimize theirutilization.
 Significant performanceadvantages overGoogleʼs TensorFow (ASIC)[Microsoft HotChips2017]https://www‐forbes‐com.cdn.ampproject.org/c/s/www.forbes.com/sites/moorinsights/2017/08/28/microsoft‐fpga‐wins‐versus‐google‐tpus‐for‐ai/amp/

15

第17回 PCクラスタシンポジウム

15 Dec, 2017

FPGAs in AWS (Amazon Web Services)[Amazon HotChips2017]16

FPGAのクラウド利用・サービスが進む
第17回 PCクラスタシンポジウム

15 Dec, 2017

FPGAによる⾼性能データフロー計算システム

第17回 PCクラスタシンポジウム

17

15 Dec, 2017

⽬標とする計算モデルとアーキテクチャ
Allocation, Scheduling > automatedSynchronization > localized
FPGAs / CPUs

Inter-FPGA network
memory /storage

CPUs

Task(kernel)

node
Memory FPGAFPGAMemoryMemoryFPGAGlobalnetwork

Main memory
CoreCoreCore

memory /storagememory /storage

⼤域データフロー実⾏モデル
18CoreCoreCoreMFMemC C

CPU’s network

FPGA拡張部を有する計算ノード

第17回 PCクラスタシンポジウム

15 Dec, 2017

Node 1

研究開発の進捗
密結合FPGAクラスタの試作

Node 2

 システムオンチップデザイン
 ソフトウェアスタック（driver, API）
 データフローコンパイラ アプリによる性能評価（津波, 流体）

4 boards
per node

Node 3

DE5A-NET Board

QSFP+
40G Ether
40G QSFP+ A (tx,rx)
40G QSFP+ B (tx,rx)

データフローコンパイラの改良

DDR3 DRAM A
PC3-17000 (DDR3-2133)

 FPGAパイプライン
 N-Body（ストリームレジスタファイル）
 流体計算（帯域圧縮）
 2D トーラス網

QDR II+SRAM D

17.1
GB/s

x18@
550MHz

1GB/s forread/write

17.1
GB/s

ALTERA
Arria10 FPGA x64@
1066MHz
10AX115(DDR)FPGA

40G QSFP+ C (tx,rx)
40G QSFP+ D (tx,rx)

 グラフパッキングの⾃動探索

PCIe 3.0 x 8 : 8GB/s

QDR II+SRAM A

QDR II+SRAM BQDR II+ 18 Mbits each
SRAM C (20-bit addressing for 18-bit data)QDRII SRAM

PCI-Express

Arria10 FPGA
(20nm, floating-point DSPs)

 可変部︓ユーザコア

 データフローコンパイラで⽣成

FPGA

FPGA Shell
不変のハードウェア部

DDR3memory

4GB each as default(up to 8GB)
40Gbps each (tx,rx)

第17回 PCクラスタシンポジウム

19DDR3 DRAM B
PC3-17000 (DDR3-2133)

Node 4

複数FPGAによるスケーラブル計算

15 Dec, 2017

QSFP+ AQSFP+ BQSFP+ CQSFP+ D40G
SERDES40G
SERDES40G
SERDES40G
SERDES

Router / interconnect

 アプリに共通の機能を提供

 メモリ I/F, PCIe I/F, NW I/F
オンチップインタコネクト

Data-flow
pipeline ホスト側のシステムソフト

DFpipe

…

DF
pipe

QSFP+
40G Ether

40G QSFP+ A (tx,rx)
40G QSFP+ B (tx,rx)

DDR3 DRAM A
PC3-17000 (DDR3-2133)

DE5A-NET BoardQDR II+SRAM D

17.1
GB/s

x18@
550MHz

1GB/s forread/write

ALTERA
Arria10FPGA x64@
FPGA
1066MHz
10AX115(DDR)

40G QSFP+ C (tx,rx)
40G QSFP+ D (tx,rx)

40Gbps each (tx,rx)
PCIe 3.0 x 8 : 8GB/s

2017.1GB/s

QDR II+SRAM A

QDR II+SRAM B

PCI-Express

DDR3 DRAM B
PC3-17000 (DDR3-2133)

 ドライバ, API

DDR3memory

PCIe
I/F

DDR3 I/F 1

DDR3 I/F 2

Host

DDR3 A

DDR3 B

Gen2x84GB each as default(up to 8GB)QDR II+ 18 Mbits each
QDRII
SRAM
(20-bitaddressingfor 18-bit data)
SRAM CFPGA Shellのブロック図
第17回 PCクラスタシンポジウム

15 Dec, 2017

アプリ ステンシル計算

 LBM, 津波シミュ 多体問題 今後の計画Fluid dynamics simulation (LBM) Deep learning Spiking neural network

Tsunami simulation
N-Body21

第17回 PCクラスタシンポジウム

15 Dec, 2017

データフローに基づくプログラミング

22

第17回 PCクラスタシンポジウム

15 Dec, 2017

データフローに基づく
ストリーム計算回路コンパイラ SPGen
既存の⾼位合成（HLS）コンパイラの問題
いわゆるHLSコンパイラ（Vivado-HLS, CWB）

SW⾔語でHW（IP core）を記述
計算を即実⾏できない（システムは別）システムHLSコンパイラ（OpenCLなど）

システム全体を合成し、計算が即実⾏可
SWモデルに限定、最適化が困難

いずれにしても、複数FPGAをプログラムできない︕

本研究 : Stream Processor Generator （SPGen）
 データフロー計算モデルに特化した⾼抽象度⾔語
 数式のみの記述で計算を実⾏可 データフローグラフの形状・HW構造を制御可、最適化が容易 将来は、密結合された複数FPGA上のデータフローをプログラム第17回 PCクラスタシンポジウム

2315 Dec, 2017

Stream Processing Description (SPD)
x_in
Name
Main_In
Main_OutPE;### Define pipeline “PE”
{in:: x_in, y_in};{out::x_out, y_out};

EQU
EQU
EQU
EQU

t1
= x_in * y_in;t2= x_in / y_in;
x_out = t1 + t2;
y_out = t1 - t2;

eq1,eq2,eq3,eq3,

数式記述
Name
Main_In
Main_OutCore;### Define IP core “Core”{in:: x0_0, x0_1, y0_0, y0_1};{out::x2_0, x2_1, y2_0, y2_1};### Description of parallel pipelines for t=0
HDL pe10, 123, (x1_0, y1_0) = PE(x0_0, y0_0);
HDL pe11, 123, (x1_1, y1_1) = PE(x0_1, y0_1);### Description of parallel pipelines for t=1
HDL pe20, 123, (x2_0, y2_0) = PE(x1_0, y1_0);
HDL pe21, 123, (x2_1, y2_1) = PE(x1_1, y1_1);

モジュール呼出し24

第17回 PCクラスタシンポジウム

xy_in/+-x_out

y_out

計算コア（DFG）
x0_0 y0_0

x0_1 y0_1

PE
pe10

PE
pe11

x1_0 y1_0

x1_1 y1_1

PEpe20

PEpe21x2_0 y2_0

x2_1 y2_1

階層的ハードウェア構造
15 Dec, 2017

SPGenツールチェイン
FINISHSTART SPD ファイル•

HW のコンパイル•

ビットストリーム⽣成

SPGen

NEW!

DFG 最適化ツール
ReAlEx（開発中）

FPGAコンパイラ•

フロー制御ラッパー⽣成•

パイプライン同⼠の接続
スケジューリング

•FP-DSP の最適割当て••

演算ノードクラスタリング

FPGen

式からパイプライン⽣成
多⼊⼒・多出⼒
FP-DSP 利⽤可•••

FloPoCo

最適化済み
SPD ファイル

式からパイプライン⽣成
多⼊⼒・単出⼒
FP-DSP 利⽤不可•••

第17回 PCクラスタシンポジウム

25

データフロー
コンパイルの流れ

15 Dec, 2017

DFGのHW資源への最適マッピングを探索
a

Main_In
Main_Out{in:: a, b, c, d, e, f};{out:: x, y};

EQU
EQU
EQU
EQU

t1t2xybcxdx= a*b + c*d;
= c/d – e;
= t1*t2 + 123;
= t1 - t2 + f;

123

SPD (Stream Processing Description)a b c d e f
pipe
“t1”

pipe
“t1”

pipe
“t2”

pipe
“x & y”xay
26

Streamprocessor
generator(SPGen)

pipe
“t2”

pipe
“x & y”

x

-++x

y

b cdt1

Formulapipeline
generator(FPGen) x

第17回 PCクラスタシンポジウム

f/+eq1,eq2,eq3,eq4,

ee ft2

ReAlEx(clustering,resourcemapping)x&y

y15 Dec, 2017

数値流体⼒学計算への応⽤事例

Arria10 FPGAによる津波シミュレーション
第17回 PCクラスタシンポジウム

2715 Dec, 2017

複数ループの融合と単⼀ストリーム化
時間積分のループ

時間積分のループ初期化

初期化

x方向正準変換

外部メモリ
x方向スイープ

x方向主計算x方向正準変換
x方向主計算x方向逆変換

x方向逆変換

y方向
スイープ

y方向
N

y方向
N

終了判定
Y

終了判定
Y

元のアルゴリズム（各ループの度にメモリを参照）
28

x方向
スイープ

ストリーム化したアルゴリズム(最初と最後のみメモリ読書き)

第17回 PCクラスタシンポジウム

15 Dec, 2017

x方向の関連モジュール

x方向主計算モジュール

y方向の関連モジュール

ストリーム計算要素
SPE
8 入力, 8 出力, 288 演算器
3273 段のパイプライン

データフローに基づく計算ハード(加算147, 乗算121, 除算12, 平方根2)
29

講演@CAE計算環境研究会

4 Dec, 2017

時間並列性による性能向上
時間並列性無し
t=1
SPE

時間並列性あり

SPE

t=1
SPE

t=2

SPE

t=3

SPE

パイプラインの多段化
帯域⼀定のまま性能向上〜6 SPEs

連続する複数タイムステップを並列に計算（粗粒度パイプライン）
30

第17回 PCクラスタシンポジウム

15 Dec, 2017

単⼀Arria10 FPGAによる計算性能と電⼒
3509383.0
383GF
320.6

Idle power(programmed)

300

200

150
257.5

250

219GF
219.2
193.6

200
150
100

91.5W
91.5
W

129.4

45.5W
45.5 W
64.8

50

44.6GF
44.6

50
0100

Power [W]

Performance [GFlops]

185WW
184.9

Performance
Computation Power

Performance per Power [GFlops/W]

400

8.42
8.42

8

7.44

7

6.36

6x 7.1

5.32

5
3.83

43
2.23
2

1.19
1.19

112345

SPEs on Arria10 FPGA at 225MHz

Arria10 FPGA

6Tesla Radeon
K20c R9 280X
GPUs

00

GPUs

Performance and power of board

0.49
0.49
123456

SPEs on Arria10 FPGA at 225MHz

Arria10 FPGA

Tesla Radeon
K20c R9 280X
GPUs

GPUs

Performance per power

Arria10 FPGAはGPUよりも優れた性能と電力性能比
第17回 PCクラスタシンポジウム

31

15 Dec, 2017

おわりにポストムーアを⽣き延びる⽅法
 カスタムハードウェアによる特化型計算 データフロー計算⇒ ⾼効率化⇒ ⼤域的同期を回避

FPGAによるデータフロー計算
 既に⾼性能・低消費電⼒計算デバイス
 産業応⽤や⾼性能計算事例 課題・プログラミング・最適化
・膨⼤な配置配線時間（回路のコンパイル=数時間〜）
・⼤規模システムにおけるスケーラビリティ
異アーキテクチャ、異プログラミング⼿法が⽣まれる
カンブリア爆発的 多様化 時代 の到来
32

第17回 PCクラスタシンポジウム

15 Dec, 2017