Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法

8,079 views

Published on

FPGAによる数値シミュレーションに関する10年間に渡る研究と、
GPU超えに至ったArria10 FPGAによる津波シミュレーション等の
最新の研究事例について紹介します。また、FPGAを高性能計算
に利用するためのヒントや課題について、お話します。

Published in: Devices & Hardware
  • Login to see the comments

FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法

  1. 1. 1 FPGAX 0824 FPGAによる津波シミュレーション GPUを超える高性能計算の手法 東北大学 大学院情報科学研究科 佐野 健太郎 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  2. 2. 2 概要  これまでの研究  高性能計算のための基本戦略  津波シミュレーション専用ハードウェア (vs GPU実装)  流体シミュレーション専用ハードウェア  今後の展望とFPGAクラスタ  まとめ FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  3. 3. 3 これまでの研究(2006~) FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 差分法専用シストリック計算メモリ アーキテクチャ (2006~2011)  流体, 電磁場, 伝熱問題による評価 スケーラブルパイプライン アーキテクチャ (2008~2012)  メモリ帯域あたりの性能向上が可能  1 GB/s で 260 GFを実現 データ圧縮によるメモリ帯域向上 ハードウェア(2009~)  FPGA上での計算回路に付加  計算中の数値データを圧縮  メモリ実効帯域を2~4倍に拡張可 流体計算専用計算機(2012~)  複数FPGAを直結  高スケーラ ビリティ計算
  4. 4. 4 最近の研究 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 密結合FPGAクラスタ  FPGA & 専用ネットワーク  高性能計算アプリ開発のテストベッド ストリーム計算回路高位合成コンパイラ  DSLによる簡易記述から、高性能計算専用回路を自動生成  ドライバ・ライブラリを含む処理系 FPGAによる津波シミュレーションアクセラレータ  FPGAクラスタ、高位合成コンパイラの実証アプリ DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA DRAM FPGA CPU DRAM FPGA CPU DRAM FPGA PCI-Express (x8) DRAM FPGA DRAM FPGA CPU CPU Intra-node network Computing node w/ FPGA boards Inter-FPGA network (Accelerator-domain network, ADN) General-purpose network 本日のテーマ
  5. 5. 5 FPGAを用いたカスタムコンピューティング FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 ソフトウェアではなく、ハードウェア (専用回路)による計算 FPGA(回路再構成可能半導体) = 専用ハードの実現手段
  6. 6. 6 FPGAの新参考書 FPGAの原理~ ハードウェアアルゴリズム アーキテクチャ,アプリ Amazon.co.jp カテゴリベストセラー 一時在庫切れも、重版決定 オーム社 3888円 Order now! FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  7. 7. 7 ハードで高性能計算を 実現するための基本戦略 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  8. 8. 8 戦略1 動作周波数・演算器数の向上 ピーク性能 = (動作周波数) x (演算器数) 動作周波数 電力的にも 大幅な向上は見込めず FPGA上の回路 : 2~3百MHz 演算器数 集積度に伴い増加 FPGAの演算器 : 数千~ 複数チップ化によりさらに増加可 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 電力
  9. 9. 9 戦略2 稼働率の向上 実効性能 = (ピーク性能) x (稼働率) 稼働率 有効な演算を行う割合 低下の要因 1.不適切な演算器ミックス 2.データ供給不足 (メモリ・ネットワーク) 3.並列性とハードウェア構造のミスマッチ FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  10. 10. 10 演算器ミックス 必要な種類の演算器を必要な割合で用意すべし 例) 加算 : 乗算 : 除算 = 10 : 5 : 1 の計算 (完全並列) 加算器 : 乗算器 : 除算器 = 1 : 1 : 1 ⇒ 稼働率 53 % (加算器 100%, 乗算器 50%, 除算器 10%) 加算器 : 乗算器 : 除算器 = 10 : 5 : 1 ⇒ 稼働率 100 % FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  11. 11. 11 データ供給 演算速度に見合ったデータ供給が必要 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 * + * * + * + メモリ * + * * + * + メモリ 毎サイクル100%のデータ供給 ⇒ 稼働率 100% 毎サイクル50%のデータ供給 ⇒ 稼働率 50%
  12. 12. 12 並列性とハードウェア構造 並列性を活かすことのできる構造が必要 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 for (i=1; i < 100; i++) { z[i] = (a*x[i] + b*y[i])/z[i-1]; } * + / * a x[i] b y[i] z[i] z[i-1] * + / * a x[i+1] b y[i+1] z[i+1] サイクル ソフトウェアパイプライニングの例 並列性や依存関係に即した 演算器やその接続があれば、 高い稼働率を実現可 z[i-1] * + / * a x[i] b y[i] z[i] * + / * a x[i+1] b y[i+1] z[i+1]
  13. 13. 13 高性能計算のための戦略と各デバイス CPU GPU FPGA 周波数 2~4GHz 1~GHz 200~800MHz 演算器数 数百~ 数千~ 数千~ 演算器ミックス 固定 固定 可変 演算器接続 固定 固定 可変 データ供給能力 メモリ 中 高 中~高 ネットワーク 中 中 高 プログラムし易さ 高 中 低 特定領域向き 自由度高過ぎ FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  14. 14. 14 要するに・・・ FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 GPU,FPGAはCPUよりも高いピーク性能 最新FPGAは浮動小数点でもGPUに迫る 工夫次第でFPGAは高い稼働率 実効性能でGPU超え!? しかし、適切な専用ハードを作る必要あり
  15. 15. 15 津波シミュレーションと その専用ハードウェア FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  16. 16. 16 津波 : 地震により引き起こされる2次災害 東日本大震災における避難の問題  津波高さの不正確な初期予報  不十分な避難時間 (到達まで20~40分) FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 仙台港近くの津波 2011年3月11日
  17. 17. 17 津波予測の高度化 様々なアプローチはあれど・・・ 求められる津波予測  正確 大規模・高精細なシミュレーション  短時間 高速なシミュレーション(高性能計算)  取扱易さ 小規模・低電力なシステム 現在のシミュレーション  スパコンベース  GPUベース FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 もっと小型・低電力で高性能な シミュレーションは実現できないか? ⇒ FPGAでやってみよう
  18. 18. 18 津波シミュレーションの計算手法 浅水方程式 海洋における波伝搬を表す偏微分方程式 有限差分法による数値解法 (直交格子上で離散化) FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 H (u, v) : 波の速さ, D : 水深 正準変換 : (u, v) to (v’, p, q)
  19. 19. 19 津波シミュレーションのアルゴリズム タイムステップ t に対する2次元格子上 (u, v, H)の更新 0. (u, v, H) の初期化, 水深データのロード 1. 経度(x)方向の正準変換 2. x方向のスイープ計算 3. 逆変換 4. 緯度(y)方向の正準変換 5. y方向のスイープ計算 6. 逆変換 7. 格子データの保存 8. 2~8の繰り返し FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 時間 積分 太平洋の 水深データ
  20. 20. 20 各ステップ : 反復ステンシル計算 i -1 i+1i j j +1 j -1 2Dステンシル計算の疑似コード  局所的な格子点(ステンシル)の参照と計算  スィープしながら全格子を計算  さらにそれを反復 計算格子 for (n=0; n< Nmax ; n++) for (j=0; j< Jmax ; j++) for (i=0; i< Imax ; i++) v’i,j = f (vi,j, vi+1,j , vi-1,j , vi,j+1 , vi,j-1) グリッドの スィープ 反復(時間積分) リコンフィギャラブルシステム研究会 May 13, 2011 ステンシル ステンシル 参照と計算
  21. 21. 21 各ステップ : 反復ステンシル計算 i -1 i+1i j j +1 j -1  局所的な格子点(ステンシル)の参照と計算  スィープしながら全格子を計算  さらにそれを反復 計算格子 リコンフィギャラブルシステム研究会 May 13, 2011 ステンシル [ i, j ] [ i, j ] ステンシル計算 [ i–1,j ][ i+1, j ] [ i, j–1][ i, j+1]
  22. 22. 22 ステンシル計算のストリーム化 リコンフィギャラブルシステム研究会 May 13, 2011 ステンシル バッファ 次の参照データ  2行分の大きさのステンシルバッファ  参照データのストリームをバッファへ格納  バッファ内のデータを用いてステンシル計算  データストリームに対するパイプライン処理が可能 [ i, j ] ステンシル計算 計算結果の ストリーム [ i, j ] [ i–1,j ][ i+1, j ] [ i, j–1][ i, j+1] [ i+1, j+1 ] 入力データ ストリーム [ i+2, j+1 ]
  23. 23. 23 複数ループの融合と単一ストリーム化 24 Aug, 2016 ストリーム化したアルゴリズム (最初と最後のみメモリ読書き) 元のアルゴリズム (各ループの度にメモリを参照) 時間積分 のループ 終了判定 Y N 外部メモリ 初期化 x方向正準変換 終了判定 初期化 x方向主計算 Y N x方向逆変換 y方向 x方向 スイープ x方向正準変換 x方向主計算 x方向逆変換 y方向 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 時間積分 のループ x方向 スイープ y方向 スイープ
  24. 24. 24 ストリーム計算要素(SPE)の構造 24 Aug, 2016FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 3273 段のパイプライン 8 入力, 8 出力, 288 演算器 (加算147, 乗算121, 除算12, 平方根2) x方向の 関連 モジュール y方向の 関連 モジュール
  25. 25. 25 計算モジュール (x方向) 24 Aug, 2016FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
  26. 26. 26 時間方向の粗粒度並列性 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 時間並列性あり t=3 t=2 t=1 連続する複数タイムステップを並列に計算 (粗粒度パイプライン) SPE SPE SPE パイプラインの多段化 帯域一定のまま 性能向上 ~6 SPEs 時間並列性無し t=1 SPE SPE
  27. 27. 27 実装と評価 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  28. 28. 28 FPGAとシステムオンチップ FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 FPGA ボード (Stratix V) QDR II+ SRAM A QDR II+ SRAM B QDR II+ SRAM C QDR II+ SRAM D DDR3DRAMA PC3-12800(DDR3-1600) DDR3DRAMB PC3-12800(DDR3-1600) 10G SFP+ A(Tx, Rx) 10G SFP+ B(Tx, Rx) 10G SFP+ C(Tx, Rx) 10G SFP+ D(Tx, Rx) ALTERA Stratix V FPGA 5SGXEA7 N2F45C2 12.8 GB/s 12.8 GB/s x18@ 500MHz 1GB/s for read/write 10Gbps+ each (Tx, Rx) 18 Mbits each (20-bit addressing for 18-bit data) 2GB as default (up to 8GB) x64@ 800MHz (DDR) up to 1066MHz PCIe 3.0 x 8 : 8GB/s (Tx, Rx) DE5-NET PCI-Express DDR3 memory QDRII SRAM SFP+ 10G Ether FPGA FPGA ボード (Arria10) Gen2 x8 DDR3 BDDR3 A DDR3 Ctrl 2DDR3 Ctrl 1 PCIe I/F SFP+ A SFP+ B SFP+ C SFP+ D 10G SERDES 10G SERDES 10G SERDES 10G SERDES Node I/F ユーザロジック ホスト PC システムオンチップ FPGA (ネットワーク)
  29. 29. 29 データフロー計算向け高位合成コンパイラ SPGen 対象計算ドメイン向けDSLコードからストリーム計算HWを生成  計算データパス : 数式  HW構造 : 関数呼出し FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 Name Core; ### Define IP core “Core” Main_In {in:: x0_0, x0_1, y0_0, y0_1}; Main_Out {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); Name PE; ### Define pipeline “PE” Main_In {in:: x_in, y_in}; Main_Out {out::x_out, y_out}; EQU eq1, t1 = x_in * y_in; EQU eq2, t2 = x_in / y_in; EQU eq3, x_out = t1 + t2; EQU eq3, y_out = t1 - t2; PE pe10 PE pe11 x0_0 y0_0 x0_1 y0_1 x1_0 y1_0 x1_1 y1_1 PE pe20 PE pe21 x2_0 y2_0 x2_1 y2_1
  30. 30. 30 リアルタイム津波シミュレーション可視化デモ FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  31. 31. 31 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 FPGAによる津波シミュレーション結果 (全 2581x2879 格子の一部のみ可視化)
  32. 32. 32 0% 50% 100% 150% 200% 250% 300% 350% 400% 450% 500% 550% 600% ALMs Regs Kbits DSPs ALMs Regs Kbits DSPs 1PE 2 PEs Peripheral PE core Unused Stratix V (28nm) 200MHz, 40W, 2.9GF/W 58 GF 115 GF PE PE PE 単一FPGAの計算性能 (津波シミュ) FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 0% 50% 100% 150% 200% 250% 300% 350% 400% 450% 500% 550% 600% ALMs Regs Kbits DSPs ALMs Regs Kbits DSPs ALMs Regs Kbits DSPs ALMs Regs Kbits DSPs 1PE 2 PEs 4 PEs 6 PEs Peripheral PE core Unused Arria10 (20nm, 浮動小数点DSP) 225MHz, 74.5W, 5.22GF/W , 25.6GB/s 65 GF 130 GF 259 GF 388 GF規模 x 3 周波数 x 1.1 性能 x 3.4
  33. 33. 33 性能比較 : Arria10 vs GPUs FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 Arria10 FPGA GPUs Arria10 FPGA GPUs 計算性能と消費電力 電力あたり性能 185W 74.5W 389GF 219GF 92W 44.6GF 1.19 5.22 0.49 x 4.4 FPGAは GPUよりも 高速かつ低電力 の結果
  34. 34. 34 2次元流体シミュレーションも 専用ハードウェア化してみた FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  35. 35. 35 格子ボルツマン法 (LBM) FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 計算格子 1 5 2 6 3 7 4 8 0 格子セル 離散的な9方向の 粒子密度分布関数 fi 流体 :  格子上の仮想粒子 伝播と衝突により表現 粒子速度と粒子密度分布関数
  36. 36. 36 アルゴリズム 9方向速度ベクトルに対する粒子密度分布関数 粒子の衝突計算 粒子の移動計算 (translation) 粒子密度の移動 粒子の衝突計算 finish? Initialize 粒子の移動計算 Y N 境界条件計算 24 Aug, 2016FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
  37. 37. 37 ストリーム計算要素(SPE) FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 LBM SPE (x1 pipeline) Collection of data-flow graphs with fine-grain parallelism Collision Propagation Boundary
  38. 38. 38 時間方向の粗粒度並列性 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 時間並列性あり t=3 t=2 t=1 連続する複数タイムステップを並列に計算 (粗粒度パイプライン) SPE SPE SPE パイプラインの多段化 帯域一定のまま 性能向上 時間並列性無し t=1 SPE SPE
  39. 39. 39 Stratix V (28nm) 200MHz, 40W, 2.6GF/W 26 GF 52 GF 105 GF PE PE PE PE PE PE PE 単一FPGAの計算性能 (LBM流体シミュ) FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 Arria10 (20nm, 浮動小数点DSP) 225MHz, 90W, 5.9GF/W, 25.6GB/s 29 GF 59 GF 118 GF 236 GF 354 GF 472 GF 531 GF規模 x 6 周波数 x 1.1 性能 x 5.1 Sustained performance
  40. 40. 40 今後の展望 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  41. 41. 41 次世代FPGAのクラスタ FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 ~ 500GB/s Optical links (WDM) Optical switch? FPGA ~ 10TF Memory CPU FPGA ~ 10TF Memory ~ 1TB/s ~ 50GB/s 近い将来のFPGAは超広帯域が利用可能  DRAMs, HBM, etc.  電気・光接続と、スイッチ  FPGA  拡張可能なデータフロー計算デバイス FPGA ~ 10TF
  42. 42. 42 FPGAによるスケーラブルデータフロー計算 データフロー  データ到着で計算を駆動  ノード単位の並列計算  全体の同期不要、遅延に寛容 ⇒ 高スケーラビリティ FPGA  データ移動と計算を融合 したデータフローパイプライン CPU & FPGAのハイブリッド  既存システムとの調和 柔軟性、実現性 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 memory or storage memory or storage memory or storage Data-flow by FPGAs Controls by CPUs 大域非同期データフロー コンピューティングモデル Global network
  43. 43. 43 おまけ FPGA 16枚 で計算してみた FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016
  44. 44. 44 密結合FPGAクラスタ FPGAによる 高性能カスタム計算テストベッド  4 x FPGA / ノード  4 x NIC / FPGA FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 Node 1 FPGA ボード (Stratix V) x 4 QDR II+ SRAM A QDR II+ SRAM B QDR II+ SRAM C QDR II+ SRAM D DDR3DRAMA PC3-12800(DDR3-1600) DDR3DRAMB PC3-12800(DDR3-1600) 10G SFP+ A(Tx, Rx) 10G SFP+ B(Tx, Rx) 10G SFP+ C(Tx, Rx) 10G SFP+ D(Tx, Rx) ALTERA Stratix V FPGA 5SGXEA7 N2F45C2 12.8 GB/s 12.8 GB/s x18@ 500MHz 1GB/s for read/write 10Gbps+ each (Tx, Rx) 18 Mbits each (20-bit addressing for 18-bit data) 2GB as default (up to 8GB) x64@ 800MHz (DDR) up to 1066MHz PCIe 3.0 x 8 : 8GB/s (Tx, Rx) DE5-NET PCI-Express DDR3 memory QDRII SRAM SFP+ 10G Ether FPGA 10G ether switch Node 2 Node 3 Node 4
  45. 45. 45 システムブロックダイアグラム FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 FPGA 1-0 FPGA 1-1 FPGA 1-2 FPGA 1-3 Host PC 1 FPGA 2-0 FPGA 2-1 FPGA 2-2 FPGA 2-3 Host PC 2 FPGA 4-0 FPGA 4-1 FPGA 4-2 FPGA 4-3 HostPC4 FPGA 3-0 FPGA 3-1 FPGA 3-2 FPGA 3-3 HostPC3 1D or 2D トーラスネットワーク 密結合FPGAクラスタ Gen2 x8 DDR3 BDDR3 A DDR3 Ctrl 2DDR3 Ctrl 1 PCIe I/F SFP+ A SFP+ B SFP+ C SFP+ D 10G SERDES 10G SERDES 10G SERDES 10G SERDES Node I/F ユーザロジック ホスト PC システムオンチッププラットフォーム (仮想化部, アプリ部) FPGA 24 Aug, 2016 計算コア(アプリ) ハードウェア仮想化部 (オーバーレイ = HW OSに相当)
  46. 46. 46 16 FPGA による 1Dリング接続 SFP+  10G Ether等に使用されるコネクタ  10 Gbps (1.25 GB/s), 全二重 Serial Lite III IPコア  高速シリアル伝送のためのコア  最大 17.4 Gbps/レーン 最大 24 レーン FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 Stratix V #1 A B C D Stratix V #2 A B C D Stratix V #16 A B C D
  47. 47. 47 まとめ FPGAによる高性能計算  GPUに匹敵するピーク性能  稼働率・効率で上回る可能性 Arria10による津波計算  ストリーム計算アーキテクチャ  GPUと比べて高性能・低電力 データフローベースの専用計算機  データ移動と計算処理の融合 (多段パイプライン)  複数FPGAによるスケーラブル計算 FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法 24 Aug, 2016 最重要課題 カスタムハード・データフローのプログラミング

×