gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:27 25 4
gpt4 key购买 nike

“cuda c 编程指南”给出了使用 cuda 数组的示例。这些示例仅限于 2D。因此,如果是 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
  4. 复制 从主机到设备的输入数据

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

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

CUDA C 编程指南的第 3.2.2 章设备内存有一个代码示例,它分配一个宽度×高度×深度的浮点值 3D 数组,并显示如何在设备代码中循环遍历数组元素.

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

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

关于cuda:如何将主机数据复制到 3D cuda 数组并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11262928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com