我希望看到从 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.非常感谢!