DirectCompute

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

Microsoft DirectCompute (マイクロソフト・ダイレクトコンピュート) は、Microsoft Windows OS上で"General-Purpose computing on Graphics Processing Unit" (GPGPU) をサポートするためのアプリケーション・プログラミング・インターフェイス(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のアーキテクチャは、クロノス・グループ(en:Khronos Group)のOpen Computing Language (OpenCL) やNVIDIAのCompute Unified Device Architecture (CUDA) といった競合間も含めて、コンピュータのインターフェイスを共有する。

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

Windows 10とともにリリースされたDirectX 12 (Direct3D 12) は、DirectX 11までよりもハードウェアに近いローレベルAPIとなり、オーバーヘッドの低減やマルチコアCPUを活用したマルチスレッドレンダリングの実行効率改善などがなされている[6]。Direct3D 12では、コマンドキュー/コマンドリストベースの非同期API(ノンブロッキングAPI)や、パイプラインステートオブジェクト (PSO) などによって、グラフィックスだけでなくコンピュート (DirectCompute) タスクの性能向上も図られている[7]。また、機能レベル12_1を満たすハードウェア上でRasterizer Ordered View (ROV) の使用が可能となるcs_5_1プロファイルが追加されている[8]

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

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

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

D3DCSX[編集]

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

採用事例[編集]

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. ^ What is Direct3D 12? (Windows)
  7. ^ DirectCompute in DirectX12: Innovations from the Game Space
  8. ^ Shader Model 5.1 (Windows)
  9. ^ ダウンレベルのハードウェア上のコンピュート シェーダー
  10. ^ Compute Shader Overview (Windows)
  11. ^ D3DCSX 11 Interfaces (Windows)
  12. ^ BattleForge - AMD
  13. ^ Battleforge: The First DX11 Game - AMD’s Radeon HD 5850: The Other Shoe Drops
  14. ^ AMD Gaming: 11 Days of DirectX® 11, Day Nine: GSC | AMD Blogs
  15. ^ CEDEC 2010 - Windows版「ロストプラネット2」にみるDirectX 11フィーチャー(後編) (1) DirectComputeによる波の生成(1) | マイナビニュース
  16. ^ 西川善司の3Dゲームファンのためのグラフィックス講座。台頭するDirectCompute技術 - GAME Watch
  17. ^ Battlefield 4 + Frostbite + Mantle
  18. ^ 4Gamer.net ― 「DiRT 2」のグラフィックスオプションで知る,DirectX 11のポテンシャル
  19. ^ 4Gamer.net ― DirectX 11が加速するゲームの進化~AMD,新世代DirectXのポイントとメリットを解説
  20. ^ AMD Gaming: DiRT 3- Rally racing is back | AMD Blogs
  21. ^ GS-4108, DirectCompute in Gaming, by Bill Bilodeau
  22. ^ 4Gamer.net ― [GDC 2013]PC版「TOMB RAIDER」は髪がすごい。ララ・クロフト秘伝のヘアケア技術教えます
  23. ^ [CEDEC 2013]さらさらヘア実現の秘密が明らかに。「TOMB RAIDER」PC版の毛髪レンダリング技術「TressFX Hair」はこうして実現された - 4Gamer.net
  24. ^ AMD APU13: AMD Talks DirectCompute in Gaming
  25. ^ Radeon™ SDK - Enhance Your 3D Graphics Development - AMD
  26. ^ "GPU Computing for Games", Cem Cebenoyan, gameworks.nvidia.com
  27. ^ Beyond Programmable Shading Course; ACM SIGGRAPH 2010; DirectCompute Use in Real-Time Rendering Products; Chas. Boyd, Microsoft Windows Graphics

関連項目[編集]

外部リンク[編集]