OpenCL内存架构与GPU的物理内存/缓存(L1/L2 ......)之间的关系?

Mai*_*iss 3 memory opencl gpu-programming

OpenCL内存架构之间是否有任何直接关系:

本地/全局/常量/专用内存

而物理GPU的内存和缓存.例如,具有1GB内存/ L1缓存/ L2缓存的GPU卡.这些与本地/全球......记忆有关吗?

或者是从全局内存分配的本地/常量/专用内存?-谢谢

KLe*_*ee1 5

OpenCL并没有真正讨论缓存内存.大多数现代显卡都有一些用于全局内存的缓存协议,但在旧卡中无法保证这些协议.然而,这里是不同记忆的概述.

专用内存 - 该内存作为每个工作项的寄存器保存.GPU每个计算单元具​​有非常大的寄存器文件.但是,如果需要,此内存可能会溢出到本地内存中.创建变量时,默认情况下会分配专用内存.

本地内存 - 工作组本地和共享的内存.此内存系统通常位于计算单元本身上,无法由其他工作组读取或写入.这种内存通常在GPU架构上具有非常低的延迟(在CPU架构上,这个内存只是系统内存的一部分).此内存通常用作全局内存的手动缓存.本地内存由__local属性指定.

常量内存 - 全局内存的一部分,但只读,因此可以积极缓存. __constant用于定义此类型的内存.

全局内存 - 这是GPU的主要内存. __global用于将内存放入全局内存空间.