0

这是 CUDA Global Memory 的后续问题,它在哪里? 参考 GSmith 的回应。这些 Q 解决了 CC > 2.0 的情况。

当我查找我的 Nvida 卡的规格时,它列出了 2GB 的“内存” 我开始相信这是这张卡的“全球”内存。也就是说,这是驻留在“片外”但在卡上的 GDDR3 内存。这是正确的吗?

我没有看到任何规范的“内存”为零的情况。一个存在吗?也就是说,我可以有一张没有片外存储器的卡吗?我所有的纹理、本地和常量内存实际上都驻留在固定和映射的主机内存中。

我可以通过固定超过 2GB 的主机内存来扩展我的全局内存使用量吗?我可以使用我所有的片外全局内存 (2GB) 并添加 (1GB) 更多的全局固定内存吗?或者我是否理解这张卡最多只能提供 2GB 的寻址空间?即我只能访问 2GB 的内存、未固定、固定、映射或任何组合。

如果设备使用固定的主机内存(未映射),我是否需要从 dev 到主机的 Memcpy?也就是说,内存在物理上位于主机端。它正在被设备使用,所以他们都可以看到它。为什么我需要将它复制到主机,当它已经存在时。默认情况下,它似乎是“映射”的。(什么机制阻止了这种双重访问?)

如何将共享内存映射到全局内存?(我在文档中没有找到任何提及。)这是一个“映射”的安排,还是我仍然需要将它从全局复制到共享,然后再回来?(这可以为我节省复制步骤吗?)

4

1 回答 1

1

建议每个问题问一个问题

当我查找我的 Nvida 卡的规格时,它列出了 2GB 的“内存”。我开始相信这是这张卡的“全球”内存。也就是说,这是驻留在“片外”但在卡上的 GDDR3 内存。这是正确的吗?

是的。

我没有看到任何规范的“内存”为零的情况。一个存在吗?也就是说,我可以有一张没有片外存储器的卡吗?我所有的纹理、本地和常量内存实际上都驻留在固定和映射的主机内存中。

最接近这个想法的 NVIDIA 可能是在Ion 2 芯片组中。但是没有支持 cuda 的 nvidia 独立显卡具有零板载片外内存。

我可以通过固定超过 2GB 的主机内存来扩展我的全局内存使用量吗?

您可以固定超过 2GB 的主机内存。但是,这不会扩展全局内存。它确实可以实现多种功能,例如提高主机设备传输率、重叠复制和计算以及从 GPU 对主机内存的零复制访问,但这与您使用全局内存的用途不同。零拷贝技术可能最接近将全局内存扩展到主机内存(概念上),但从 GPU 的角度来看,零拷贝非常慢。

如果设备使用固定的主机内存(未映射),我是否需要从 dev 到主机的 Memcpy?

是的,您仍然需要来回 cudaMemcpy 数据。

也就是说,内存在物理上位于主机端。它正在被设备使用

我不知道这个概念是从哪里来的。也许您指的是零拷贝,但与访问全局内存中的数据相比,零拷贝相对较慢。在小数据大小的情况下应该明智地使用它,并且绝不是一种直接增加卡上全局内存有效大小的直接方法。

如何将共享内存映射到全局内存?

共享内存不会自动映射到全局内存。该方法是在共享内存和全局内存之间来回复制您需要的数据。

于 2012-11-07T17:42:47.747 回答