「DirectCompute」を編集中

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

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
'''DirectCompute'''(読み:だいれくとこんぴゅーと)とは、[[Windows]]上で[[GPGPU]]を手軽に扱うための[[API]]である。
+
'''DirectCompute'''(読み:だいれくとこんぴゅーと)とは、[[Windows]]上で[[GPGPU]]を手軽に扱うための[[API]]である。大雑把にいえば[[GPGPU]]で動かす[[プログラム]]を[[HLSL]]で記述できるというものである。
 
 
大雑把にいえば[[GPGPU]]で動かす[[プログラム]]を[[HLSL]]で記述できるというものである。C言語がベースのCUDAやOpenCLなどと異なり、HLSLなのでグラフィックス関係でシェーダーを触っていた人に優しい。
 
 
 
Direct3Dのコマンドリストに混ぜ込むことができるので、コンピュートシェーダーで計算した結果をレンダリングシェーダーで描画なんてことがシンプルに記述できる。
 
  
 
[[Windows10]]に追加された[[DirectX Raytracing]]もほぼDirectComputeの拡張のようなものとなっている。
 
[[Windows10]]に追加された[[DirectX Raytracing]]もほぼDirectComputeの拡張のようなものとなっている。
  
==対応==  
+
== 対応 ==  
 
DirectComputeは2008年に[[Windows7]]および[[DirectX11]]で登場したものである。[[シェーダーモデル]]で言えばSM4.1とSM5.0である。なおSM4.1では[[倍精度浮動小数点数]]が使えないという制限がある。
 
DirectComputeは2008年に[[Windows7]]および[[DirectX11]]で登場したものである。[[シェーダーモデル]]で言えばSM4.1とSM5.0である。なおSM4.1では[[倍精度浮動小数点数]]が使えないという制限がある。
  
13行目: 9行目:
 
ただ[[インテル]]や[[NVIDIA]]といったGPUメーカーの[[DirectX11]]対応の動きが非常に遅くDirectX11対応の[[GPU]]が延々と普及しなかった。[[DirectX11]]対応は[[AMD]]は2009年と早かったが、[[NVIDIA]]は2010年、[[インテル]]に至っては2012年まで対応を見送るという状況が続いていた。
 
ただ[[インテル]]や[[NVIDIA]]といったGPUメーカーの[[DirectX11]]対応の動きが非常に遅くDirectX11対応の[[GPU]]が延々と普及しなかった。[[DirectX11]]対応は[[AMD]]は2009年と早かったが、[[NVIDIA]]は2010年、[[インテル]]に至っては2012年まで対応を見送るという状況が続いていた。
 
各社のDirectX11に対応したGPUをまとめると以下のような感じである。
 
各社のDirectX11に対応したGPUをまとめると以下のような感じである。
 
+
* [[Radeon HD 5000系]]以上
*[[Radeon HD 5000系]]以上
+
* [[GeForce 400系]]以上
*[[GeForce 400系]]以上
+
* [[Intel HD Graphics 4000系]]以上([[Ivy Bridge]]以降)
*[[Intel HD Graphics 4000系]]以上([[Ivy Bridge]]以降)
 
  
 
そのため[[マイクロソフト]]は[[DirectX10]]にもDirectComputeを追加するという対応をとることとなった。
 
そのため[[マイクロソフト]]は[[DirectX10]]にもDirectComputeを追加するという対応をとることとなった。
  
==従来のシェーダーとの違い==
+
== 従来のシェーダーとの違い ==
 
従来型の[[バーテックスシェーダー]]や[[ピクセルシェーダー]]から大きく変わったのは以下の4点である。
 
従来型の[[バーテックスシェーダー]]や[[ピクセルシェーダー]]から大きく変わったのは以下の4点である。
 
+
* 64ビット浮動小数点数演算が追加
*64ビット浮動小数点数演算が追加
+
* データ構造という概念が追加
*データ構造という概念が追加
+
* 共有メモリという概念が追加
*共有メモリという概念が追加
+
* 排他制御命令と同期制御命令が追加
*排他制御命令と同期制御命令が追加
 
  
 
最大の変更は「共有メモリ」という概念が登場した点である。
 
最大の変更は「共有メモリ」という概念が登場した点である。
34行目: 28行目:
 
一方、[[コンピュートシェーダー]]では共有メモリを介してシェーダーユニット間で[[データ]]のやり取りができるようになった。つまり[[シェーダーユニット]]をいわゆる[[スレッド]]のように扱えるようになったのである。[[マルチスレッド]]といえば[[排他制御]]と[[同期制御]]なのでそれ用の命令も追加された。大雑把にいえば「ハードウェアスレッド」の誕生である。
 
一方、[[コンピュートシェーダー]]では共有メモリを介してシェーダーユニット間で[[データ]]のやり取りができるようになった。つまり[[シェーダーユニット]]をいわゆる[[スレッド]]のように扱えるようになったのである。[[マルチスレッド]]といえば[[排他制御]]と[[同期制御]]なのでそれ用の命令も追加された。大雑把にいえば「ハードウェアスレッド」の誕生である。
  
==コンパイル==
+
== コンパイル ==
 
事前コンパイル
 
事前コンパイル
 
+
* fxc.exe
*fxc.exe
 
  
 
実行時コンパイル
 
実行時コンパイル
 +
* D3DX11CompileFromFile関数
  
*D3DX11CompileFromFile関数
+
== 使い方 ==
 
 
==使い方==
 
 
そのうち書く。
 
そのうち書く。
  
==関連項目==
+
== 関連項目 ==
 
+
* [[CUDA]]
*[[CUDA]]
+
* [[OpenCL]]
*[[OpenCL]]
+
* [[DirectCompute]]
*[[DirectCompute]]
+
* [[RenderScript]]
*[[RenderScript]]
+
* [[Metal]]
*[[Metal]]
 
  
 
[[category: GPGPU]]
 
[[category: GPGPU]]

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)