多GPU上的cudaMallocHost / cudaHostAlloc

时间:2013-02-07 09:44:41

标签: cuda

在CUDA文档中,特别是在关于cudaSetDevice的设备管理部分的CUDA运行时API中,它是这样编写的

  

使用cudaMallocHost()或cudaHostAlloc()或cudaHostRegister()从此主机线程分配的任何主机内存都将使其生命周期与设备相关联

所以我的问题在这里: 如果我使用cudaHostAlloc分配主机内存,当前设备是dev 0,然后我将该主机内存转移到dev 1中的设备内存,是否有任何限制或问题?

1 个答案:

答案 0 :(得分:3)

在“传统”CUDA内存模型中,如果要在多个上下文中使用映射主机内存分配,则必须使用cudaHostAlloc()标志使用cudaHostAllocPortable分配内存。这将使内存在所有上下文中都可移植。

如果您在具有统一寻址支持的平台上运行,那么只要您在该内存的任何cudaMemcpyDefault操作中使用cudaMemcpy(),就不必担心它。