【发布时间】:2018-09-15 01:00:22
【问题描述】:
我需要澄清该主题答案中给出的代码: 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);
【问题讨论】:
-
是 C++ 吗?请相应地标记
-
是的。但对于 C 来说也是如此。参见 devblogs.nvidia.com/unified-memory-in-cuda-6 。函数启动包含这一行:cudaMemcpy(&(d_elem->name), &d_name, sizeof(char*), cudaMemcpyHostToDevice)。但是 d_elem 和 d_name 都是通过 cudamalloc 在设备内部分配的。
标签: arrays struct binding cuda