Как выбрать размеры сетки и блока для ядер CUDA?

Это вопрос о том, как определить сетку CUDA, размеры блоков и нитей. Это дополнительный вопрос к опубликованному здесь:

https://stackoverflow.com/a/5643838/1292251

По этой ссылке ответ от talonmies содержит фрагмент кода (см. Ниже). Я не понимаю комментарий "значение, обычно выбираемое настройками и аппаратными ограничениями".

Я не нашел хорошего объяснения или разъяснения, которое объясняет это в документации CUDA. Таким образом, мой вопрос заключается в том, как определить оптимальныйразмер блока (= количество потоков) с учетом следующего кода:

const int n = 128 * 1024;
int blocksize = 512; // value usually chosen by tuning and hardware constraints
int nblocks = n / nthreads; // value determine by block size and total work
madd<<<nblocks,blocksize>>>mAdd(A,B,C,n);

Кстати, я начал свой вопрос с ссылки выше, потому что она частично отвечает на мой первый вопрос. Если это не правильный способ задать вопросы о переполнении стека, извините или сообщите мне.

Ответы на вопрос(2)

Ваш ответ на вопрос