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

标签 memory opencl gpu

OpenCL内存架构之间有什么直接关系吗:

本地/全局/常量/私有(private)memory

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

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

最佳答案

OpenCL 并没有真正讨论内存缓存。大多数现代显卡确实具有某种全局内存缓存协议(protocol),但在旧显卡中并不能保证这些协议(protocol)。不过,这里是不同内存的概述。

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

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

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

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

关于memory - OpenCL 内存架构和 GPU 物理内存/缓存(L1/L2...)之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10156966/

相关文章:

iphone - 保留计数 NSArray 与 NSMutableArray

linux - QEMU 在哪里映射客户操作系统的内核页面?

Swift 显式与推断类型 : Memory Efficiency

double - 我应该如何在 OpenCL 中启用 cl_khr_fp64?

parallel-processing - POCL(可移植计算语言)和OpenCL有什么区别?

Python 和 gpu OpenCV 函数

visual-studio - 在 Visual Studio 2017 中使用 CUDA

ios - Objective-C - 如何在 iOS 模拟器上强制低内存

java - 尝试释放内存时出现 EXCEPTION_ACCESS_VIOLATION (0xc0000005)

gpu - TensorFlow 可以自动将操作调度到所有可用的 GPU 上吗?