アプリケーションでDirectComputeを使用する場合、Direct3D 11 APIもしくはDirect3D 12 APIを通してGPUデバイスを利用することになる。プログラムの記述にはHLSLと呼ばれるシェーダー言語(シェーディング言語)を使用するが、これはDirect3Dの頂点シェーダーやピクセルシェーダーといったグラフィックスパイプライン記述用に使われている言語でもある。GPGPU用のシェーダープログラムはコンピュートシェーダー[11]と呼ばれ、グラフィックスパイプラインとは独立して動作する。HLSLのコンピュートシェーダーはCUDAやOpenCLのカーネル関数(並列実行単位)の記述に非常によく似ている。なおDirect3Dの競合APIであるOpenGLでは、バージョン4.3でDirect3D同様のコンピュートシェーダーを導入した(OpenGLではコンピュートシェーダーの記述にGLSLを使用する)。
DirectComputeおよびコンピュートシェーダーがCUDAやOpenCLと比較して優れている点として、Direct3Dリアルタイムグラフィックスパイプラインとの連携がしやすい(シミュレーションの実行と可視化に向いている)、Direct3D/HLSLをすでに利用している場合は修得が容易である、などが挙げられる。また、マイクロソフトプラットフォーム専用という制約はあるが、逆にDirectX 11/DirectX 12対応でさえあればいかなるデバイスでも動作するというメリットがある。 前述のようにDirectX 10.x世代のGPUであってもDirectX 11 APIを使ってDirectComputeを実行することができるが、DirectX 11フル対応のGPUと比較して実行可能条件にいくつかの制約があるため、使用する際は注意が必要となる[12]。なお、DirectX 10.x(シェーダーモデル4.x)対応のコンピュートシェーダーはDirectCompute 4.x、およびDirectX 11(シェーダーモデル5.0)対応のコンピュートシェーダーはDirectCompute 5.0とも呼ばれる[13]。 倍精度浮動小数点数サポートに関しては、DirectCompute 4.xでは完全に不可能だが、DirectCompute 5.0では任意対応となる。 Direct3D 11用のマイクロソフト公式拡張ライブラリとしてD3DX 11が存在するが、その中でもさらにDirectCompute(コンピュートシェーダー)の拡張ライブラリとしてD3DCSXが存在する[14]。D3DCSX 11にはFFTおよびスキャンアルゴリズムが実装されている。
ダウンレベルハードウェアでの実行
D3DCSX
採用事例
BattleForge(英語版
S.T.A.L.K.E.R.: Call of Pripyat [17]
ロスト プラネット 2 [18]
Battlefield 3 [19]
Battlefield 4 [20]
DiRT 2