CUDA:散乱書き込みとは何ですか?

cuda

CUDA SDKのさまざまなCUDAデモは「分散書き込み」を参照しています。 この散在した書き込みとは何ですか、そしてなぜそれはとても素晴らしいのですか? それとは対照的に、それは何を意味しますか?

  8  3


ベストアンサー

ここではCUDAの用語を使います。

「散在書き込み」とは、各キューダスレッドから任意のアドレスに書き込みを行っていることを意味します。 あなたのワープのスレッドは連続したメモリに書き込みません、例えば)。 それは2次元コヒーレントであり、ハードウェアによって合体させることができるフレームバッファ書き込みとは対照的です。 それほど前までGPUに利用可能だった唯一の書き込みはそれらでした。

それらは散在する場所からデータを読み込み、集められたデータに対してスレッドがSIMD方式で実行される前にそれらをすべて収集する「収集読み取り」の逆の操作です。 しかし、ギャザーリードは長い間任意のテクスチャフェッチを通してGPUで利用可能でした。

5


散在書き込みは、任意のメモリアドレスに書き込むことができるので素晴らしいです。 以前のシェーダ障害は、通常、特定のシェーダプログラムが書き込めるメモリアドレスに制限がありました。

「グラフィックAPIのフラグメントプログラムはあらかじめ指定された場所に32個のフロート(RGBA * 8レンダーターゲット)を出力することに制限されていますが、CUDAは分散書き込みをサポートしています 任意の住所への店舗数に制限はありません。 これにより、グラフィックAPISを使用しては不可能だった多くの新しいアルゴリズムをCUDAを使用して効率的に実行できます

CUDA FAQから:

基本的にそれはCUDAプログラムが書くのをより簡単にします、なぜならそれらは彼らが結果を書くことができる場所によって制限されないからです。 GPUで優れたパフォーマンスを得るための鍵の1つは、メモリの局所性を悪用することです。 グローバルメモリへの書き込みによって散在した書き込みを多用すると、おそらくパフォーマンスに影響を与えます。

5


タイトルとURLをコピーしました