Как выбрать размеры сетки и блока для ядер 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<<>>mAdd(A,B,C,n);

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

101
задан Community 23 May 2017 в 10:31
поделиться