フォト

Google AdSense


  • AdSense
無料ブログはココログ

« NVIDIAのGDC 2012のセッションまとめページ | トップページ | Eurographics 2012の論文は忘れてた... »

2012.02.23

Compute Shaderのshared memoryメモ

"Secrets of CryENGINE 3 Graphics Technology"を読んでいたところ、ページ25の"Soft Shadows Approximation"で、"Compute Shader option: fetch all taps to CS shared memory and reuse them for both distance estimation and shadow computation"と言う記載がある。

Secrets of CryENGINE 3 Graphics Technology
http://www.crytek.com/cryengine/presentations/secrets-of-cryengine-3-graphics-technology

そうなんか、テクスチャフェッチした値をshared memoryに格納しておいてキャッシュして使うのがいいのか...。

...ほんとなんかと他の資料を探す。

Direct Compute – Bring GPU Computing to the Mainstream
http://www.nvidia.com/content/GTC/documents/1015_GTC09.pdf

まずは、13ページ

Shared variables are stored in on-chip (SM) memory
Cache to minimize off-chip bandwidth use
Efficient communication with a thread group

なるほどなぁ~。それから32ページ目、

Shared memory → Read gbuffers & depth only once

ほうほう。そんで、35ページにCompute Shaderでのメモリの配置について

・ローカル変数・・・on chip(レジスタ)
・ローカル配列・・・off chip
・shared変数・・・on chip(RAM)
・コンスタントバッファ・・・on chip(キャッシュ)
・シェーダーリソースビュー・・・off chip
・UAV・・・off chip

は置き場所が違うからアクセス速度が違うわけか。シェーダーリソースビューやUAVに比べるとshared変数は置き場所が速いわけか、なるほど。あと、ローカル配列はどうなっとるんじゃ?これは遅くなる?

それから、39ページ、

Shared memory Latency ~100x smaller than global memory

ここで言うグローバルメモリは、コンスタントバッファ、シェーダーリソースビュー、UAV。コンスタントバッファに関しては、 global memoryだけどアクセスは速いので残りの2つ。

これは最適化に独特のアプローチが必要になりそうだ。あと、AMDの場合も同じ事情なのかも調べないとなぁ。

« NVIDIAのGDC 2012のセッションまとめページ | トップページ | Eurographics 2012の論文は忘れてた... »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« NVIDIAのGDC 2012のセッションまとめページ | トップページ | Eurographics 2012の論文は忘れてた... »