IntelがFPGAメーカーのAlteraを巨額で買収したり、MicrosoftがデータセンターにFPGAを使ったり、AmazonのAWSがFPGAに対応したりと、「field-programmable gate array(FPGA)」がコンピューティングの世界で存在感を増しています。CPU・GPUとの違いや、ディープラーニングなどでGPUを置き換える存在となるのかなど、FPGAの現状と将来について、Netherlands eScience Centerのアッツェ・ファン・デル・ペロッグ氏がまとめています。

Why use an FPGA instead of a CPU or GPU? - Netherlands eScience Center

https://blog.esciencecenter.nl/why-use-an-fpga-instead-of-a-cpu-or-gpu-b234cd4f309c

目次

◆FPGAとは何か?

◆FPGAのメリット/デメリット

・レイテンシ(遅延)

・コネクティビティ

・エンジニアリングコスト

・エネルギー効率

◆GPUとの浮動小数点演算での競争

◆FPGA市場の見通し

◆FPGAとは何か?

何かを計算したい場合、CPUやGPUなどの命令ベースのアーキテクチャ用のソフトウェアを書くのが一般的なコンピューティングのアプローチです。もちろん、とてつもない労力をいとわないのであれば、汎用性のあるCPUやGPUを用いることなく、その計算だけを行う専用回路を設計をすることも可能です。この代表的な例が「ASIC」です。

ASICよりも簡単に製造でき、製造後に回路設計や構成を再設定できるのが「field-programmable gate array(FPGA)」と呼ばれる集積回路です。



◆FPGAのメリット/デメリット

・レイテンシ(遅延)

FPGAの大きな利点の一つに、レイテンシ(遅延)が小さいことが挙げられます。具体的にいうと、非常に優れたCPUでさえレイテンシはせいぜい50マイクロ秒ですが、FPGAだと1マイクロ秒も可能。レイテンシ面ではCPUやGPUとは桁が違います。FPGAが低レイテンシである理由は、汎用のOSに依存せず、USBやPCI-Expressなどの汎用バスを経由することなく通信できるから。

低レイテンシという特長ゆえに、ジェット戦闘機の自動運転や高頻度アルゴリズム取引など、極めて小さなレイテンシが要求される場面ではFPGAが用いられています。



・コネクティビティ

CPUやGPUでは、USBやPCI-Expressなどの標準化されたバスを介してデータソースに接続し、OSに依存しつつアプリケーションにデータを受け渡します。これに対してFPGAでは、ネットワークインターフェースやセンサーなどのデータソースへダイレクトに接続することが可能です。これによってレイテンシが小さくなるだけでなく、帯域幅を大きく取れるという利点があります。

膨大なデータを取り込んで処理することが求められるシーンでは帯域幅の広いFPGAは極めて有効です。例えば、電波天文学では、センサーから生じる膨大な量のデータを処理するため、データ管理を簡単化するためにFPGAが用いられています。



・エンジニアリングコスト

命令ベースのアーキテクチャであるCPUやGPUとの比較で、FPGAの大きな欠点は「プログラミングや構成がはるかに難しい」という点。これまでFPGAではVHDLやVerilogなどのハードウェア記述言語(HDL)で書かれていました。JavaやC言語、Pythonなどのプログラミング言語を使ったプログラミングに対して、HDLでのプログラミングでは、必要となるエンジニアリングコストは膨大だとのこと。

近年では、OpenCLやC++などの標準的なプログラミング言語を使ってFPGAをプログラムすることで、高い抽象化が可能なHigh Level Synthesis(HLS)が登場しているとはいえ、それでもなお命令ベースのシステムのプログラミングに比べると難度は高いそうです。

また、FPGAではコンパイル時間の長さも大きな欠点です。例えばIntelのOpenCLコンパイラを使った場合、一般的なFPGAプログラムをコンパイルするのに4〜12時間かかります。パフォーマンスを最適化するには、夜間のコンパイルフェーズが必要になっています。

・エネルギー効率

FPGAはロジックと固定精度において、CPUやGPUに比べてエネルギー効率で優れています。このため、CPUやGPU以上に仮想通貨のマイニングではFPGAが優れています。なお、FPGA以上に優れているのがASICですが、ASICには設計段階での初期投資が大きいというデメリットがあります。



演算における高いエネルギー効率に加えて、FPGAには「ホストコンピューターを稼働させる必要がない」という点でも効率的です。

◆GPUとの浮動小数点演算での競争

ディープラーニングなどの高性能コンピューティングを用いる場面では浮動小数点演算性能に優れているGPUに大きく依存しています。浮動小数点ユニットはロジックブロックからアセンブルする必要があり、多くのリソースが必要なため、FPGAは浮動小数点演算ではかなり非効率的でした。

しかし、Arria 10やStratix 10などの新しいFPGAでは、FPGAファブリック上に浮動小数点ユニットが組み込まれているため、エネルギー効率の面でかなりの改善がみられます。具体的に比較すると、最先端GPUのTesla V100では250Wの電力で理論上15TFLOPSなのに対して、Starix 10を採用する最先端FPGAのNallatech 520Cでは、225Wの電力で9.2TFLOPSを実現します。まだGPUの方がエネルギー効率で優れていますが、Tesla V100が12nmプロセスで製造されているのに対して、Stratix 10が14nmプロセスで製造されているという点を考慮すると、その差はさらに縮まります。デル・ペロッグ氏によると、近い将来、浮動小数点演算におけるエネルギー効率競争で、GPUをFPGAが上回る可能性があるとのこと。



◆FPGA市場の見通し

2015年にIntelは世界最大のFPGAメーカーであるAlteraを167億ドル(約1兆8000億円)という巨額で買収しました。ミサイル誘導システムや電波天文学や仮想通貨マイニングなどで用いられているFPGAですが、ニッチな市場を奪うためにIntelが巨額を投じたはずもなく、「高性能コンピューティング」と「クラウドコンピューティング」という2つのメインストリームに投入する目算だろうとデル・ペロッグ氏は指摘しています。

もっとも、GPUよりもわずかにエネルギー効率が高くなったとしても、FPGA用ソフトウェアの開発コストはGPU利用時に比べてはるかに大きいことや、すでにHPCコミュニティがGPUを活用していることも考え合わせると、少なくとも5年間はFPGAへの本格移行は進まないとのこと。Intelは長期的な視点でFPGA市場をとらえていそうです。

クラウドコンピューティングにおいては、Intelはクラウド・サーバーにFPGAを搭載するか、CPU-FPGAのハイブリッドサーバーの開発を検討しているはずだとのこと。

FPGAがメインストリームに躍り出るかどうかについて、率直な意見では「懐疑的」だとデル・ペロッグ氏は述べています。FPGAがメインストリームになるためには、「コンパイル時間の短縮」と「浮動小数点演算でのさらなるエネルギー効率の改善」の2つが必要だそうです。