я ожидал увидеть цифры от 0.0 до 999.0, но вместо того, чтобы получить некоторые очень странные и длинный номер для некоторых индексов для кода ниже:вычислив gridDim для CUDA ядра
__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. большое спасибо!