Memory CUDA全球内存,它在哪里?

Memory CUDA全球内存,它在哪里?,memory,cuda,global,Memory,Cuda,Global,我知道在CUDA的内存层次结构中,我们有共享内存、纹理内存、常量内存、寄存器,当然还有我们使用cudaMalloc()分配的全局内存 我一直在搜索我能找到的任何文档,但我还没有找到任何明确解释什么是全局记忆的文档 我认为,分配的全局内存位于图形卡本身的GDDR上,而不是与CPU共享的RAM上,因为其中一份文档确实指出,主机端无法解除指针的引用。我说的对吗?这将在本手册的第3.2.2节中讨论。简言之,所有类型的内存(即共享、恒定、纹理和全局)都驻留在设备(即GPU)本身的内存中 但是,您可以特别声

我知道在CUDA的内存层次结构中,我们有共享内存、纹理内存、常量内存、寄存器,当然还有我们使用cudaMalloc()分配的全局内存

我一直在搜索我能找到的任何文档,但我还没有找到任何明确解释什么是全局记忆的文档


我认为,分配的全局内存位于图形卡本身的GDDR上,而不是与CPU共享的RAM上,因为其中一份文档确实指出,主机端无法解除指针的引用。我说的对吗?

这将在本手册的第3.2.2节中讨论。简言之,所有类型的内存(即共享、恒定、纹理和全局)都驻留在设备(即GPU)本身的内存中


但是,您可以特别声明要“映射”的内存部分,即主机上的内存可以从设备访问。有关详细信息,请参见《编程指南》第3.2.4节。

本指南第3.2.2节对此进行了讨论。简言之,所有类型的内存(即共享、恒定、纹理和全局)都驻留在设备(即GPU)本身的内存中


但是,您可以特别声明要“映射”的内存部分,即主机上的内存可以从设备访问。有关此信息,请参阅编程指南的第3.2.4节。

全局内存是片外内存,但在图形卡上

本地内存存储在全局内存中,但地址是以这样一种方式交错的:当数组存储在其中时,当warp中的每个线程从其数组中的相同索引读取时,访问将合并

常量和纹理内存(最初)也存储在全局内存中,但缓存在片上缓存中


共享内存以及L1和L2缓存在芯片上。

全局内存在芯片外,但在图形卡上

本地内存存储在全局内存中,但地址是以这样一种方式交错的:当数组存储在其中时,当warp中的每个线程从其数组中的相同索引读取时,访问将合并

常量和纹理内存(最初)也存储在全局内存中,但缓存在片上缓存中


共享内存以及L1和L2缓存是片上的。

全局内存是一个虚拟地址空间,可以映射到设备内存(图形卡上的内存)或页面锁定(固定)主机内存。后者要求CC>1.0

本地、常量、纹理和本地内存在全局内存中分配,但通过不同的地址空间和缓存访问


在CC>2.0上,通用地址空间允许将共享内存映射到全局地址空间;但是,共享内存始终驻留在每SM片上内存中。

全局内存是一个虚拟地址空间,可以映射到设备内存(图形卡上的内存)或页面锁定(固定)主机内存。后者要求CC>1.0

本地、常量、纹理和本地内存在全局内存中分配,但通过不同的地址空间和缓存访问


在CC>2.0上,通用地址空间允许将共享内存映射到全局地址空间;但是,共享内存始终驻留在每SM片上内存中。

是的,我遇到了主机和设备内存的问题。然而,我的一位同行将全局内存解释为分配在主内存上,我认为不是这样。@gamerx:您的同行可能会对编程指南第3.2.4.3节中描述的映射内存感到困惑。这是不正确的。常量、纹理和全局可以驻留在设备内存和固定主机内存中。开发人员只能使用cudaHostAlloc和CUDAHOSTERGISTER控制全局设备内存的分配。其余的由司机决定。@GregSmith:这似乎不是第3.2.4节所暗示的。据我所知,开发人员必须明确地将内存定位为
cudahostallocmap
,这样才能实现这一点。是的,我遇到了主机和设备内存的问题。然而,我的一位同行将全局内存解释为分配在主内存上,我认为不是这样。@gamerx:您的同行可能会对编程指南第3.2.4.3节中描述的映射内存感到困惑。这是不正确的。常量、纹理和全局可以驻留在设备内存和固定主机内存中。开发人员只能使用cudaHostAlloc和CUDAHOSTERGISTER控制全局设备内存的分配。其余的由司机决定。@GregSmith:这似乎不是第3.2.4节所暗示的。据我所知,开发人员必须显式地将内存定位为
cudaHostAllocMapped
。全局内存可以在设备内存或固定主机内存中。@GregSmith:固定主机内存可以映射到设备的内存空间,但我不认为它被称为全局内存。CUDA编程指南4.2第5.3.2.1节指出,“全局内存驻留在设备内存中”,尽管这句话本身有点奇怪:)全局内存可以在设备内存或固定主机内存中。@GregSmith:固定主机内存可以映射到设备的内存空间,但我不认为它被称为全局记忆。CUDA编程指南4.2第5.3.2.1节指出,“全局内存驻留在设备内存中”,尽管这句话本身有点奇怪:)请注意,页锁定内存可以映射(内核内存请求穿过PCIe总线到达CPU的RAM芯片)或取消映射(在内核访问内存之前,必须先将内存复制到图形卡上的物理片外RAM芯片上)。请参阅《CUDA C编程指南》第3.2.4节。请注意,页锁定内存可以映射(内核内存请求穿过PCIe总线到达CPU的RAM芯片)或取消映射(必须先将内存复制到图形卡上的物理片外RAM芯片上,然后才能访问k