DirectCompute
Microsoft DirectCompute (マイクロソフト・ダイレクトコンピュート) は、Microsoft Windows OS上で"General-Purpose computing on Graphics Processing Unit" (GPGPU) をサポートするためのアプリケーション・プログラミング・インターフェイス(API)の1つである。
概要
編集
DirectComputeはWindows用マルチメディアAPIの集まりであるMicrosoft DirectX11の一部として、当初はシェーダーモデル5.0すなわちDirectX 11︵Direct3D11︶フル対応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 7、Windows 8.x、Windows 10、そしてWindows 11である。
Windows 10とともにリリースされたDirectX 12 (Direct3D 12) は、DirectX 11までよりもハードウェアに近いローレベルAPIとなり、オーバーヘッドの低減やマルチコアCPUを活用したマルチスレッドレンダリングの実行効率改善などがなされている[6]。Direct3D 12では、コマンドキュー/コマンドリストベースの非同期API︵ノンブロッキングAPI︶や、パイプラインステートオブジェクト (PSO) などによって、グラフィックスだけでなくコンピュート (DirectCompute) タスクの性能向上も図られている[7]。また、Root Signatureの指定や、Rasterizer Ordered View (ROV) に対応するハードウェア上でのROVオブジェクトの使用などが可能となるcs_5_1プロファイルが追加されている[8] [9] [10]。
コンピュートシェーダー
編集
アプリケーションで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では任意対応となる。
D3DCSX
編集Direct3D 11用のマイクロソフト公式拡張ライブラリとしてD3DX 11が存在するが、その中でもさらにDirectCompute(コンピュートシェーダー)の拡張ライブラリとしてD3DCSXが存在する[14]。D3DCSX 11にはFFTおよびスキャンアルゴリズムが実装されている。
採用事例
編集- BattleForge [15] [16]
- S.T.A.L.K.E.R.: Call of Pripyat [17]
- ロスト プラネット 2 [18]
- Battlefield 3 [19]
- Battlefield 4 [20]
- DiRT 2 [21] [22]
- DiRT 3 [23]
- DiRT Showdown [24]
- メトロ2033 (Windows版) - Diffusion-based DoF (depth of field) [25] [26]
- トゥームレイダー (2013年のゲーム) - AMD TressFX [27] [28] [29] [30]
- Call of Duty: Ghosts - NVIDIA HairWorks [31]
C++ AMP
編集詳細は「C++ AMP」を参照
脚注
編集
(一)^ 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日確認) [リンク切れ]
(五)^ Nigel Dessau, senior VP and CMO at AMD, about DirectCompute - AMD社 (英語、2011年1月3日DirectComputeの記述は確認できず) [リンク切れ]
(六)^ What is Direct3D 12? (Windows)
(七)^ DirectCompute in DirectX12: Innovations from the Game Space
(八)^ Shader Model 5.1 (Windows)
(九)^ HLSL Shader Model 5.1 Features for Direct3D 12 (Windows)
(十)^ Hardware Feature Levels (Windows)
(11)^ コンピュート シェーダーの概要 | Microsoft Learn
(12)^ ダウンレベルのハードウェア上のコンピュート シェーダー
(13)^ Compute Shader Overview - Win32 apps | Microsoft Learn
(14)^ D3DCSX 11 Interfaces (Windows)
(15)^ BattleForge - AMD
(16)^ Battleforge: The First DX11 Game - AMD’s Radeon HD 5850: The Other Shoe Drops
(17)^ AMD Gaming: 11 Days of DirectX® 11, Day Nine: GSC | AMD Blogs
(18)^ CEDEC 2010 - Windows版﹁ロストプラネット2﹂にみるDirectX 11フィーチャー(後編) (1) DirectComputeによる波の生成(1) | マイナビニュース
(19)^ 西川善司の3Dゲームファンのためのグラフィックス講座。台頭するDirectCompute技術 - GAME Watch
(20)^ Battlefield 4 + Frostbite + Mantle
(21)^ 4Gamer.net ― ﹁DiRT 2﹂のグラフィックスオプションで知る,DirectX 11のポテンシャル
(22)^ 4Gamer.net ― DirectX 11が加速するゲームの進化~AMD,新世代DirectXのポイントとメリットを解説
(23)^ AMD Gaming: DiRT 3- Rally racing is back | AMD Blogs
(24)^ GS-4108, DirectCompute in Gaming, by Bill Bilodeau
(25)^ "GPU Computing for Games", Cem Cebenoyan, gameworks.nvidia.com
(26)^ Beyond Programmable Shading Course; ACM SIGGRAPH 2010; DirectCompute Use in Real-Time Rendering Products; Chas. Boyd, Microsoft Windows Graphics
(27)^ 4Gamer.net ― ﹇GDC 2013﹈PC版﹁TOMB RAIDER﹂は髪がすごい。ララ・クロフト秘伝のヘアケア技術教えます
(28)^ ﹇CEDEC 2013﹈さらさらヘア実現の秘密が明らかに。﹁TOMB RAIDER﹂PC版の毛髪レンダリング技術﹁TressFX Hair﹂はこうして実現された - 4Gamer.net
(29)^ AMD APU13: AMD Talks DirectCompute in Gaming
(30)^ Radeon™ SDK - Enhance Your 3D Graphics Development - AMD
(31)^ Introducing NVIDIA HairWorks: fur and hair simulation solution | PhysXInfo.com - PhysX News
関連項目
編集外部リンク
編集- 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
- DX11 info from Open Source GPU site (中国語)
- Example of DirectCompute for Next Generation Game Effects [リンク切れ]
- DirectCompute for AMD [リンク切れ]
- speaking-directly - AMD社CMO, Nigel Dessauのブログ(英語、2011年1月3日確認)[リンク切れ]