我的程序中每个线程使用的寄存器太多了,导致每个SM中活动的block就变得很少,寄存器成为了限制因素,一直很困扰我。
求余运算能有其他的替换方法吗?感觉这里有可能话费了一些寄存器(单独的变量数出来的数量比visual profiler少)
a%b,这里b不是2^n
LZ您好:
求余运算一般无法再优化来减少寄存器使用量了。
以及您申请的变量数量小于nvvp报告的数量,这个也是正常的,因为一些中间过程需要使用寄存器。
如果您一定需要提高occupancy,那么您可以尝试将您的kernel拆分成逻辑上相对简单的多个kenrel,但是这样不一定会变快,这需要通盘考虑和尝试的。
大致如此,祝您好运~