Upload
vincent-hernandez
View
21
Download
0
Embed Size (px)
DESCRIPTION
大規模再構成可能データパスにおける 実行前処理削減方式の検討. ○片岡広志 a) , 本田宏明 b) , Farhad Mehdipour a) , 井上弘士 a) , 村上和彰 a) a) 九州大学、 b) ISIT. 発表の流れ. 背景 提案 手法 性能評価実験 おわりに. 研究背景. PowerXcell を 搭載したスーパーコンピュータ 「 Roadrunner 」. NVIDIA 「 Tesla S1070 」. - PowerPoint PPT Presentation
Citation preview
大規模再構成可能データパスにおける実行前処理削減方式の検討
○ 片岡広志 a) ,本田宏明 b) ,Farhad Mehdipour a) ,
井上弘士 a) ,村上和彰 a)
a) 九州大学、 b) ISIT
1
発表の流れ
• 背景• 提案手法• 性能評価実験• おわりに
2
研究背景• High Performance Computing (HPC) 分野では汎用プロ
セッサ (GPP) を集積したスーパコンピュータが主流– 背景: GPP の低コスト化– 方針: GPP の低い演算性能をプロセッサ数で補う
• 「 GPP+ アクセラレータ」方式も注目されている– アクセラレータ:演算性能を重視したハードウェア
• 多数の演算器の並列演算– GPP は演算負荷が高い処理をアクセラレータに実行させる– 例: PowerXcell, ClearSpeed, Tesla, GRAPE-DR, FPGA, etc.
3http://www.top500.org/system/9485
PowerXcell を搭載したスーパーコンピュータ「 Roadrunner 」
3http://www.elsa-jp.co.jp/products/hpc/tesla/s1070/index.html
NVIDIA 「 Tesla S1070 」
大規模再構成可能データパスの提案(LSRDP: Large-Scale Reconfigurable Data-Path)
• アクセラレータではメモリウォール問題が深刻化– 多数の並列演算によるメモリプレッシャーの増加
• メモリバンド幅の有効利用が重要– (GPU では ) メモリのマルチバンク・マルチポート化– 一方,単一ポートからの連続アクセスでもメモリバンド幅の有効利用
は可能
444
大規模再構成可能データパスの提案– ストリーム処理方式
連続アクセス限定のメモリアクセス方式 DRAM のバースト転送機能を用いメモリバンド幅を有効
利用– 2D-array 型演算器によるデータパス方式の利用
演算器間の直接データ転送 メモリアクセス回数を削減しメモリウォール問題の影響を低減
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
LSRDP の動作
5
ソースコード
大規模データパスの再構成主記憶上データの再配置loop;
ループボディ end
・・・
・・・LSRDP が主記憶から連続アクセスで読み出せるように入力データを生成
Heat Poi Vib ERI0
1
2
3
4
5
6
再構成通信再配置LSRDPストールLSRDP演算GPP
LSRDP の実行における問題点
6
•再配置時間が支配的• GPP を用いて主記憶へのランダムアクセスにより実行
LSRDP 実行時間
GPP 実行時間
実行時オーバーヘッド
実行時間(GPP 単体による実行時間で正規化 )
性能向上のためには再配置時間の削減が必要
※ 評価環境については後述
発表概要
• 目的– 再配置 ( 実行前処理 ) 時間の削減
• 手法– プログラム作成時にデータ構造を変更– GPP を用いずに再配置を実行
• LSRDP を用いて再配置を実行• 重複化専用ハードウェアを SMAC 上に導入し再
配置処理を削減
7
発表の流れ
• 背景• 提案手法
– 従来の再配置手法– データ構造の変更– データの重複作成
• 性能評価実験• おわりに
8
従来の再配置手法 (1/4)
再構成loop n
入力ストリーム用データ生成 LSRDP 計算
(DFG : a(n+1)[i] = a(n)[i-1] + a(n)[i] + a(n)[i+1] + a(n-1)[i])
出力ストリームデータの書戻しend
LSRDP 向けコード
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
Main Mem.
...a(n)[1] a(n)[i+M]a(n)[0]a(n-1)[1]a(n-1)[0] ...a(n-1)[i+M]a(n-1)[]: a(n)[]:
計算対象の配列はメモリ上離れた箇所に分散保持
9
従来の再配置手法 (2/4)
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
Main Mem.
...a(n)[1] a(n)[i+M]a(n)[0]a(n-1)[1]a(n-1)[0] ...a(n-1)[i+M]a(n-1)[]: a(n)[]:
... a(n-1)[i+M] a(n)[i+M]a(n)[0]a(n-1)[0] a(n)[1]a(n-1)[1]X(n)[]:
LSRDP 計算の入力順に並び変えた入力用データ配列 X[] の生成GPP により主記憶へのランダムアクセスを行う必要あり
再構成loop n
入力ストリーム用データ生成 LSRDP 計算
(DFG : a(n+1)[i] = a(n)[i-1] + a(n)[i] + a(n)[i+1] + a(n-1)[i])
出力ストリームデータの書戻しend
LSRDP 向けコード
10
... a(n-1)[i+M] a(n)[i+M]a(n)[0]a(n-1)[0] a(n)[1]a(n-1)[1]X(n)[]:
... a(n+m-1)[] a(n+m)[]a(n+m)[0]a(n+m-1)[0] a(n+m)[1]a(n+m-1)[1]X(n+m)[]:
従来の再配置手法 (3/4)
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
Main Mem.
LSRDP 計算により X(n)[] から X(n+m)[] が生成X(n)[] の読み込みと X(n+m)[] の書き込みの際に連続アクセス可能
再構成loop n
入力ストリーム用データ生成 LSRDP 計算
(DFG : a(n+1)[i] = a(n)[i-1] + a(n)[i] + a(n)[i+1] + a(n-1)[i])
出力ストリームデータの書戻しend
LSRDP 向けコード
11
従来の再配置手法 (4/4)
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
Main Mem.
...a(n+m)[1] ...a(n+m)[0]a(n+m-1)[1]a(n+m-1)[0] ......a(n+m-1)[]: a(n+m)[]
... a(n+m-1)[] a(n+m)[]a(n+m)[0]a(n+m-1)[0] a(n+m)[1]a(n+m-1)[1]X(n+m)[]:
X[] から a[] への書戻しGPP により主記憶へのランダムアクセスを行う必要あり
再構成loop n
入力ストリーム用データ生成 LSRDP 計算
(DFG : a(n+1)[i] = a(n)[i-1] + a(n)[i] + a(n)[i+1] + a(n-1)[i])
出力ストリームデータの書戻しend
LSRDP 向けコード
12
データ構造の変更
• 従来方式ではプログラム実行時に入力ストリームを生成
• 本手法ではプログラム作成時にストリーム処理を意識したデータ構造を作成
13
Main Mem.
...a(n)[1] a(n)[i+M]a(n)[0]a(n-1)[1]a(n-1)[0] ...a(n-1)[i+M]a(n-1)[]: a(n)[]:
... a(n-1)[i+M] a(n)[i+M]a(n)[0]a(n-1)[0] a(n)[1]a(n-1)[1]X(n)[]:
…
…
…
データ構造の変更による問題点
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
Main Mem.
X(n)[]:
X(n+m)[]:
入力4,出力2のDFG 計算
計算結果 X(n+m)[] を再び入力データとして使用する際,更新されていないデータが存在する
14
…
…
データの重複化による入力ストリーム向けデータ構造の再生成
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
Main Mem.
X(n)[]:
X(n+m)[]:
入力4,出力2のDFG 計算
• データを両隣からコピー(データの重複化)することで入力ストリーム向けデータ構造を再生成
• GPP を使用すると多数のランダムアクセスが発生LSRDP を用いる方式重複化専用 HW を導入する方式
15
…
LSRDP を用いたデータの重複化(1/2)
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
Main Mem.
重複化前
データ重複用 DFG
…重複化前
LSRDP再構成
• LSRDP にてデータ重複処理を行うためにデータ重複用 DFG で再構成
16
…
LSRDP を用いたデータの重複化(2/2)
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
Main Mem.
重複化前
メモリに対する連続アクセスが可能
…重複化後
入力4,出力4の重複生成用 DFG による処理
17
専用ハードウェアによるデータの重複化
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
controller
input_dataバッファ
バッファ
18
…
Main Mem.
重複化前
…
重複化後
ピンク部分のみ重複化に必要 ⇒ 空白部分を圧縮して保存可能
⇒ 入出力時の転送データ量を削減
提案手法のまとめ特徴 利点 欠点
従来方式 ・プログラム実行中に再配置を実行
・メモリへの多数のランダムアクセスにより実行時間が長い
データ構造の変更+ データの重複化
・プログラム作成時にデータ構造を変更・再配置を LSRDPを用いてストリーム処理により実行
・連続メモリアクセスのみでLSRDP を実行可能
・必要なメモリ領域が増加・重複化用 DFG による処理が必要
データ構造の変更+ 重複化専用ハードウェアの導入
・プログラム作成時にデータ構造を変更・重複化専用ハードウェアにより再配置処理を削減
・連続メモリアクセスのみでLSRDP を実行可能・転送データ量を削減
・ストリームデータの重複パターンに対応した HW の機能が必要
19
発表の流れ
• 背景• 提案手法• 性能評価実験• おわりに
20
性能評価実験• 評価環境
– GPP : Simple Scalar を用いて実行時間を計測– LSRDP :性能モデル式とパラメータから実行時間を
算出※ 性能モデル式は予稿を参
照
• 評価ベンチマーク– 2 変数 2階偏微分方程式の差分法計算
• 振動方程式 (Vib) ,熱伝導方程式 (Heat)
対象モデル LSRDP 利用 データ構造の変更
データの重複化
gpp_only - - -naive ✔ - -pack+dup ✔ ✔ DFG (LSRDP)
pack+hw ✔ ✔ 重複化専用 HW
21
評価環境
22
PE PE
PE PE PE
...
PE PE PE PE...
.
.
.
.
.
.
.
.
.
PE PE
ORN
...
...
Streaming Memory AccessContoller (SMAC)
ORN
Operand Routing Network (ORN)
SMAC
I/ O port
Main Mem.
GPP
ORN
... FUTU
TU TUFP
TUTU TU
FUTU
TU TUFP
TUTU TU
PE
PE : Processing ElementFP : Floating Point unitTU : data Transfer Unit
• GPP– 動作周波数: 3.2GHz– ISA : PISA– 4way out of order スーパースカラ
• Main Memory– メモリバンド幅: 102.4GB/s
• LSRDP– サイズ:幅 48 ,高さ 35– 隣接行間接続数: 9– 動作周波数: 80GHz
• 演算器スループット: 2.5GFLOPS / PE
– 再構成時間: 30,000cc
• 追加 HW– 動作周波数: 80GHz
ジョセフソン接合
超伝導ループ
磁束量子Single Flux QuantumSuperconductivityloop
Josephson junctionジョセフソン接合
超伝導ループ
磁束量子
ジョセフソン接合
超伝導ループ
磁束量子
ジョセフソン接合
超伝導ループ
磁束量子Single Flux QuantumSuperconductivityloop
Josephson junction
追加HW
naive
pack+dup
pack+hw
naive
pack+dup
pack+hw
Heat Vib
00.050.10.150.20.25
再構成通信再配置LSRDPストールLSRDP演算GPP
実行時間: gpp-only で正規化( 性能: [GFLOPS])
0.24(8.0)
0.84(1.7)
0.01(104.9)
実験結果
0.018(109.2)
0.009(210.0)
0.13(11.5)
23
実験結果
•pack+dup- naive と比較して再配置を削減-Vib において LSRDP 演算、 LSRDP ストールが増加
•pack+hw- naive と比較して再配置、 LSRDP ストールを削減
naive
pack+dup
pack+hw
naive
pack+dup
pack+hw
Heat Vib
00.050.10.150.20.25
再構成通信再配置LSRDPストールLSRDP演算GPP
0.24(8.0)
0.84(1.7)
0.01(104.9)
0.018(109.2)
0.009(210.0)
0.13(11.5)
実行時間: gpp-only で正規化( 性能: [GFLOPS])
DFG を用いてLSRDP で実行
24
考察• pack+dup : naive と比較して Vib において LSRDP
演算, LSRDP ストールが増加– 重複作成のために naive よりも演算性能が低い DFG を実装
• naive と同じ DFG ではデータ重複用 DFG を用いても重複が作成不可能
• pack+hw : naive と比較して再配置、 LSRDP ストールを削減– 再配置処理そのものを削減– LSRDP ストール削減率 Heat : 40% , Vib : 67%
• naive の再配置処理における重複データが多いほど高い効果
• 実効効率 : Heat の pack+hw モデルで 5%– 原因
• DFG の演算器利用効率: 52%• LSRDP への 1 入出力あたり 6 サイクルのストールが発生
25
発表の流れ
• 背景• 提案手法• 性能評価実験• おわりに
26
おわりに• まとめ
– LSRDP における実行前処理の削減方式を検討• プログラム作成時にデータ構造を変更• GPP を用いずに再配置を実行
–少数のメモリアクセスポートを前提としたアクセラレータにおける高性能化の可能性を示した
• 今後の課題– 実効性能の向上
• 演算性能 / 入出力数の高い DFG の探索
27
ご清聴ありがとうございました
28
LSRDP へのプログラム実装(1/3)(振動方程式差分法計算)
loop n loop i a(n+1)[i] = a(n)[i-1] + a(n)[i] + a(n)[i+1] + a(n-1)[i] endend
オリジナルコード: GPP で計算
loop n (mn スキップ ) loop i (mi スキップ )
a(n+1)[i] = a(n)[i-1] + a(n)[i] + a(n)[i+1] + a(n-1)[i] a(n+1)[i+1] = a(n)[i] + a(n)[i+1] + a(n)[i+2] + a(n-1)[i+1] …
a(n+2)[i] = a(n+1)[i-1] + a(n+1)[i] + a(n+1)[i+1] + a(n)[i] a(n+2)[i+1] = a(n+1)[i] + a(n+1)[i+1] + a(n+1)[i+2] + a(n)[i+1] … endend
mi
mn
ループアンローリングされたコード
i と n についてループアンローリング入力: a(n)[], a(n-1)[]出力: a(n+mn)[]
29
LSRDP へのプログラム実装(1/3)(振動方程式差分法計算)
loop n (mn スキップ ) loop i (mi スキップ )
a(n+1)[i] = a(n)[i-1] + a(n)[i] + a(n)[i+1] + a(n-1)[i] a(n+1)[i+1] = a(n)[i] + a(n)[i+1] + a(n)[i+2] + a(n-1)[i+1] …
a(n+2)[i] = a(n+1)[i-1] + a(n+1)[i] + a(n+1)[i+1] + a(n)[i] a(n+2)[i+1] = a(n+1)[i] + a(n+1)[i+1] + a(n+1)[i+2] + a(n)[i+1] … endend
mi
mn
ループアンローリングされたコード
30
LSRDP へのプログラム実装(2/3)(振動方程式差分法計算)
loop n (mn スキップ ) loop i (mi スキップ )
endend
ループアンローリングされたコード
入力: a(n-1)[], a(n)[]
出力: a(n+m-1)[], a(n+m)[]
ループアンローリングされた差分法計算をデータフローグラフ( DFG )化しLSRDP にマッピング
LSRDP への入出力データ順: In : a(n-1)[i], a(n)[i], a(n-1)[i+1],a(n)[i+1], …
Out : a(n+m-1)[i], a(n+m)[i], a(n+m-1)[i+1], a(n+m)[i+1], …
LSRDP へのマッピング結果:
主記憶上で LSRDP への入出力順にデータを並び変え,主記憶への連続アクセスを可能とする必要がある⇒入力ストリーム生成(データ再配置)31
LSRDP へのプログラム実装(2/3)(振動方程式差分法計算)
LSRDP への入出力データ順: In : a(n-1)[i], a(n)[i], a(n-1)[i+1],a(n)[i+1], …
Out : a(n+m-1)[i], a(n+m)[i], a(n+m-1)[i+1], a(n+m)[i+1], …
LSRDP へのマッピング結果:
主記憶上で LSRDP への入出力順にデータを並び変え,主記憶への連続アクセスを可能とする必要がある⇒入力ストリーム生成(データ再配置)
再構成loop n
入力ストリーム生成 LSRDP 計算 (差分法計算 ) 出力ストリームデータの書戻しend
LSRDP 向けコード
32
Vertical vs. Horizontal DFG Decomposition
Loop N Reconfiguration Loop M LSRDP pipeline calc. End LoopEnd Loop
Original
33
Loop n ( > N) Reconfiguration Loop M LSRDP pipeline calc. End LoopEnd Loop
Vertical Decomp.
Loop N Reconfiguration Loop M 1st LSRDP pipeline calc. End LoopEnd LoopLoop N Reconfiguration Loop M 2nd LSRDP pipeline calc. End LoopEnd Loop
Horizontal Decomp.
33