Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory OpenCL内存体系结构与GPU的关系&x27;s物理内存/缓存(L1/L2…)?_Memory_Opencl_Gpu - Fatal编程技术网

Memory OpenCL内存体系结构与GPU的关系&x27;s物理内存/缓存(L1/L2…)?

Memory OpenCL内存体系结构与GPU的关系&x27;s物理内存/缓存(L1/L2…)?,memory,opencl,gpu,Memory,Opencl,Gpu,OpenCL内存体系结构之间是否存在直接关系: 本地/全局/固定/专用 以及物理GPU的内存和缓存。 例如,具有1GB内存/一级缓存/二级缓存的GPU卡。这些是否与本地/全球相关。。记忆 还是从全局内存分配本地/常量/专用内存? -谢谢OpenCL并没有真正讨论内存缓存。大多数现代图形卡确实有一些全局内存缓存协议,但在旧卡中不能保证这些协议。然而,这里是对不同记忆的概述 专用内存-此内存作为每个工作项的寄存器保存。GPU每个计算单元有非常大的寄存器文件。但是,如果需要,该内存可以溢出到本地内存中

OpenCL内存体系结构之间是否存在直接关系:

本地/全局/固定/专用

以及物理GPU的内存和缓存。 例如,具有1GB内存/一级缓存/二级缓存的GPU卡。这些是否与本地/全球相关。。记忆

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

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

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

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

恒定内存-全局内存的一部分,但为只读,因此可以主动缓存<代码>\常数用于定义这种类型的内存


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

非常感谢。你能告诉我是否可以分配一个50%全局内存大小的私有/本地内存吗。。。在现代GPUs@Maiss:对于现代GPU,每个计算单元的本地内存大约在16kB到64kB之间(并且不会溢出到全局内存afaik)。因此,你不可能读到各种来源说,私有内存可以是片外DRAM,这将使其速度最慢,但最近的GPU将该内存缓存到寄存器/L1中,这是mem层次结构中最高的。有人能证实这一点吗?是否有办法确定你私人记忆的性质?看起来它可能是最慢的(片外)或最快的(寄存器)。@YoungMoney我从来没有听说过GPU的私有内存在片外DRAM上。这似乎是非常反直觉的,如果有一个缓存不使用它。所有现代GPU都有用于专用内存的L1/L2缓存。私有内存在片外DRAM中的唯一方式是寄存器溢出,这只有在您强制时才会发生(因为GPU只会为计算单元分配更少的工作组以避免溢出)。AMD GPU的一些手册中提到的LDS是什么?也许是本地的?