HPC分野におけるFPGAの考察

HPC分野においてFPGAが効力を発揮する可能性があるのは、一般のCPUやGPUがハードワイヤードとして持つ演算器と離れた演算精度を持つ場合と考える。
つまり、非常に小さなbit精度だが大量の演算が必要な場合と、倍精度よりも少し大きな精度が欲しいケースである。
そうは言っても、SandyBrigeなどの150GFLOPS級のCPUが5~6万で買えてしまう時代に果たしてどの程度アドバンテージがあるであろうか?
DegiKeyでFPGAの価格を調べてみると(XILINXだけだが)、廉価シリーズのSpartan6だと LX150T が 1.5万円ぐらいで買えてしまう(びっくり)。いつのまにかKintex-7も扱われているが、325Tしかなく、13万円ぐらい(それでも325って一昔前の感覚だとすさまじいな)。

しょうもないデータ取りをいろいろやったのでUPしておく。
「fpga.xls」をダウンロード

今のところあんまり価格メリットは無いかも。

ただし、今後この配分はまた変化する可能性は高いと考える。、何しろ一昔前にくらべて圧倒的にFPGAはこの分野に食い込んできている。その理由をいくつか考えてみる。

1.ポラックの法則に律速されない
  ただただ、ムーアの法則で伸びる。

2. 世の中は複雑
  単精度/倍精度だけで足りるほど単純ではない。

3. 拡張が容易
  単にFLOPS/$ が欲しいだけならもっとも費用対効果の良いFPGAを大量に並べればよい。特にパイプライン演算を組む場合、結果は安直である。
  CPUやGPUを大量に並べる場合の通信ボトルネックや、生産性低下は避けられない。

逆に問題点

1. H/W記述が必要
  ソフト屋視点で見ると現状のRTLははっきりいって言語的にいろいろ欠陥ありまくり。一方でもっとも性能が欲しい部分はどうせソフトでもSIMDなどを意識してアセンブラ的に書く。はっきり言って肝の部分の記述にかかる労力はあんまり変わらない。
  これは純粋に使いやすい言語の開発と、周辺部品の整備の問題と考える。

2. 書き換え速度が遅い/互換性がイマイチ
 前者はパーシャルリコンフィギュレーションなどである程度解に向かっているが、それでもノイマン型にくらべれば動的なプログラミング自由度が低い。後者もやはりCやFORTLANに比べると、ベンダー固有のライブラリの問題は多い気がする。
  半分はコンパイラ、半分は標準化の問題かと。

3. ツールの問題
 WebPack などフリーな開発環境が増えてきたにもかかわらず、オープンソース界で周辺ツールの発展がまだまだノイマン型ソフトウェアにくらべ遅いのは否めない。

  商用の SystemC とかに取って代わるような、オープンな独自言語+ツールを作りたいなぁなどと夢想するのは私だけだろうか….(普段 Verilog な人なのですが、いろいろ言語的に改造したい部分が多い….)

コメント

タイトルとURLをコピーしました