大規模再構成可能データパスにおける
This presentation is the property of its rightful owner.
Sponsored Links
1 / 33

大規模再構成可能データパスにおける 実行前処理削減方式の検討 PowerPoint PPT Presentation


  • 32 Views
  • Uploaded on
  • Presentation posted in: General

大規模再構成可能データパスにおける 実行前処理削減方式の検討. ○片岡広志 a) , 本田宏明 b) , Farhad Mehdipour a) , 井上弘士 a) , 村上和彰 a) a)  九州大学、 b) ISIT. 発表の流れ. 背景 提案 手法 性能評価実験 おわりに. 研究背景. PowerXcell を 搭載したスーパーコンピュータ 「 Roadrunner 」. NVIDIA 「 Tesla S1070 」.

Download Presentation

大規模再構成可能データパスにおける 実行前処理削減方式の検討

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6919976

大規模再構成可能データパスにおける実行前処理削減方式の検討

○片岡広志a),本田宏明b) ,

FarhadMehdipour a) ,

井上弘士a) ,村上和彰a)

a) 九州大学、b)ISIT


6919976

発表の流れ

  • 背景

  • 提案手法

  • 性能評価実験

  • おわりに


6919976

研究背景

PowerXcellを搭載したスーパーコンピュータ「 Roadrunner」

NVIDIA

「Tesla S1070」

  • High Performance Computing (HPC)分野では汎用プロセッサ(GPP) を集積したスーパコンピュータが主流

    • 背景:GPPの低コスト化

    • 方針:GPPの低い演算性能をプロセッサ数で補う

  • 「GPP+アクセラレータ」方式も注目されている

    • アクセラレータ:演算性能を重視したハードウェア

      • 多数の演算器の並列演算

    • GPPは演算負荷が高い処理をアクセラレータに実行させる

    • 例:PowerXcell, ClearSpeed, Tesla, GRAPE-DR, FPGA, etc.

3

http://www.top500.org/system/9485

http://www.elsa-jp.co.jp/products/hpc/tesla/s1070/index.html


Lsrdp large scale reconfigurable data path

大規模再構成可能データパスの提案(LSRDP: Large-Scale Reconfigurable Data-Path)

  • アクセラレータではメモリウォール問題が深刻化

    • 多数の並列演算によるメモリプレッシャーの増加

  • メモリバンド幅の有効利用が重要

    • (GPUでは)メモリのマルチバンク・マルチポート化

    • 一方,単一ポートからの連続アクセスでもメモリバンド幅の有効利用は可能

  • 大規模再構成可能データパスの提案

    • ストリーム処理方式

      • 連続アクセス限定のメモリアクセス方式

        • DRAMのバースト転送機能を用いメモリバンド幅を有効利用

    • 2D-array型演算器によるデータパス方式の利用

      • 演算器間の直接データ転送

        • メモリアクセス回数を削減しメモリウォール問題の影響を低減

4

4


Lsrdp

LSRDPの動作

ソースコード

大規模データパスの再構成

主記憶上データの再配置

loop;

  ループボディ

end

・・・

LSRDPが主記憶から連続アクセスで読み出せるように入力データを生成

・・・

PE:Processing Element

FP:Floating Point unit

TU:data Transfer Unit


Lsrdp1

LSRDPの実行における問題点

実行時間

(GPP単体による実行時間で正規化)

実行時

オーバーヘッド

LSRDP実行時間

GPP実行時間

※評価環境については後述

  • 再配置時間が支配的

    • GPPを用いて主記憶へのランダムアクセスにより実行

性能向上のためには再配置時間の削減が必要


6919976

発表概要

  • 目的

    • 再配置(実行前処理)時間の削減

  • 手法

    • プログラム作成時にデータ構造を変更

    • GPPを用いずに再配置を実行

      • LSRDPを用いて再配置を実行

      • 重複化専用ハードウェアをSMAC上に導入し再配置処理を削減


6919976

発表の流れ

  • 背景

  • 提案手法

    • 従来の再配置手法

    • データ構造の変更

    • データの重複作成

  • 性能評価実験

  • おわりに


6919976

従来の再配置手法(1/4)

a(n)[1]

a(n-1)[0]

a(n-1)[1]

...

a(n-1)[i+M]

a(n)[0]

...

a(n)[i+M]

a(n-1)[]:

a(n)[]:

LSRDP 向けコード

再構成

loop n

入力ストリーム用データ生成

LSRDP 計算

(DFG:a(n+1)[i] = a(n)[i-1] + a(n)[i]

+ a(n)[i+1] + a(n-1)[i])

