Код: Выделить всё
__global__ void kernel(x, y, z)
{
if (j > 0 && i > 0 && j < nj-1 && i < ni-1) {
...
}
}
int main()
{
// Specify our 2D dimensions
const int ni = 200;
const int nj = 100;
const int size = ni * nj * sizeof(float);
// this is correct answer
dim3 threads_per_block(32, 16, 1);
dim3 number_of_blocks((nj/tblocks.x)+1, (ni/tblocks.y)+1, 1);
return 0;
}
Код: Выделить всё
dim3 threads_per_block(16, 16, 1);
dim3 number_of_blocks(16, 16, 1);
Я подумал, что мне не нужно слишком много думать о том, как настроить сетку, если она больше, чем данные, и я могу использовать оператор if для выбора диапазон потоков, которые я хочу использовать для вычислений. Но, видимо, это не так.
Подробнее здесь: https://stackoverflow.com/questions/789 ... for-cuda-c
Мобильная версия