关于CUDA统一虚拟内存的困惑

3

我对统一虚拟内存有些困惑。

链接(http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#unified-virtual-address-space)后面的文档说,当...

应用程序作为64位进程运行时,使用一个地址空间来为主机和所有计算能力为2.0及更高版本的设备提供服务。

但是这个链接(http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-requirements)说需要:

具有SM架构3.0或更高版本(Kepler类或更高版本)的GPU

此外,第一个链接说我可以使用cudaHostAlloc。然后第二个链接使用cudaMallocManaged

这个“统一”的术语是否有两种不同的含义,还是文档有点不连贯?


3
UVA和UM/UVM是两个不同的东西。 - Robert Crovella
1个回答

3
你所提到的是统一虚拟地址空间,它与统一内存不同。自CUDA 6.0以来,统一内存被引入,适用于架构3.0或更高版本,消除了从主机到设备的显式数据传输的需要。 统一内存 统一内存2 你还可以在这里检查: 这里以及这里

但是,当我仍然需要手动复制数据时,统一虚拟地址空间的意义在哪里?我没有看到与“无统一虚拟地址空间”相比的任何优势。 - Michael
1
@Michael: 请查看[这个链接][1]和[这个链接][2]。 [1]:https://dev59.com/zIjca4cB1Zd3GeqP0K7O#29014309?noredirect=1#comment46332975_29014309 .[2]:https://dev59.com/-XfZa4cB1Zd3GeqPTpzN - George

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接