据我所知。 CUDA上的常量内存是特定内存。它比全局内存更快。 但是在OpenCL的规范中。我得到以下的话。
__constant
或常量地址空间名称用于描述在全局内存中分配的变量以及在内核中作为只读变量访问的变量
所以__constant
内存来自__global
内存。这是否意味着它与__global
内存具有相同的访问性能?
答案 0 :(得分:7)
这取决于您使用的OpenCL平台的硬件和软件架构。例如,可以设想具有只读高速缓存的架构,其不需要参与高速缓存一致性。这些缓存可用于常量内存,但不能用于全局内存。因此,您可能会看到对常量内存的更快访问。
话虽如此,我熟悉的架构都不是这样运作的。所以这只是假设。
答案 1 :(得分:1)
OpenCL标准没有规定应该如何实现常量内存,但在NVIDIA GPU中,常量内存被缓存。我不知道AMD做了什么。