3

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

本地/全局/常量/私有内存

以及物理 GPU 的内存和缓存。例如具有 1GB 内存/L1 缓存/L2 缓存的 GPU 卡。这些与本地/全局..内存有关吗?

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

4

1 回答 1

5

OpenCL 并没有真正讨论内存缓存。大多数现代图形卡确实具有某种用于全局内存的缓存协议,但在旧卡中并不能保证这些协议。然而,这里是不同记忆的概述。

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

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

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

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

于 2012-04-15T07:42:02.740 回答