私は0.0から999.0までの数字を見ることを期待していましたが、代わりに以下のコードのいくつかのインデックスに対して非常に奇妙で長い数字を取得しました:
__global__ void kernel(double *res, int N)
{
int i = (gridDim.y*blockIdx.y+
blockIdx.x)*blockDim.x*blockDim.y+
blockDim.y*threadIdx.y+threadIdx.x;
if(i<N) res[i] = i;
}
void callGPU(int N)
{
dim3 dimBlock(8, 8);
dim3 dimGrid(2, 8);
...
kernel<<<dimGrid, dimBlock>>>(res, N);
...
}
dimGridを(8,2)と(1,16)に変更しても、gridDimを(16,1)に変更すると、インデックスが正しく取得されます。plzは、この場合のgridDimを正しく計算する方法を示すことができますか?可能であれば任意のNに感謝します!