CUDA Demasiados recursos solicitados para el lanzamiento
Tengo algunos problemas al ejecutar mi código en una GTX 480 con Compute Capability 2.0
Siempre obtengo el siguiente error si inicio el kernel con 1024 hilos por bloque:
========= CUDA-MEMCHECK
========= Program hit cudaErrorLaunchOutOfResources (error 7) due to "too many resources requested for launch" on CUDA API call to cudaLaunch.
========= Saved host backtrace up to driver entry point at error
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 [0x2ef613]
========= Host Frame:/usr/local/cuda-6.5/lib64/libcudart.so.6.5 (cudaLaunch + 0x17e) [0x3686e]
========= Host Frame:./bin/myProgram [0x3a50]
========= Host Frame:./bin/myProgram [0x388a]
========= Host Frame:./bin/myProgram [0x38e3]
========= Host Frame:./bin/myProgram [0x2a99]
========= Host Frame:./bin/myProgram [0x1410]
========= Host Frame:./bin/myProgram [0x1da0]
========= Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main + 0xed) [0x2176d]
========= Host Frame:./bin/myProgram [0x1139]
=========
Ejecuté el programa varias veces con diferentes bloques y hilos:
5 Blocks, 512 Threads per Block => Works
5 Blocks, 1024 Threads per Block => Error
10 Blocks, 512 Threads per Block => Works
10 Blocks, 1024 Threads per Block => Error
15 Blocks, 512 Threads per Block => Works
15 Blocks, 1024 Threads per Block => Error
Revisé los registros usados, y parece estar bien. "Function4" con 28 registros es el kernel que usa tantos hilos. Todos los demás kernerls usan solo <<< 1, 32 >>> por llamada.
ptxas info : 0 bytes gmem
ptxas info : Function properties for _Z7function1Py
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Compiling entry function '_Z13function2PyS_i' for 'sm_20'
ptxas info : Function properties for _Z13function2PyS_i
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 22 registers, 52 bytes cmem[0]
ptxas info : Compiling entry function '_Z6function3PyiS_' for 'sm_20'
ptxas info : Function properties for _Z6function3PyiS_
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 22 registers, 56 bytes cmem[0]
ptxas info : Compiling entry function '_Z17function4PyiiS_Phji' for 'sm_20'
ptxas info : Function properties for _Z17function4PyiiS_Phji
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 28 registers, 72 bytes cmem[0]
También ejecuto este programa con mi GTX 660 con CC 3.0 y allí funciona con 1024 hilos por bloque. No tengo idea de dónde viene el problema. ¿Alguien tiene una idea?