目前我正在尝试优化一些cuda内核......
如果使用选项 --ptxas-options=-v 进行编译,我将获得有关寄存器 %co 的信息。
就我而言,我总是得到一些额外的行,这对我来说没有意义:
ptxas : info : Compiling entry function '_Z20backprojLinTexInterpP7double3S0_S0_P7double2iiiiiS2_PdPf' for 'sm_20'
ptxas : info : Function properties for _Z20backprojLinTexInterpP7double3S0_S0_P7double2iiiiiS2_PdPf
8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas : info : Used 47 registers, 32 bytes smem, 112 bytes cmem[0], 56 bytes cmem[16]
ptxas : info : Function properties for __internal_trig_reduction_slowpathd
40 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
Run Code Online (Sandbox Code Playgroud)
第 1 行到第 4 行对我来说很清楚,但最后一行是什么?
谷歌在这里没有帮助......我已经尝试过了。
有人知道这些行的含义是什么吗?我为程序中的每个编译内核获取它们
__internal_trig_reduction_slowpathd() 是 CUDA 数学库中的内部子例程。当自变量的量级非常大时,它用于对双精度三角函数(sin、cos、sincos、tan)执行精确的自变量约简。Payne-Hanek 风格的论证缩减用于这些大型论证。对于 sm_20 及更高版本,这是一个被调用的子例程,用于最大限度地减少频繁调用三角函数的应用程序中的代码大小。您可以通过查看 CUDA 包含文件目录中的 math_functions_dbl_ptx3.h 文件来查看代码。