我想从图像数据集(大约100)计算平均图像。所有图像都是二维的。我可以使用cudaMalloc3D内置函数,还是以其他任何方式分配内存..
答案 0 :(得分:1)
我经常将多维数组视为cuda中的1D数组。让我们说,您想要分配大小(NxMxK
)的3D数组。然后,使用cudaMalloc
命令,您可以分配大小为a
的1D数组N*M*K
。为了访问索引为[i][j][k]
的元素,您只需调用a[i+j*N+k*N*M]
(假设基于0的索引,列主要排序)。
这也是一种在多维块中索引线程的方法(可以有1D,2D或3D块): http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#thread-hierarchy