当我们使用 xptxas 检查寄存器使用情况时,我们会看到如下内容:
ptxas info : Used 63 registers, 244 bytes cmem[0], 51220 bytes cmem[2], 24 bytes cmem[14], 20 bytes cmem[16]
我想知道目前是否有任何文档可以清楚地解释 cmem[x]。将常量内存分成多个bank有什么意义,总共有多少个bank,除了0、2、14、16之外的其他bank有什么用?
作为旁注,@njuffa(特别感谢你)之前在 nvidia 的论坛上解释了什么是银行 0、2、14、16:
使用的常量内存被划分为常量程序“变量”(bank 1),以及编译器生成的常量(bank 14)。
cmem[0]:内核参数
cmem[2]:用户定义的常量对象
cmem[16]:编译器生成的常量(其中一些可能对应源代码中的文字常量)