私の知る限り。CUDAのコンスタントメモリは特定のメモリです。そして、それはグローバルメモリよりも高速です。しかし、OpenCLの仕様では。次の言葉が出ます。
または定数アドレス空間名は、
__constant
グローバルメモリに割り当てられ、カーネル内で読み取り専用変数としてアクセスされる変数を記述するために使用されます
つまり、__constant
記憶は記憶からのもの__global
です。__global
それは、メモリと同じアクセスパフォーマンスがあることを意味しますか?
私の知る限り。CUDAのコンスタントメモリは特定のメモリです。そして、それはグローバルメモリよりも高速です。しかし、OpenCLの仕様では。次の言葉が出ます。
または定数アドレス空間名は、
__constant
グローバルメモリに割り当てられ、カーネル内で読み取り専用変数としてアクセスされる変数を記述するために使用されます
つまり、__constant
記憶は記憶からのもの__global
です。__global
それは、メモリと同じアクセスパフォーマンスがあることを意味しますか?
これは、使用しているOpenCLプラットフォームのハードウェアおよびソフトウェアアーキテクチャによって異なります。たとえば、キャッシュコヒーレンシに参加する必要のない読み取り専用キャッシュを備えたアーキテクチャを想定できます。これらのキャッシュはコンスタントメモリには使用できますが、グローバルメモリには使用できません。したがって、コンスタントメモリへのアクセスが高速になる可能性があります。
そうは言っても、私が精通しているアーキテクチャはどれもこのように動作しません。つまり、これは単なる仮説です。
OpenCL標準では、コンスタントメモリの実装方法は指定されていませんが、NVIDIAGPUではコンスタントメモリがキャッシュされます。AMDが何をしているのかわかりません。