DirectCompute

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

Microsoft DirectCompute (マイクロソフト・ダイレクトコンピュート) は、Windows Vista(SP2 Platform Update)、Windows 7、およびWindows 8.x OS上で"General-Purpose computing on Graphics Processing Unit" (GPGPU) をサポートするApplication Programming Interface(API、アプリケーション・プログラミング・インターフェイス)の1つである。

DirectComputeはWindows用マルチメディアAPIの集まりであるMicrosoft DirectX 11の一部として、当初はDirectX 11(Direct3D 11)フル対応GPU向けにリリースされる予定だったが、その後DirectX 10.xとDirectX 11に対応するGPU上で実行できるように仕様変更された(cs_5_0の他に、ダウンレベルのcs_4_0、cs_4_1のサポートが追加された)[1] [2] [3] [4] [5]。DirectComputeのアーキテクチャは、クロノス・グループ(Khronos Group)のOpen Computing Language (OpenCL) やNVIDIAのCompute Unified Device Architecture (CUDA) といった競合間も含めて、コンピュータのインターフェイスを共有する。

コンピュートシェーダー[編集]

アプリケーションでDirectComputeを使用する場合、Direct3D 11 APIを通してGPUデバイスを利用することになる。 プログラムの記述にはHLSLと呼ばれるシェーダー言語(シェーディング言語)を使用するが、これはDirect3Dの頂点シェーダーやピクセルシェーダーといったグラフィックスパイプライン記述用に使われている言語でもある。GPGPU用のシェーダープログラムはコンピュートシェーダーと呼ばれる。 HLSLのコンピュートシェーダーはCUDAやOpenCLのカーネル関数(並列実行単位)の記述に非常によく似ている。 なおDirect3Dの競合APIであるOpenGLでは、バージョン4.3でDirect3D同様のコンピュートシェーダーを導入した(OpenGLではコンピュートシェーダーの記述にGLSLを使用する)。

コンピュートシェーダーがCUDAやOpenCLと比較して優れている点として、Direct3D(OpenGL)リアルタイムグラフィックスパイプラインとの連携がしやすい(シミュレーションの実行と可視化に向いている)、Direct3D/HLSL(OpenGL/GLSL)をすでに利用している場合は修得が容易である、などが挙げられる。

ダウンレベルハードウェアでの実行[編集]

前述のようにDirectX 10.x世代のGPUであってもDirectX 11 APIを使ってDirectComputeを実行することができるが、DirectX 11フル対応のGPUと比較して実行可能条件にいくつかの制約があるため、使用する際は注意が必要となる[1]

採用事例[編集]

C++ AMP[編集]

DirectComputeおよびコンピュートシェーダーはDirect3D APIを直接操作する必要があるため、OpenMPを利用した一般的なCPU向けのC++並列プログラミングなどと比較してハードルが高い。マイクロソフトはDirectComputeをバックエンドとし、より抽象化された純粋C++プログラミングに近いGPU並列プログラミングモデルを提供するAPIおよび言語拡張として、C++ AMP (Accelerated Massive Parallelism) [11] を提供している。

C++ AMPのライブラリおよびC++ AMPに対応したVisual C++コンパイラが付属しているのはVisual Studio 2012以降だが、Visual Studio 2013ではコンピュートシェーダー以外のシェーダーステージとの相互運用やテクスチャフィルタリング(サンプラー)などの機能が強化されている[12] [13] [14]

なお、C++ AMP自体はDirectCompute/Windows専用というわけではない。AMDとマイクロソフトは、OpenCLなどをバックエンドとするLinux向けのC++ AMPオープン実装を発表している[15]

MSDNブログではCUDA、OpenCL、およびDirectComputeプログラマー向けに、各APIに対応するC++ AMP相当機能の比較資料が公開されている。

脚注[編集]

  1. ^ AMDのGPGPU戦略は新章へ - ATI Streamの展望、DirectX Compute Shaderの衝撃 (4) 今後のGPGPU動向は? | マイナビニュース
  2. ^ ASCII.jp:GPGPUをWindowsでサポートする「DirectCompute」 (2/2)|あなたの知らないWindows
  3. ^ DirectCompute
  4. ^ 「CUDAとは?」 - NVIDIA社 (2011年1月3日確認) [リンク切れ]
  5. ^ Nigel Dessau, senior VP and CMO at AMD, about DirectCompute - AMD社 (英語、2011年1月3日DirectComputeの記述は確認できず)
  6. ^ CEDEC 2010 - Windows版「ロストプラネット2」にみるDirectX 11フィーチャー(後編) (1) DirectComputeによる波の生成(1) | マイナビニュース
  7. ^ 西川善司の3Dゲームファンのためのグラフィックス講座。台頭するDirectCompute技術 - GAME Watch
  8. ^ [CEDEC 2013]さらさらヘア実現の秘密が明らかに。「TOMB RAIDER」PC版の毛髪レンダリング技術「TressFX Hair」はこうして実現された - 4Gamer.net
  9. ^ AMD APU13: AMD Talks DirectCompute in Gaming
  10. ^ Radeon™ SDK - Enhance Your 3D Graphics Development - AMD
  11. ^ C++ AMP (C++ Accelerated Massive Parallelism)
  12. ^ グラフィックス (C++ AMP)
  13. ^ Texture Copy Improvements in C++ AMP with Visual Studio 2013 - Parallel Programming in Native Code - Site Home - MSDN Blogs
  14. ^ C++ AMP Open Spec V1.2 Published - Parallel Programming in Native Code - Site Home - MSDN Blogs
  15. ^ AMDとMS,GPU演算用途向けのコンパイラ「C++ AMP v1.2」を発表 - 4Gamer.net

関連項目[編集]

外部リンク[編集]