現在、プレビュービルドとして提供されているAccelerator V2は、.NETのマネージ・ライブラリでマルチコアCPUやGPU上でのデータ並列プログラムを記述する際の手間を省いてくれるものだ。
Microsoft ResearchのプロジェクトであるAcceleratorは、マネージ・ライブラリとして2006年に開発が開始され、最初のバージョンは、2007にリリースされた。もともとは、C#で記述されており、GPUをターゲットとしたものだった。しばらくして、C++で書き直され、どの.NETの言語からも利用しやすいようにマネージAPIとしてラップされた。
Accelerator V2は、マルチコアGPUとマルチコアプ・プロセッサ上で並列処理を実行するためのAPIを提供している。Field-programmable Gate Array(FPGA)向けは現在開発中だ。
Microsoft Researchの上級研究員であるSatnam Singh氏は、ローエンドのグラフィックカードに加えて、8コアの64ビットWindows 7マシンでAcceleratorを使ったコードを実行するデモ用のF#のプログラムを公開した。F#で2次元のコンボルバの作り方を示し、このコンボルバがF#からAcceleratorを使ってどのように表現されるのかを示した。コンボリューションとは
シーケンスのタプルをタプルのシーケンスに変換する関数だ。
Singh氏は、このコードがコンボリューションを実行するためにどのように動くのか説明もしている。彼は、デモンストレーションの最後にAcceleratorがどのように役立つのかに言及して締めくくっている。
Acceleratorシステムは、様々なバックエンド(ターゲット)の実装を効率化できる全体配列操作を使って、データ並列アルゴルズムを記述するのに役に立つ。例えば、全体配列操作を利用することで、私が現在取り組んでいる実験的なFPGAターゲットに対して効率的なアドレス・ジェネレータを生成することができる。
Acceleratorは、ステンシル・スタイルのデータ並列プログラムを記述するのにとても適合している。Acceleratorの計算は式指向の特色をもつので、F#のような関数型の言語と非常に相性がよい。実際のところ、Acceleratorシステムは、自身のことをF#、C#、C++(他の.NET言語でも同様だが)のドメイン固有言語だと定義づけている。
Accelerator V2は、実行時にDirectX 11を必要とする。
関連リソース: Accelerator v2 Preview Update 12-8-2009、Accelerator v2 F# 1D コンボリューション・サンプル。