cuda kernel error:too many resources requested for launch

如果使用的是vs+win环境,可以通过Nsight——windows——system infos查看MAX_REGISTERS_PRE_BLOCK(或者是MAX_REGISTERS_PRE_MULTIPROCESSOR?),假设为65535。那么,如果调用核函数时,blocksize为(x,y,z),每个线程调用的寄存器个数为r,则x*y*z*r应该小于65535。

blocksize可以通过设置断点,查看局部变量来得到。

每个线程调用的寄存器个数可以通过nvcc编译命令中加入--ptxas-options=-v,编译时可以看到。数目大小与核函数的设计还有 属性——cuda C/C++——code generation 有一定关系,例如:compute30,sm30,其中的数字越小,需要的硬件性能越低,但最大也不能超过Nsight查看infos中compute capability*10。

同时,也可以通过修改max used register来限制寄存器使用,防止超出限制。下图中64*32*32*1=65535<=65535


cuda kernel error:too many resources requested for launch_第1张图片

你可能感兴趣的:(cuda kernel error:too many resources requested for launch)