我需要澄清有关该主题答案中给出的代码: CUDA cudaMemcpy Struct of Arrays
dev_s和dev_arr1(2和3)都在设备中分配。为什么使用cudaMemcpyHostToDevice标志?它应该是cudaMemcpyDeviceToDevice。
代码报告如下。
// NOTE: Binding pointers with dev_s
cudaMemcpy(&(dev_s->arr1), &dev_arr1, sizeof(dev_s->arr1),cudaMemcpyHostToDevice);
cudaMemcpy(&(dev_s->arr2), &dev_arr2, sizeof(dev_s->arr2),cudaMemcpyHostToDevice);
cudaMemcpy(&(dev_s->arr3), &dev_arr3, sizeof(dev_s->arr3),cudaMemcpyHostToDevice);
答案 0 :(得分:2)
dev_s和dev_arr1(2和3)都在设备中分配。
正确。
为什么使用cudaMemcpyHostToDevice标志?它应该是 cudaMemcpyDeviceToDevice。
不正确的。
该代码正在将dev_arr1
,dev_arr2
和dev_arr3
的指针值从主机复制到设备。地址本身是GPU内存中的地址,但地址值存储在主机内存中,而不是设备内存中。