3D 配列のすべての要素を -> i*i*i + j*j*j に初期化する OpenCL 用のカーネルを作成しました。現在、要素の初期化を行うためのスレッドのグリッドを作成する際に問題が発生しています (同時に)。私が今持っているコードは 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;
}
}
}
}