出力ストリームデータの書戻し

end

Main Mem.

計算対象の配列はメモリ上離れた箇所に分散保持


6919976

従来の再配置手法(2/4)

a(n)[1]

a(n-1)[0]

a(n-1)[1]

...

a(n-1)[i+M]

a(n)[0]

...

a(n)[i+M]

a(n-1)[]:

a(n)[]:

X(n)[]:

a(n-1)[i+M]

a(n-1)[0]

a(n)[0]

a(n)[i+M]

a(n-1)[1]

a(n)[1]

...

LSRDP 向けコード

再構成

loop n

入力ストリーム用データ生成

LSRDP 計算

(DFG:a(n+1)[i] = a(n)[i-1] + a(n)[i]

+ a(n)[i+1] + a(n-1)[i])

出力ストリームデータの書戻し

end

Main Mem.

LSRDP 計算の入力順に並び変えた入力用データ配列 X[] の生成

GPP により主記憶へのランダムアクセスを行う必要あり


6919976

従来の再配置手法(3/4)

X(n+m)[]:

a(n+m-1)[]

a(n+m-1)[0]

a(n+m)[0]

a(n+m)[]

a(n+m-1)[1]

a(n+m)[1]

...

X(n)[]:

a(n-1)[i+M]

a(n-1)[0]

a(n)[0]

a(n)[i+M]

a(n-1)[1]

a(n)[1]

...

LSRDP 向けコード

再構成

loop n

入力ストリーム用データ生成

LSRDP 計算

(DFG:a(n+1)[i] = a(n)[i-1] + a(n)[i]

+ a(n)[i+1] + a(n-1)[i])

出力ストリームデータの書戻し

end

Main Mem.

LSRDP 計算により X(n)[] から X(n+m)[] が生成

X(n)[] の読み込みと X(n+m)[] の書き込みの際に連続アクセス可能


6919976

従来の再配置手法(4/4)

X(n+m)[]:

a(n+m-1)[]

a(n+m-1)[0]

a(n+m)[0]

a(n+m)[]

a(n+m-1)[1]

a(n+m)[1]

...

LSRDP 向けコード

再構成

loop n

入力ストリーム用データ生成

LSRDP 計算

(DFG:a(n+1)[i] = a(n)[i-1] + a(n)[i]

+ a(n)[i+1] + a(n-1)[i])

出力ストリームデータの書戻し

end

Main Mem.

a(n+m-1)[0]

a(n+m-1)[1]

...

...

a(n+m)[0]

...

...

a(n+m-1)[]:

a(n+m)[]

a(n+m)[1]

X[] から a[] への書戻し

GPP により主記憶へのランダムアクセスを行う必要あり


6919976

a(n)[1]

a(n-1)[0]

a(n-1)[1]

...

a(n-1)[i+M]

a(n)[0]

...

a(n)[i+M]

a(n-1)[]:

a(n)[]:

X(n)[]:

a(n-1)[i+M]

a(n-1)[0]

a(n)[0]

a(n)[i+M]

a(n-1)[1]

a(n)[1]

...

データ構造の変更

  • 従来方式ではプログラム実行時に入力ストリームを生成

  • 本手法ではプログラム作成時にストリーム処理を意識したデータ構造を作成

Main Mem.


6919976

データ構造の変更による問題点

入力4,出力2の

DFG 計算

Main Mem.

X(n)[]:

X(n+m)[]:

計算結果 X(n+m)[] を再び入力データとして使用する際,

更新されていないデータが存在する


6919976

データの重複化による入力ストリーム向けデータ構造の再生成

入力4,出力2の

DFG 計算

Main Mem.

X(n)[]:

X(n+m)[]:

  • データを両隣からコピー(データの重複化)することで入力ストリーム向けデータ構造を再生成

  • GPP を使用すると多数のランダムアクセスが発生

    • LSRDPを用いる方式

    • 重複化専用HWを導入する方式


Lsrdp2

LSRDP を用いたデータの重複化(1/2)

LSRDP

再構成

データ重複用DFG

Main Mem.

重複化前

重複化前

  • LSRDP にてデータ重複処理を行うためにデータ重複用DFGで再構成


Lsrdp3

LSRDP を用いたデータの重複化(2/2)

入力4,出力4の

重複生成用 DFG による処理

Main Mem.

重複化前

重複化後

メモリに対する連続アクセスが可能


6919976

専用ハードウェアによるデータの重複化

重複化後

バッファ

controller

input_data

バッファ

Main Mem.

重複化前

