我对统一虚拟内存有些困惑。
链接后面的文档(http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#unified-virtual-address-space 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 http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-requirements)说它需要:
SM 架构 3.0 或更高版本的 GPU(Kepler 级或更高版本)
此外,第一个链接说我可以使用cudaHostAlloc
。然后第二个使用cudaMallocManaged
.
这个“统一”术语之间是否有两个不同的东西,或者文档只是有点不连贯?
您指的是统一虚拟地址空间,它与自 CUDA 6.0 以来针对架构 3.0 或更高版本引入的统一内存不同,并且消除了从主机到设备的显式数据传输的需要
统一记忆 http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-unified-memory-programming-hd
统一内存2 http://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6/
您还可以检查:
here https://stackoverflow.com/questions/19186998/information-example-on-unified-virtual-addressing-uva-in-cuda , and here https://stackoverflow.com/questions/14891610/detection-if-a-pointer-is-pointing-in-the-device-or-host-in-cuda/14908262#14908262
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)