关于CUDA编程中,__device__函数由于for循环而不执行的问题
由于测试需要,需要在Bundlefusion上修改源码,然后本人在__device__函数上,加入了for循环,由于遍历的次数较大,所以加入这一部分修改的代码就会导致不报错,但是输出的是empty mesh。找了很久的原因,发现是SM会根据线程数量为每一个线程分配寄存器空间,但是在for循环遍历时,会不断的占用寄存器空间,所以当寄存器空间不足时,就会导致CUDA Kernel不启动,从而不执行GPU代码。
原创
2023-07-11 16:13:50 ·
306 阅读 ·
1 评论