繁体   English   中英

cuda:如何将主机数据复制到3D cuda阵列并返回

[英]cuda: how to copy host data to 3D cuda array and back

“ cuda c编程指南”给出了有关使用cuda数组的示例。 这些示例仅限于2D。 因此,在二维CUDA阵列的情况下,我只需执行以下操作即可将主机数据复制到设备内存中:

// Copy to device memory some data located at address h_data in host memory  
// cuInputArray is a 2D cuda array
cudaMemcpyToArray(cuInputArray, 0, 0, host_data, size_bytes, cudaMemcpyHostToDevice);
// with e.g. size_bytes := size_arr_x * size_arr_y * sizeof(float)

我尝试将cuInputArray作为3D cuda数组使用相同的方法,但没有成功,但得到了无效的参数错误。

那么如何将我的主机数据传送到设备内存并返回呢?

为了将3D数据复制到GPU设备内存中,您需要执行以下操作:

  1. 使用cudaMalloc3D 分配内存空间
  2. 使用cudaMemcpy3DParms 设置输入参数
  3. 使用cudaMemcpy3D 输入数据从主机复制到设备

然后,将您的数据返回主机:

  1. 使用cudaMemcpy3DParms 设置输出参数
  2. 使用cudaMemcpy3D 输出数据从设备复制到主机

CUDA C编程指南的第3.2.2章设备存储器中有一个代码示例,该示例分配了一个宽×高×深3D浮点值数组,并显示了如何在设备代码中循环这些数组元素

同样,CUDA SDK的simpleTexture3D示例也是一个很好的起点。

只是一个建议 :准备您的代码以捕获CUDA错误并分析发生错误的情况,因为您可能会发现一些错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM