C++ 关于CUDA统一虚拟内存的困惑
我对统一虚拟内存有些困惑 链接()后面的文档说它可以在以下情况下使用 当应用程序作为64位进程运行时,主机和计算能力为2.0及更高版本的所有设备使用一个地址空间 但是这个链接()说它需要: 具有SM架构3.0或更高版本(开普勒类或更高版本)的GPU 此外,第一个链接说我可以使用C++ 关于CUDA统一虚拟内存的困惑,c++,c,cuda,C++,C,Cuda,我对统一虚拟内存有些困惑 链接()后面的文档说它可以在以下情况下使用 当应用程序作为64位进程运行时,主机和计算能力为2.0及更高版本的所有设备使用一个地址空间 但是这个链接()说它需要: 具有SM架构3.0或更高版本(开普勒类或更高版本)的GPU 此外,第一个链接说我可以使用cudaHostAlloc。第二个则使用cudamalocmanaged 这个“统一”术语之间有两个不同的方面,还是文档有点不连贯?您指的是统一虚拟地址空间,它与CUDA 6.0和架构3.0或更高版本引入的统一内存不同,不
cudaHostAlloc
。第二个则使用cudamalocmanaged
这个“统一”术语之间有两个不同的方面,还是文档有点不连贯?您指的是统一虚拟地址空间,它与CUDA 6.0和架构3.0或更高版本引入的统一内存不同,不需要从主机到设备进行显式数据传输 您还可以检查:
,UVA和UM/UVM是两种不同的东西。但是,当我仍然需要手动复制数据时,统一虚拟地址空间有什么意义呢?我不认为“没有统一的虚拟地址空间”有什么好处。@Michael:请检查[这个][1]和[这个][2]。[1]: .[2]: