FPGA、GPGPU、CPUの違いは消費電力対性能比

今どきCPUだけで大丈夫?

GPGPUとCPUの違いを並列性の有無とか高速性で説明するとミスリードするよね。

CPUだって並列化が進んでる。ハイエンドのCorei7だとSIMDで1コア辺り8個の倍精度演算を同時におこなう。それが6コアあるので48並列で演算できる事になり、理論性能は倍精度で160GFLOPS近い。

GPGPUはというと、例えば GeForce GTX 980の場合、2048コアで単精度なら4.6TFLOPSを超える。単精度ならってのがGPUに特化したチップの弱点で、倍精度だと144GFLOPSまで落ち込む。

Core i7 5820K BOXが4万円台、GeForce GTX 980搭載ビデオボードが5万円台。科学技術計算で多く使われる倍精度演算に用途を限ると、価格性能比ではよい勝負となる。GPGPUのほうが並列数が多い上に、バス速度がボトルネックになりやすく、最適化も難しい。下手をすると価格性能比でGPGPUよりもCPUの方が勝るということになる。

数値演算に特化したNVIDIA TESLA K20だと倍精度でも十分な演算速度が得られており、約1.2TFLOPSで約50万円。同性能のCPUというとXeon HaswellのデュアルCPU構成にすると1.3TFLOPSで約110万円。やっぱりGPGPUの方が価格性能比が・・・と思うかもしれないが、拡張スロットに刺してよいなら Xeon Phiという選択肢もある。Xeon Phiなら1TFLOPSで約20万円くらいで手に入る。やっぱり価格性能比ならCPUの方が安いってことになる。

こうなるとGPGPUのメリットは何?って感じになるが、消費電力対性能比だとGPGUの方が勝っている。TESLA K20の消費電力は225W程度だが、Xeon Phiは300Wも消費する。

本質的には汎用性の有無と消費電力で説明した方が良い。汎用性が高い代わりに消費電力の大きなCPUと、汎用性が低い代わりに消費電力の小さいGPGPU。ちなみにFPGAの性能を単純にFLOPSで表現するのは難しいけど、 Virtex UltraScaleは最大で1.7TFLOPSにたいして、消費電力は最大で100Wに届かないので、消費電力対性能比はGPGPUよりさらに勝ることになる。

もちろんCPUに加えてGPUも使える環境なら、GPGPUを使って演算をオフロードしたほうが早くなるし良い。既存のPCに後付けでGPGPUを追加する選択もありだろう。たが演算を高速にするために専用にサーバーを用立てるなら、最初からGPGPUを選択すべきかは微妙なところだよね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です