1 / 33

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

大規模再構成可能データパスにおける 実行前処理削減方式の検討. ○片岡広志 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 大規模再構成可能データパスにおける実行前処理削減方式の検討大規模再構成可能データパスにおける実行前処理削減方式の検討 ○片岡広志a),本田宏明b) , FarhadMehdipour a) , 井上弘士a) ,村上和彰a) a) 九州大学、b)ISIT

  2. 発表の流れ • 背景 • 提案手法 • 性能評価実験 • おわりに

  3. 研究背景 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

  4. 大規模再構成可能データパスの提案(LSRDP: Large-Scale Reconfigurable Data-Path) • アクセラレータではメモリウォール問題が深刻化 • 多数の並列演算によるメモリプレッシャーの増加 • メモリバンド幅の有効利用が重要 • (GPUでは)メモリのマルチバンク・マルチポート化 • 一方,単一ポートからの連続アクセスでもメモリバンド幅の有効利用は可能 • 大規模再構成可能データパスの提案 • ストリーム処理方式 • 連続アクセス限定のメモリアクセス方式 • DRAMのバースト転送機能を用いメモリバンド幅を有効利用 • 2D-array型演算器によるデータパス方式の利用 • 演算器間の直接データ転送 • メモリアクセス回数を削減しメモリウォール問題の影響を低減 4 4

  5. LSRDPの動作 ソースコード 大規模データパスの再構成 主記憶上データの再配置 loop;   ループボディ end ・・・ LSRDPが主記憶から連続アクセスで読み出せるように入力データを生成 ・・・ PE:Processing Element FP:Floating Point unit TU:data Transfer Unit

  6. LSRDPの実行における問題点 実行時間 (GPP単体による実行時間で正規化) 実行時 オーバーヘッド LSRDP実行時間 GPP実行時間 ※評価環境については後述 • 再配置時間が支配的 • GPPを用いて主記憶へのランダムアクセスにより実行 性能向上のためには再配置時間の削減が必要

  7. 発表概要 • 目的 • 再配置(実行前処理)時間の削減 • 手法 • プログラム作成時にデータ構造を変更 • GPPを用いずに再配置を実行 • LSRDPを用いて再配置を実行 • 重複化専用ハードウェアをSMAC上に導入し再配置処理を削減

  8. 発表の流れ • 背景 • 提案手法 • 従来の再配置手法 • データ構造の変更 • データの重複作成 • 性能評価実験 • おわりに

  9. 従来の再配置手法(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. 計算対象の配列はメモリ上離れた箇所に分散保持

  10. 従来の再配置手法(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 により主記憶へのランダムアクセスを行う必要あり

  11. 従来の再配置手法(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)[] の書き込みの際に連続アクセス可能

  12. 従来の再配置手法(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 により主記憶へのランダムアクセスを行う必要あり

  13. 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.

  14. データ構造の変更による問題点 入力4,出力2の DFG 計算 Main Mem. … X(n)[]: … X(n+m)[]: … 計算結果 X(n+m)[] を再び入力データとして使用する際, 更新されていないデータが存在する

  15. データの重複化による入力ストリーム向けデータ構造の再生成データの重複化による入力ストリーム向けデータ構造の再生成 入力4,出力2の DFG 計算 Main Mem. X(n)[]: … X(n+m)[]: … • データを両隣からコピー(データの重複化)することで入力ストリーム向けデータ構造を再生成 • GPP を使用すると多数のランダムアクセスが発生 • LSRDPを用いる方式 • 重複化専用HWを導入する方式

  16. LSRDP を用いたデータの重複化(1/2) LSRDP 再構成 データ重複用DFG Main Mem. 重複化前 … 重複化前 … • LSRDP にてデータ重複処理を行うためにデータ重複用DFGで再構成

  17. LSRDP を用いたデータの重複化(2/2) 入力4,出力4の 重複生成用 DFG による処理 Main Mem. 重複化前 … 重複化後 … メモリに対する連続アクセスが可能

  18. 専用ハードウェアによるデータの重複化 重複化後 … バッファ controller input_data バッファ Main Mem. 重複化前 … ピンク部分のみ重複化に必要  ⇒ 空白部分を圧縮して保存可能 ⇒ 入出力時の転送データ量を削減

  19. 提案手法のまとめ

  20. 発表の流れ • 背景 • 提案手法 • 性能評価実験 • おわりに

  21. 性能評価実験 • 評価環境 • GPP:Simple Scalarを用いて実行時間を計測 • LSRDP:性能モデル式とパラメータから実行時間を算出 ※性能モデル式は予稿を参照 • 評価ベンチマーク • 2変数2階偏微分方程式の差分法計算 • 振動方程式(Vib),熱伝導方程式(Heat)

  22. 評価環境 • 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

  23. 実験結果 実行時間: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)

  24. 実験結果 実行時間: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で実行

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

  26. 発表の流れ • 背景 • 提案手法 • 性能評価実験 • おわりに

  27. おわりに • まとめ • LSRDPにおける実行前処理の削減方式を検討 • プログラム作成時にデータ構造を変更 • GPPを用いずに再配置を実行 • 少数のメモリアクセスポートを前提としたアクセラレータにおける高性能化の可能性を示した • 今後の課題 • 実効性能の向上 • 演算性能/ 入出力数の高いDFGの探索

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

  29. 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)[]

  30. 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

  31. 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 への入出力順に データを並び変え,主記憶への 連続アクセスを可能とする必要がある ⇒入力ストリーム生成(データ再配置)

  32. 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 への入出力順に データを並び変え,主記憶への 連続アクセスを可能とする必要がある ⇒入力ストリーム生成(データ再配置)

  33. 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

More Related