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

时间:2015-03-12 15:30:34

标签: c++ c cuda

我对统一虚拟内存感到困惑。

链接背后的文档(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或更高版本的GPU(Kepler类或更新版)

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

这个'统一'术语之间是否存在两种不同的东西,或者文档是否有点不连贯?

1 个答案:

答案 0 :(得分:2)

您所指的是统一虚拟地址空间,它与自CUDA 6.0以及架构3.0或更高版本引入的统一内存不同,并且无需从主机到设备进行显式数据传输

unified memory

unified memory2

您还可以查看:

hereand here