and*_*ida 5 opencl multidimensional-array
我是OpenCL的新手.我使用OpenCL内核和1-D数据.但是当我试图传递一个三维指针时,它无法构建内核.具体来说,我得到的是CL_BUILD_PROGRAM_FAILURE.这是我正在尝试构建的内核的伪代码 -
__kernel void 3D_Test(__global float ***array)
{
x = get_global_id(0);
y = get_global_id(1);
z = get_global_id(2);
array[x][y][z] = 10.0;
}
Run Code Online (Sandbox Code Playgroud)
谁能让我知道代码有什么问题?提前致谢!
这不是有效的OpenCL C(这就是为什么它不能编译),对于3D数组,你将不得不使用该数组的线性化版本,只需创建一个适当大小的正常数组(sizeX*sizeY*sizeZ)并将其编入索引这条路:
int index = x + y * sizeX + z * sizeX * sizeY;
Run Code Online (Sandbox Code Playgroud)
其他选项是使用带有clCreateImage3D的3D图像