Alteraは11月15日(米国時間)、同社FPGAおよびSoC FPGA向けのOpenCL規格の研究開発プログラムを発表した。

同プログラムは、2010年より同社が取り組んできた研究の成果の一部で、OpenCL Cコンパイラやライブラリ向けプロトタイピングなどの開発が行われてきたという。なお、現時点ではまた製品化やソリューションとして提供する予定はないが、すでにFPGAをOpenCLを用いた並列演算処理にどうやって活用していくか、をコンセプトに複数のメーカーと活用に向けた連携を行っており、順次フィードバックなどを受けている段階だという。

画像処理分野や金融、気候変動モデルなどでは演算能力はあればあるほど良い。そうした要求を受けて、CPUやGPU、DSPなどでは並列処理を行うメニーコア化が進んできた

FPGAは回路の設計次第ではCPUでもGPUでもFPUでもDSPでも搭載できるが、同社はこの取り組みをそうした従来のコアを搭載して並列処理を行うものではなく、「ハードウェアをカスタマがプログラマブルに活用できるFPGAの利点を最大限、活用することを目指している」と説明する。

FPGAはどうかというと、一昔前はHPC向けのアクセラレータとして活用されてきたが、並列化という意味ではCPUやGPUなどに比べて遅れていた感は否めなかった。しかし、プロセスの微細化によるロジックエレメント(LE)やメモリブロックの増加、そして浮動小数点演算への対応などが進んできており、並列演算によるアクセラレータに向けたハード的な環境は整ってきていた。ここで問題になるのが、誰がどうやってそれにあったコードを記述するかであった。今回の同社のOpenCLでの取り組みはこの問題の解の1つとなることを目指して研究開発が進められている

OpenCL規格は、各種のプロセッサ上で実行可能な「ホストコード」と、OpenCL Cで書かれたアクセラレータ上で動作する「カーネルコード」に分けられるが、ホスト側で、これらのアルゴリズムをプロファイリングすることにより、どのファンクションを並列処理にするかを決めることができる。

ここで、同社が提供するOpenCL Cコンパイラを用いると、VHDLやVerilogを用いることなくFPGAにその並列処理に必要となる回路をハード的にマッピングして処理を行うことが可能となる。これによりコンパイラの要求時間軸に応じて、並列処理に必要となる乗算器などの演算ユニットを自在に変更することが可能となり、それぞれの並列処理に最適な演算器の構成を実現できるようになる。

ホスト側から、並列処理の指定をして、それをカーネル側が受け取り並列処理を行う。従来は、ソフトエンジニア側がハードのアーキテクチャや特性などを理解して、そのハードに見合ったチューニングを施すことで並列処理の性能向上を図っていたが、Altera OpenCL Cコンパイラを用いると、ソフトエンジニアがハードを知らなくても、最適な並列化と、それに見合った回路が吐き出されることとなり、ソフトエンジニア側の並列演算に対する敷居を下げることができるようになる、というのが同社の強調するところ

前述した検証ユーザーの一社は、元々アルゴリズムをCで開発し、HDLで実回路を記述していた。しかし、それでは手間や人的ミスによるバグ、HDLに落とし込む際のコード量の増加などの問題もあり、ビデオプロセッシングの処理の高速化にCPU+GPUコンピューティングの組み合わせを考えていたが、GPUコンピューティングのノウハウなどがないことから、FPGAによるアクセラレーションを試みたという。その結果、実際の処理性能は、マルチコアCPUのみでの処理に比べ35倍の性能向上と50%の設計効率向上、そしてヘテロジニアス構成のGPUコンピューティング(CPU+GPU)の消費電力に比べ80%の電力低減に成功したという。

実際に同社と一緒に開発を行った検証ユーザーの内の1社がFPGAアクセラレータを用いた際の性能向上の程度

また、同社ではSoC FPGAの提供も進めようとしているが、同製品はこうしたOpenCL Cコンパイラによる理想的なソリューションの1つとなる可能性がある。というのも、SoC(HPS:Hard Processor System)側とFPGA側それぞれにDDRコントローラが用意されているが、FPGA側はそのどちらもダイレクトにアクセスすることができるため、大規模な並列演算で問題となるメモリバンド幅の制約や遅延などを改善することができるようになるからだ。

こうしたリアルタイムでの演算ユニットの変更をタイムスケジュールできっちり管理すると、何かしらの並列演算を行っているFPGAのファブリックの余剰部分で、さらに別の演算を行わせるといったことも可能になる。また、専用にFPGAのボードを新たに用意する必要もない。例えば、システムボード上にI/O処理のために搭載しているFPGAであっても、使用していないときなどに、AlteraのOpenCL Cコンパイラを介して回路を書き換え、アクセラレータとして活用することも可能になるという。

同社では「ソフトウェアエンジニア側から見ると、ハードウェアを理解して並列化を行っていくのは非常に敷居が高い。ハードウェアを良く知らなくても、並列処理が出来るようにすることで、そうしたソフトウェアエンジニアでもアクセラレータを活用できるようになる」と説明しており、「並列処理によるアクセラレータを活用したいけどハード化するエンジニアやCの記述をHDLに落とし込む人材が居ない場合、もしくはやれる環境はあるが、時間的にそうした余裕がない、といった人などを含めて、同Cコンパイラの方向性を検討しつつ開発を進めている」とする。

なお、現時点では一部の検証ユーザーとのクローズドな環境での開発だが、将来的にはある程度オープンな環境による評価なども進めてみたいとしており、実際の製品化やサービスとしての提供の有無などを含めて、なるべく早い段階で今後に向けたアナウンスを行えればとしている。