Estoy confundido acerca del número máximo de subprocesos que se pueden iniciar en una GPU de Fermi.Número máximo de subprocesos que se pueden iniciar en un único kernel CUDA
Mi consulta del dispositivo GTX 570 dice lo siguiente.
Maximum number of threads per block: 1024
Maximum sizes of each dimension of a block: 1024 x 1024 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 65535
Desde mi entender, entiendo la afirmación anterior como:
para un kernel CUDA podemos poner en marcha en la mayoría de 65536 bloques. Cada bloque lanzado puede contener hasta 1024 hilos. Por lo tanto, en principio, puedo lanzar hasta 65536 * 1024 (= 67108864) hilos.
¿Es esto correcto? ¿Qué pasa si mi hilo usa mucho registros? ¿Seguiremos siendo capaces de alcanzar este máximo teórico de la cantidad de hilos?
Después de escribir y ejecutar el kernel CUDA, ¿cómo sé que el número de subprocesos y bloques que he lanzado tiene de hecho se ha instanciado. Quiero decir que no quiero que la GPU calcule algo de basura, o se comporte de manera extraña, si por casualidad he creado más hilos de lo que es posible para ese núcleo en particular.
Esto puede ayudarlo: http://stackoverflow.com/questions/2392250/understanding-cuda-grid-dimensions-block-dimensions-and-threads-organization-s – user1154664