我知道可以使用cudaMemcpy做到这一点,但是我想知道memcpy是否也可以做到这一点。
答案 0 :(得分:2)
假设使用现代操作系统和非嵌入式硬件,memcpy
只是将一个内存区域复制到另一个区域,该区域必须位于您进程的虚拟地址空间中,并且不了解GPU或任何其他硬件。
因此,memcpy
可能用于此目的的唯一方法是,如果您的GPU驱动程序映射了地址空间的某些页面,以便对这些页面的写入最终进入了GPU内存。
答案 1 :(得分:2)
在CUDA中,如果使用主机映射的API(如cudaHostAlloc
或使用统一的内存API(如cudaMallocManaged
)分配内存,则可以直接使用此类函数返回的指针在C-standard-library memcpy
操作中。这样复制的数据将使用相同的指针对设备代码可见。
的指针,例如cudaMalloc
不能成功地参与一个memcpy
操作。