差分

ナビゲーションに移動 検索に移動

DirectCompute

2,966 バイト追加, 2018年12月13日 (木) 07:51
ページの作成:「'''DirectCompute'''(読み:だいれくとこんぴゅーと)とは、Windows上でGPGPUを手軽に扱うためのAPIである。大雑把にいえば[…」
'''DirectCompute'''(読み:だいれくとこんぴゅーと)とは、[[Windows]]上で[[GPGPU]]を手軽に扱うための[[API]]である。大雑把にいえば[[GPGPU]]で動かす[[プログラム]]を[[HLSL]]で記述できるというものである。

[[Windows10]]に追加された[[DirectX Raytracing]]もほぼDirectComputeの拡張のようなものとなっている。

== 対応 ==
DirectComputeは2008年に[[Windows7]]および[[DirectX11]]で登場したものである。[[シェーダーモデル]]で言えばSM4.1とSM5.0である。なおSM4.1では[[倍精度浮動小数点数]]が使えないという制限がある。

[[Windows7]]は空前の大ヒットで爆発的に普及した。
ただ[[インテル]]や[[NVIDIA]]といったGPUメーカーの[[DirectX11]]対応の動きが非常に遅くDirectX11対応の[[GPU]]が延々と普及しなかった。[[DirectX11]]対応は[[AMD]]は2009年と早かったが、[[NVIDIA]]は2010年、[[インテル]]に至っては2012年まで対応を見送るという状況が続いていた。
各社のDirectX11に対応したGPUをまとめると以下のような感じである。
* [[Radeon HD 5000系]]以上
* [[GeForce 400系]]以上
* [[Intel HD Graphics 4000系]]以上([[Ivy Bridge]]以降)

そのため[[マイクロソフト]]は[[DirectX10]]にもDirectComputeを追加するという対応をとることとなった。

== 従来のシェーダーとの違い ==
従来型の[[バーテックスシェーダー]]や[[ピクセルシェーダー]]から大きく変わったのは以下の4点である。
* 64ビット浮動小数点数演算が追加
* データ構造という概念が追加
* 共有メモリという概念が追加
* 排他制御命令と同期制御命令が追加

最大の変更は「共有メモリ」という概念が登場した点である。

従来であれば[[シェーダーユニット]]は完全に孤立したものであり演算開始から演算終了まで外界とは一切の連絡を取らないという仕様であった。これはその手段を奪うことで余計なことを考えず高速化が実現できるという設計思想である。

一方、[[コンピュートシェーダー]]では共有メモリを介してシェーダーユニット間で[[データ]]のやり取りができるようになった。つまり[[シェーダーユニット]]をいわゆる[[スレッド]]のように扱えるようになったのである。[[マルチスレッド]]といえば[[排他制御]]と[[同期制御]]なのでそれ用の命令も追加された。大雑把にいえば「ハードウェアスレッド」の誕生である。

== コンパイル ==
事前コンパイル
* fxc.exe

実行時コンパイル
* D3DX11CompileFromFile関数

== 使い方 ==
そのうち書く。

== 関連項目 ==
* [[CUDA]]
* [[OpenCL]]
* [[DirectCompute]]
* [[RenderScript]]
* [[Metal]]

[[category: GPGPU]]
匿名利用者

案内メニュー