GPU 最適化の話

Local Memory and Register Spilling
https://developer.download.nvidia.com/CUDA/training/register_spilling.pdf

GPUが用いるメモリのアクセス時間の短縮方法
https://news.mynavi.jp/article/architecture-322/

GPUにおける1スレッドあたりのキャッシュ容量の考え方
https://news.mynavi.jp/article/architecture-333/

HPC分野におけるGPU活用技術 〜アクセラレータ技術WG成果報告〜
https://www.ssken.gr.jp/MAINSITE/download/newsletter/2012/20121024-sci-2/lecture-03/SSKEN_sci2012-2_inoue_presentation.pdf

Compute Shader のバッファの種類

NVIDIA DrectCompute Programming Guide
http://developer.download.nvidia.com/compute/DevZone/docs/html/DirectCompute/doc/DirectCompute_Programming_Guide.pdf

Compute Shader のメモリー周りを解説している記事です。
入門に最適です。

DirectX 10 まではシェーダーからリソースの読み込みしか出来ませんでしたが、DirectX 11 からはシェーダーからリソースへの書き込みにも対応しています。レンダーターゲット以外の任意のメモリ領域にも値を書き込むことができるようになっています。

DirectX11 で生成できるバッファの種類には下記のものがあります。RW とついている型はシェーダーからの読み書きが行えます。ついていない型は読み取り専用です。Append/Consume バッファはシェーダー上でスタック (FILO) のようにデータを処理できるバッファです。

  • RWBuffer
  • Texture1D/RWTexture1D
  • Texture1DArray/RWTexture1DArray
  • Texture2D/RWTexture2D
  • Texture2DArray/RWTexture2DArray
  • Texture3D/RWTexture3D,
  • StructuredBuffer/RWStructuredBuffer
  • ByteAddressBuffer/RWByteAddressBuffer
  • AppendStructuredBuffer/ConsumeStructuredBuffer

MSDN の RWTexture2DStructuredBuffer のページは参考になります。

AppendStructuredBuffer/ConsumeStructuredBuffer