C++ AMP (Accelerated Massive Parallelism)

先週開催された AMD の Fusion カンファレンスで、Daniel MothC++ AMP (Accelerated Massive Parallelism) のデモを行いました。C++ AMP とは、簡単に言うと、C++ で GPU の並列プログラミングを実装するものです。

Daniel Moth のブログから引用すると、C++ AMP とは…

  1. 開発者の生産性やソリューションの移植性を犠牲にすることなく、ヘテロ(つまり CPU と GPU)なハードウェア プログラミングの壁を低くし、その性能をメインストリームに提供する。
  2. 今日の大規模並列ハードウェア(つまりGPU と CPU)の使用を援助するだけではなく、コードへの投資を、将来に備えたデザインとして堅固なものにもする。
  3. Visual Studio の一部であり、別のコンパイラーや別の構文を学ぶ必要はない。
  4. 現在の C++ であり、C やその他の派生言語ではない。
  5. Visual Studio vNext と完全に統合・サポート。編集・ビルド・デバッグ・プロファイルなど Visual Studio  の他のすべての機能が C++ AMP とともに動作する。
  6. 既存の同時実行名前空間の一部としてSTL に似たライブラリを提供し、amp.h ヘッダーファイルを提供する。
  7. 並列化が顕著な形として、ヘテロなハードウェア上で巨大な多次元データで非常に容易に動作する。
  8. 唯一のコア C++ 言語拡張を導入する。
  9. DirectX(特に DirectCompute)上に構築、DirectX はユビキタスで信頼のおける優れたハードウェア抽象化レイヤーを提供する。しかしそのアーキテクチャは、姿を現すことのない実装細部の API レイヤーとみなしてかまわない。