这个问题是解释 ptxas 的详细输出的延续,第一部分。
当我们用 编译一个内核.ptx
文件ptxas -v
,或者用 用一个.cu
文件编译它时-ptxas-options=-v
,我们会得到几行输出,例如:
ptxas info : Compiling entry function 'searchkernel(octree, int*, double, int, double*, double*, double*)' for 'sm_20'
ptxas info : Function properties for searchkernel(octree, int*, double, int, double*, double*, double*)
72 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 46 registers, 176 bytes cmem[0], 16 bytes cmem[14]
(与链接到的问题中的示例相同;但名称拆解)
这个问题是关于最后一行的。来自其他内核的更多示例:
ptxas info : Used 19 registers, 336 bytes cmem[0], 4 bytes cmem[2]
...
ptxas info : Used 19 registers, 336 bytes cmem[0]
...
ptxas info : Used 6 registers, 16 bytes smem, 328 bytes cmem[0]
除了使用的寄存器数量之外,我们如何解释这一行的信息?具体来说:
- 是
cmem
常量记忆的缩写吗? - 为什么有不同的类别,
cmem
即cmem[0]
,,?cmem[2]
cmem[14]
smem
可能代表shared memory
; 它只是静态共享内存吗?- 每种条目在什么情况下会出现在这一行?