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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容