Я рассматриваю одну из простых программ CUDA для примера и задал вопрос о том, как она определила количество блоков в сетке. Соответствующая часть кода:CUDA: определение количества блоков нитей в сетке
// Launch the Vector Add CUDA Kernel
int threadsPerBlock = 256;
int blocksPerGrid =(numElements + threadsPerBlock - 1)/threadsPerBlock;
printf("CUDA kernel launch with %d blocks of %d threads\n", blocksPerGrid, threadsPerBlock);
vectorAdd<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_B, d_C, numElements);
Почему blocksPerGrid равна
(numElements + threadsPerBlock - 1)/threadsPerBlock
и не только
numElements/threadsPerBlock
?
Спросите себя, что произойдет, если 'numElement
talonmies