ピンク部分のみ重複化に必要  ⇒ 空白部分を圧縮して保存可能

⇒ 入出力時の転送データ量を削減


6919976

提案手法のまとめ


6919976

発表の流れ

  • 背景

  • 提案手法

  • 性能評価実験

  • おわりに


6919976

性能評価実験

  • 評価環境

    • GPP:Simple Scalarを用いて実行時間を計測

    • LSRDP:性能モデル式とパラメータから実行時間を算出

      ※性能モデル式は予稿を参照

  • 評価ベンチマーク

    • 2変数2階偏微分方程式の差分法計算

      • 振動方程式(Vib),熱伝導方程式(Heat)


6919976

評価環境

  • GPP

    • 動作周波数:3.2GHz

    • ISA:PISA

    • 4wayout of order スーパースカラ

  • Main Memory

    • メモリバンド幅:102.4GB/s

  • LSRDP

    • サイズ:幅48,高さ35

    • 隣接行間接続数:9

    • 動作周波数:80GHz

      • 演算器スループット:2.5GFLOPS / PE

    • 再構成時間:30,000cc

  • 追加HW

    • 動作周波数:80GHz

追加HW

PE:Processing Element

FP:Floating Point unit

TU:data Transfer Unit


6919976

実験結果

実行時間:gpp-onlyで正規化

(性能:[GFLOPS])

0.84

(1.7)

0.24

(8.0)

0.13

(11.5)

0.018

(109.2)

0.009

(210.0)

0.01

(104.9)


6919976

実験結果

実行時間:gpp-onlyで正規化

(性能:[GFLOPS])

0.84

(1.7)

0.24

(8.0)

0.13

(11.5)

0.018

(109.2)

0.009

(210.0)

0.01

(104.9)

  • pack+dup

    • - naiveと比較して再配置を削減

    • -Vibにおいて LSRDP演算、LSRDPストールが増加

  • pack+hw

    • naiveと比較して再配置、LSRDPストールを削減

DFGを用いて

LSRDPで実行


6919976

考察

  • 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サイクルのストールが発生


6919976

発表の流れ

  • 背景

  • 提案手法

  • 性能評価実験

  • おわりに


6919976

おわりに

  • まとめ

    • LSRDPにおける実行前処理の削減方式を検討

      • プログラム作成時にデータ構造を変更

      • GPPを用いずに再配置を実行

    • 少数のメモリアクセスポートを前提としたアクセラレータにおける高性能化の可能性を示した

  • 今後の課題

    • 実効性能の向上

      • 演算性能/ 入出力数の高いDFGの探索


6919976

ご清聴ありがとうございました


Lsrdp4

LSRDP へのプログラム実装(1/3)(振動方程式差分法計算)

オリジナルコード: GPP で計算

ループアンローリングされたコード

loop n

loop i

a(n+1)[i] = a(n)[i-1] + a(n)[i]

+ a(n)[i+1] + a(n-1)[i]

end

end

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] …

end

end

mi

mn

iと nについて

ループアンローリング

入力: a(n)[], a(n-1)[]

出力: a(n+mn)[]


Lsrdp5

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] …

end

end

mi

mn


Lsrdp6

LSRDP へのプログラム実装(2/3)(振動方程式差分法計算)

ループアンローリングされたコード

LSRDPへのマッピング結果:

loop n (mnスキップ)

loop i (miスキップ)

end

end

入力: 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 への入出力順に

データを並び変え,主記憶への

連続アクセスを可能とする必要がある

⇒入力ストリーム生成(データ再配置)


Lsrdp7

LSRDP へのプログラム実装(2/3)(振動方程式差分法計算)

LSRDPへのマッピング結果:

LSRDP 向けコード

再構成

loop n

入力ストリーム生成

LSRDP 計算 (差分法計算)

出力ストリームデータの書戻し

end

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 への入出力順に

データを並び変え,主記憶への

連続アクセスを可能とする必要がある

⇒入力ストリーム生成(データ再配置)


Vertical vs horizontal dfg decomposition

Vertical vs. Horizontal DFG Decomposition

Original

Horizontal Decomp.

Loop N

ReconfigurationLoop M

LSRDP pipeline calc.

End Loop

End Loop

Loop N

ReconfigurationLoop M

1stLSRDP pipeline calc.

End Loop

End Loop

Loop N

ReconfigurationLoop M

2ndLSRDP pipeline calc.

End Loop

End Loop

Vertical Decomp.

Loop n ( > N)

ReconfigurationLoop M

LSRDP pipeline calc.

End Loop

End Loop

33


  • Login