我为 OpenCL 编写了一个内核,将 3D 数组的所有元素初始化为 -> i*i*i + j*j*j。我现在在创建线程网格来初始化元素(同时)时遇到问题。我知道我现在的代码只使用了 3 个线程,我该如何扩展呢?
请帮忙。我是 OpenCL 的新手,所以任何建议或解释都可能很方便。谢谢!
这是代码:
_kernel void initialize (
int X;
int Y;
int Z;
_global float*A) {
// Get global position in X direction
int dirX = get_global_id(0);
// Get global position in Y direction
int dirY = get_global_id(1);
// Get global position in Z direction
int dirZ = get_global_id(2);
int A[2000][100][4];
int i,j,k;
for (i=0;i<2000;i++)
{
for (j=0;j<100;j++)
{
for (k=0;k<4;k++)
{
A[dirX*X+i][dirY*Y+j][dirZ*Z+k] = i*i*i + j*j*j;
}
}
}
}