DirectCompute

Microsoft DirectCompute (マイクロソフト・ダイレクトコンピュート) は、Microsoft Windows OS上で"General-Purpose computing on Graphics Processing Unit" (GPGPU) をサポートするためのアプリケーション・プログラミング・インターフェイス（API）の1つである。

 概要 
DirectComputeはWindows用マルチメディアAPIの集まりであるMicrosoft DirectX 11の一部として、当初はシェーダーモデル5.0すなわちDirectX 11（Direct3D 11）フル対応GPU向けにリリースされる予定だったが、その後DirectX 10.xとDirectX 11に対応するGPU上で実行できるように仕様変更された（cs_5_0プロファイルの他に、ダウンレベルのcs_4_0、cs_4_1のサポートが追加された）AMDのGPGPU戦略は新章へ - ATI Streamの展望、DirectX Compute Shaderの衝撃 (4) 今後のGPGPU動向は? | マイナビニュース ASCII.jp：GPGPUをWindowsでサポートする「DirectCompute」 (2/2)｜あなたの知らないWindows DirectCompute | NVIDIA Developer 「CUDAとは？」 - NVIDIA社 (2011年1月3日確認)   - AMD社 (英語、2011年1月3日DirectComputeの記述は確認できず) 。DirectComputeのアーキテクチャは、クロノス・グループ（:en:Khronos Group）のOpen Computing Language () やのCompute Unified Device Architecture () といった競合間も含めて、コンピュータのインターフェイスを共有する。

DirectComputeを利用できるのは少なくともDirectX 11を利用できるオペレーティングシステム、すなわちWindows Vista（SP2 Platform Update）、Windows 7、Windows 8.x、Windows 10、そしてWindows 11である。

Windows 10とともにリリースされたDirectX 12 (Direct3D 12) は、DirectX 11までよりもハードウェアに近いローレベルAPIとなり、オーバーヘッドの低減やマルチコアCPUを活用したマルチスレッドレンダリングの実行効率改善などがなされているWhat is Direct3D 12? (Windows)。Direct3D 12では、コマンドキュー／コマンドリストベースの非同期API（ノンブロッキングAPI）や、パイプラインステートオブジェクト (PSO) などによって、グラフィックスだけでなくコンピュート (DirectCompute) タスクの性能向上も図られているDirectCompute in DirectX12: Innovations from the Game Space。また、Root Signatureの指定や、Rasterizer Ordered View (ROV) に対応するハードウェア上でのROVオブジェクトの使用などが可能となるcs_5_1プロファイルが追加されているShader Model 5.1 (Windows) HLSL Shader Model 5.1 Features for Direct3D 12 (Windows) Hardware Feature Levels (Windows)。

 コンピュートシェーダー 
アプリケーションでDirectComputeを使用する場合、Direct3D 11 APIもしくはDirect3D 12 APIを通してGPUデバイスを利用することになる。
プログラムの記述にはHLSLと呼ばれるシェーダー言語（シェーディング言語）を使用するが、これはDirect3Dの頂点シェーダーやピクセルシェーダーといったグラフィックスパイプライン記述用に使われている言語でもある。GPGPU用のシェーダープログラムはコンピュートシェーダーコンピュート シェーダーの概要 | Microsoft Learnと呼ばれ、グラフィックスパイプラインとは独立して動作する。
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と比較して実行可能条件にいくつかの制約があるため、使用する際は注意が必要となるダウンレベルのハードウェア上のコンピュート シェーダー。なお、DirectX 10.x（シェーダーモデル4.x）対応のコンピュートシェーダーはDirectCompute 4.x、およびDirectX 11（シェーダーモデル5.0）対応のコンピュートシェーダーはDirectCompute 5.0とも呼ばれるCompute Shader Overview - Win32 apps | Microsoft Learn。

倍精度浮動小数点数サポートに関しては、DirectCompute 4.xでは完全に不可能だが、DirectCompute 5.0では任意対応となる。

 D3DCSX 
Direct3D 11用のマイクロソフト公式拡張ライブラリとしてD3DX 11が存在するが、その中でもさらにDirectCompute（コンピュートシェーダー）の拡張ライブラリとしてD3DCSXが存在するD3DCSX 11 Interfaces (Windows)。D3DCSX 11にはFFTおよびスキャンアルゴリズムが実装されている。

 採用事例 
  BattleForge - AMD Battleforge: The First DX11 Game - AMD’s Radeon HD 5850: The Other Shoe Drops
 S.T.A.L.K.E.R.: Call of Pripyat AMD Gaming: 11 Days of DirectX® 11, Day Nine: GSC | AMD Blogs
 ロスト プラネット 2 CEDEC 2010 - Windows版「ロストプラネット2」にみるDirectX 11フィーチャー(後編) (1) DirectComputeによる波の生成(1) | マイナビニュース
 Battlefield 3 西川善司の3Dゲームファンのためのグラフィックス講座。台頭するDirectCompute技術 - GAME Watch
 Battlefield 4 Battlefield 4 + Frostbite + Mantle
  4Gamer.net ― 「DiRT 2」のグラフィックスオプションで知る，DirectX 11のポテンシャル 4Gamer.net ― DirectX 11が加速するゲームの進化～AMD，新世代DirectXのポイントとメリットを解説
  AMD Gaming: DiRT 3- Rally racing is back | AMD Blogs
  GS-4108, DirectCompute in Gaming, by Bill Bilodeau
 メトロ2033 (Windows版) - Diffusion-based DoF (depth of field) "GPU Computing for Games", Cem Cebenoyan, gameworks.nvidia.com Beyond Programmable Shading Course; ACM SIGGRAPH 2010; DirectCompute Use in Real-Time Rendering Products; Chas. Boyd, Microsoft Windows Graphics
 トゥームレイダー (2013年のゲーム) - AMD TressFX 4Gamer.net ― ［GDC 2013］PC版「TOMB RAIDER」は髪がすごい。ララ・クロフト秘伝のヘアケア技術教えます ［CEDEC 2013］さらさらヘア実現の秘密が明らかに。「TOMB RAIDER」PC版の毛髪レンダリング技術「TressFX Hair」はこうして実現された - 4Gamer.net AMD APU13: AMD Talks DirectCompute in Gaming Radeon™ SDK - Enhance Your 3D Graphics Development - AMD
 Call of Duty: Ghosts - NVIDIA HairWorks Introducing NVIDIA HairWorks: fur and hair simulation solution | PhysXInfo.com - PhysX News

 C++ AMP 

 脚注 

 関連項目 
 GPGPU
 OpenCL
 OpenGL
 CUDA
 Direct3D
 DirectX

 外部リンク 
 DirectCompute | Games for Windows and the DirectX SDK blog (英語)
 Your Direct Connection to DirectCompute - AMD (英語)
 DirectCompute | NVIDIA Developer (英語)
 Microsoft* DirectCompute on Intel® microarchitecture Code Name Ivy Bridge Processor Graphics | Intel® Developer Zone (英語)
 AMD and CyberLink announcement about Accelerated Video Applications with Windows 7 DirectX 11 DirectCompute
 DirectCompute Benchmark
  (中国語) 


 speaking-directly - AMD社CMO, Nigel Dessauのブログ（英語、2011年1月3日確認）

Category:DirectX
Category:GPGPU
Category:GPGPUライブラリー