Alteraは11月6日、FPGAの並列アーキテクチャとOpen CLの並列プログラミングモデルを組み合わせた「OpenCL向けソフトウェア開発キット(SDK)」を発表した。同SDKを用いることで、C言語を用いる開発者やプログラマは、FPGAベースのアプリケーションを、高級言語を使って迅速かつ容易に開発できるようになるという。
Alteraは2010年にOpenCLなどのAPI策定を行うコンソーシアム「Khronos Group」に参加を表明、FPGAでのOpenCLの活用に向けた取り組みを進めてきた。2011年には特定顧客向けにFPGA対応OpenCLを提供し、実際のビジネス分野でのニーズの掘り起こしを進めてきたほか、2012年よりアーリーアダプタ向けプログラムに移行し、実際の環境における適用結果などのフィードバックを受けるなど、実用化に向けた研究開発が進められてきた。今回発表されたSDKは、こうした取り組みの成果が一般ユーザー向けに提供する体制が整ったことを示すもので、FPGAの並列アーキテクチャを活用してソフトウェアの処理性能を向上させようというアプローチのものであり、ハードウェアのデザイン手法や言語を知らなくても、ソフトの知識だけで生産性を向上させることができるようになるとする。
ハードウェアの性能が向上することで、そこで処理させる情報量が増加、それをより高速に処理するためにハードウェアにはさらなる高性能化が求められることとなる。端的な話としては、PCの性能向上で、一昔前は動作周波数を向上させることで処理性能を向上させてきた。その後、消費電力と発熱の問題からマルチコア化へと路線が変更されるも、コア数を増加させても処理性能はリニアに向上していかないため、やはり動作周波数を引き上げる方向へと再び向くようになってきた。こうした処理性能の向上に向けたもう1つの解として、ヘテロジニアスアーキテクチャによる複数種類のコアを搭載することによる分散処理が考案され、すでにGPUコンピューティングといった形でスーパーコンピュータに活用されるなど、一定の成果を出すようになってきた。
Alteraはこうした状況から「Silicon Convergence」という考え方を近年提唱してきており、DSPやマイクロプロセッサなどの柔軟性とASIC/ASSPの低消費電力性の両面をFPGAが兼ね備え、性能と電力の両立を実現できるとする。しかし、そうしたハードウェア側の課題を解決したとしても、実際のシステム開発における生産性はどうかというと、ハードウェアをあれこれ試行錯誤して性能のチューニングをして、ということを繰り返すよりも、ある程度の性能のハードウェア上にソフトウェアを走らせて処理できるほうが、つまりソフトウェアのプログラマビリティが高い方が生産性が高いと言われている。
ハードウェアの性能向上により、ソフトウェア側もより高度な処理が可能となり、それがまた新たなハードウェアの性能向上を求める引き金となってきた |
マイクロプロセッサ/DSPの高い柔軟性と、ASIC/ASSPの低消費電力性をFPGAが両立することで、これら2つの相反する問題を解決しようというのが「Silicon Convergence」という考え方 |
同社はこれまで、そうしたソフトウェアレベルの開発容易性を確保できていなかったとする。VerilogやVHDLではなくCベースの言語を用いて高い抽象度でハードウェアの設計を行おうという考え方もあるが、あくまでハードウェア側からの視点での考え方であり、ハードウェアのアーキテクチャを知らなければ最適な開発はできず、結果として、ハードウェアエンジニアよりも数が多いソフトウェアエンジニアがハードウェアを意識しないで開発することが難しくなっていたという。
同社のOpenCLへのアプローチは、こうしたソフトウェアエンジニアがハードウェアを意識しないで並列処理の性能を提供することを目指したものであり、同SDKはOpenCLの仕様に基づいてホスト側のプログラムとカーネル側のプログラムを実行できるようにしたもので、メモリインタフェースやPCI Express(PCIe)などの回路接続を自動で実行してくれるため、実際に行いたい並列演算の処理を行う回路部分だけを構築するだけで、FPGA上で並列演算を実現することが可能となる。
PCIeやメモリインタフェース部分などはSDK側で自動で処理してくれるため、ソフトウェアエンジニアはアクセラレータ/データパス計算部分のプログラムを書くだけでFPGA上で並列演算を手軽に実行することが可能となる |
実際にアーリーアダプタが同SDKを用いて評価を行った結果、例えば、動画処理分野ではこれまで、C言語でソフトウェアを作成し、ホストプロセッサで処理するためにHDLに書き換えると3~6カ月かかっていたが、同SDKの場合、HDL部分の作業が不要となるため1週間程度で実現できたという。また、モンテカルロシミュレーションを用いた演算性能比較をx86プロセッサ(クアッドコア)、GPU、StratixIVの3つで比較したところ(いずれも40nmプロセスを採用した製品。FPGAはコア数が決められた数があるわけではなく、プログラムに応じて生成される)、1秒間にどれくらいシミュレーションを実行できるかの数を測定したところ、性能そのものはGPUとFPGAがほぼ同程度であったが、消費電力で1/10程度低減することができたという。さらに、別のCPU、GPU、そしてStratix IVで電力効率の比較として文書の検索およびフィルタリング・アルゴリズムを実行して、1Wあたりのパフォーマンスを測定したところ、GPUの5倍を超す電力効率を実現したという。
同SDKは現在、アーリーアダプタ向けに提供されている段階であり、そのためx86アーキテクチャとFPGAの組み合わせについてサポートしているのみだという。一般向け提供は2013年中を予定しているが、その際には同社が提供するSoC FPGA、具体的にはCortex-A9 MPコアのサポートも行われる予定で、FPGA内部のみでFPGA+CPUを実現することができるようになる。また、その場合、PCIeでの接続ではなく内部バスでの接続となるため、バンド幅は125Gbps以上に向上できるようになるほか、PCIe接続の場合、CPUから外部メモリへ吐き出され、ネットワークを経由した後、FPGA側の外部メモリを経て、最終的にFPGAで処理されるという手順を踏むためレイテンシの問題が発生しやすいが、それも無視できるようになるという。さらに1チップで実現できるため、システムコスト の低減も図ることができるようになるという。
なお、同SDKは同社の提供する「Altera Complete Design Suite(ADCS)」の1つとして提供され、開発ソリューション「Qurtus II」と同じようなタイミングでバージョンアップが図られていく予定だという。