Cuda 解读PTXA的详细输出,第二部分
这个问题是问题的继续 当我们使用Cuda 解读PTXA的详细输出,第二部分,cuda,verbose,gpu-shared-memory,gpu-constant-memory,ptxas,Cuda,Verbose,Gpu Shared Memory,Gpu Constant Memory,Ptxas,这个问题是问题的继续 当我们使用ptxas-v编译内核.ptx文件,或者使用-ptxas-options=-v从.cu文件编译它时,我们会得到几行输出,例如: ptxas info : Compiling entry function 'searchkernel(octree, int*, double, int, double*, double*, double*)' for 'sm_20' ptxas info : Function properties for searchke
ptxas-v
编译内核.ptx
文件,或者使用-ptxas-options=-v
从.cu
文件编译它时,我们会得到几行输出,例如:
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]
(与链接问题中的示例相同;但名称为Demanling)
这个问题涉及最后一行。其他内核的几个示例:
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
;它只是静态共享内存吗共享内存
- 每种条目在哪种情况下出现在这一行
cmem[0]
是内核参数和静态大小常量值的保留库
smem可能代表共享内存;它只是静态共享内存吗
是的,不然怎么可能呢
每种条目在哪种情况下出现在这一行
大部分已回答。已收集并重新格式化
最后一行ptxas信息中的资源:
在每个SM(多处理器)的寄存器文件中注册
-全局内存gmem
-静态共享内存smem
-索引为N的常量内存库。cmem[N]
-为内核参数和静态大小的常量值保留的库cmem[0]
-cmem[2]
-cmem[4]
-cmem[14]
cmem[0]
用法
您可以在中阅读更多有关CUDA内存层次结构的内容以及其中的链接。另外,还有静态和动态共享内存。是的,
cmem
指的是恒定内存。概述了不同的“类别”(银行)。我没有看到smem
出现在这个问题或链接问题的任何地方,但它不可能指动态共享内存,因为在编译时它是未知的(大小方面)。+1作为信息,但我觉得答案是以过度对话的方式给出的,所以我也让自己写一个。