"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数组,但没有太多成功,得到了无效参数错误。
那么,如何将我的主机数据转到设备内存并取回呢?
发布于 2012-06-29 23:18:50
为了将3D数据复制到GPU设备内存中,您需要执行以下操作:
使用cudaMalloc3D
cudaMemcpy3DParms
cudaMemcpy3D从主机输入到设备的内存空间
然后,要将数据返回到主机:
使用cudaMemcpy3DParms
cudaMemcpy3D将输出参数从设备
CUDA C编程指南的第3.2.2章《设备内存》提供了一个代码示例,该示例分配了一个宽×高×深的3D浮点值数组,并展示了如何在设备代码中循环数组元素。
CUDA SDK的simpleTexture3D示例也是一个很好的起点。
只需要一个recommendation:,准备好你的代码来捕捉CUDA错误,并分析错误发生的情况,因为你可能会发现一些错误。
https://stackoverflow.com/questions/11262928
复制相似问题