BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MicrosoftがC++ AMP仕様を公開し、データ並列処理の障壁を下げる意向

MicrosoftがC++ AMP仕様を公開し、データ並列処理の障壁を下げる意向

原文(投稿日:2012/02/08)へのリンク

MicrosoftはC++ Accelerated Massive Parallelism (C++ AMP)のオープンな 仕様 (PDF)を GoingNative 2012イベントに合わせてリリースした。 C++ AMPは「データ並列ハードウェア上でC++コードを高速化することを可能にするプログラミングモデル」と、記述されている。そのようなハードウェアの最も共通な例は、別個のグラフィックスカード上のGPUで、複数コア/SSE CPUを代替として使うことのできるものである。

Microsoftは C++ AMPプログラミングモデルを以下のように説明している。

...上記の点を思うようにコントロールできます:CPUとアクセラレータ間のデータコピーそしてGPU上で実行される計算。CPUとアクセラレータ間の全通信を思い通りに管理でき、この通信は同期、あるいは非同期どちらでもよい。アクセラレータ上で実行されるデータ並列計算は、C++プログラミング言語のサブセットである多次元配列、高レベル配列操作関数、多次元インデックス操作、そして他の高レベル抽象を使うことによって表現される。プログラミングモデルは、多層なので、使用の容易性と最高パフォーマンスとのトレードオフがある。


Microsoftによるこの標準の実装は DirectX 11が走るどのシステム上でも使用できるが、もし DirectX 11が存在しない場合は、非C++バージョンのコードが実行される。Microsoftは C++ AMPをWindowsのみにする意図はなく、「 誰でも C++ AMPオープン仕様を どの プラットフォームに実装する人でも、サポートし、後押しする」と言っている。(強調はオリジナル)。これまで、プロジェクトは Nvidia と AMDの両方からの貢献を反映している。その他の実装を後押しするために、Microsoftは Microsoft Community Promiseの 条項のもとで C++ AMP仕様書の全部をリリースした。

C++ AMP と Direct 3D間の相互運用性は、Microsoftの実装ではサポートされているが、公式仕様では要求されていない。OpenGLとの相互運用性は現在サポートされておらず、開発者の Daniel Moth氏が投稿した最近のフォーラムによると、C++ AMP チームにはOpenGLの経験のあるものがいないので、このサポートは予定されていない、と 言っている

新しい C++ AMPプログラミングモデルを試したい開発者は Visual Studio 11 Developer Previewを ダウンロード して、この MSDNブログにあるサンプルコードを検討することで試すことができる。(これらのコードにはC#から C++ AMPを使うことができる例も含まれている)。

この記事に星をつける

おすすめ度
スタイル

BT