调试时生成信息中显示的寄存器使用量:
ptxas : info : Used 22 registers, 7776 bytes smem, 48 bytes cmem[0], 20 bytes cmem[16]
但是我减少核函数里面定义的变量时(如把int a;去掉),显示还是这个值没有变,不太理解:dizzy:,求斑竹帮忙~~~~
还有一个问题是,#define Max 10 定义的Max在核函数里面是不是也是以寄存器进行存储的?
调试时生成信息中显示的寄存器使用量:
ptxas : info : Used 22 registers, 7776 bytes smem, 48 bytes cmem[0], 20 bytes cmem[16]
但是我减少核函数里面定义的变量时(如把int a;去掉),显示还是这个值没有变,不太理解:dizzy:,求斑竹帮忙~~~~
还有一个问题是,#define Max 10 定义的Max在核函数里面是不是也是以寄存器进行存储的?
LZ您好:
1:因为您实际使用的寄存器的数量是编译器优化后的结果(编译器会根据寄存器最大使用时刻的量分配,并自动复用各个寄存器),所以您直接减少一个变量的定义未必能减少寄存器用量。
2:您这样宏定义之后,Max在编译的时候会被替换为常量10,实际可能作为立即数使用或者作为常数缓冲在constant cache中。
大致如此,供您参考。
祝您编码顺利~
嗯,谢谢斑竹~~