「CUDACプログラミングガイド」によると、コンスタントメモリアクセスは、マルチプロセッサコンスタントキャッシュがヒットした場合にのみメリットがあります(セクション5.3.2.4)1。そうしないと、合体したグローバルメモリ読み取りの場合よりも、ハーフワープに対してさらに多くのメモリ要求が発生する可能性があります。では、なぜ一定のメモリサイズが64KBに制限されているのでしょうか。
二度と聞かないためにもう一つ質問。私が理解している限り、Fermiアーキテクチャでは、テクスチャキャッシュはL2キャッシュと組み合わされています。テクスチャの使用はまだ意味がありますか、それともグローバルメモリの読み取りは同じ方法でキャッシュされますか?
1定数メモリ(セクション5.3.2.4)
コンスタントメモリスペースはデバイスメモリに常駐し、セクションF.3.1およびF.4.1で説明したコンスタントキャッシュにキャッシュされます。
コンピューティング機能1.xのデバイスの場合、ワープに対する一定のメモリ要求は、最初に2つの要求に分割されます。1つはハーフワープごとに1つで、独立して発行されます。
次に、リクエストは最初のリクエストにある異なるメモリアドレスと同じ数の個別のリクエストに分割され、個別のリクエストの数に等しい係数でスループットが低下します。
結果として得られる要求は、キャッシュヒットの場合は一定のキャッシュのスループットで、それ以外の場合はデバイスメモリのスループットで処理されます。