可以使用memcpy Cpp函数在系统内存和gpu内存之间复制数据吗?

时间:2019-01-31 14:09:36

标签: c++ cuda gpu-programming

我知道可以使用cudaMemcpy做到这一点,但是我想知道memcpy是否也可以做到这一点。

2 个答案:

答案 0 :(得分:2)

假设使用现代操作系统和非嵌入式硬件,memcpy只是将一个内存区域复制到另一个区域,该区域必须位于您进程的虚拟地址空间中,并且不了解GPU或任何其他硬件。

因此,memcpy可能用于此目的的唯一方法是,如果您的GPU驱动程序映射了地址空间的某些页面,以便对这些页面的写入最终进入了GPU内存。

答案 1 :(得分:2)

在CUDA中,如果使用主机映射的API(如cudaHostAlloc或使用统一的内存API(如cudaMallocManaged)分配内存,则可以直接使用此类函数返回的指针在C-standard-library memcpy操作中。这样复制的数据将使用相同的指针对设备代码可见。

的指针,例如cudaMalloc不能成功地参与一个memcpy操作。