Cómo elijo las dimensiones de cuadrícula y bloque para los núcleos CUDA?

Esta es una pregunta sobre cómo determinar los tamaños de cuadrícula, bloque e hilo de CUDA. Esta es una pregunta adicional a la publicada aquí:

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

Siguiendo este enlace, la respuesta de talonmies contiene un fragmento de código (ver más abajo). No entiendo el comentario "valor generalmente elegido por el ajuste y las restricciones de hardware".

No he encontrado una buena explicación o aclaración que explique esto en la documentación de CUDA. En resumen, mi pregunta es cómo determinar la @ óptitamaño de bloqu (= número de hilos) dado el siguiente código:

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);

BTW, comencé mi pregunta con el enlace de arriba porque en parte responde a mi primera pregunta. Si esta no es una forma adecuada de hacer preguntas sobre Stack Overflow, discúlpeme o avíseme.

Respuestas a la pregunta(6)

Su respuesta a la pregunta