Nsight Compute 无法确定SASS码对应的源码
常规使用
Nsight Compute提供了将编译的SASS码与自己写的源码对应的功能,这可在 Source Page下,将View选为Source and SASS实现,像下面这样
然而,将SASS码与源代码关联这个操作不是默认开启的,需要我们在编译代码前进行一些额外的设置,为编译的代码关联对应的行。
在不同平台中的关联操作
在不同平台上,关联操作的有所差异。
富连网上的操作大多数都是教你使用nvcc编译时如何添加行信息,即,使用NVCC编译时添加-lineinfo
或--generate-line-info
编译选项。
使用Visual Studio组织CUDA项目时,则可以通过在项目属性中将生成GPU Debug 信息
选择为是
实现,事实上,将下面那个生成行号信息
选择为是
也能起到相同的效果。如下图所示
然而,还有朋友的项目是使用CMake组织的,这时,在生成的visual studio工程中使用前述操作将可能失效。正确的做法是,在CMakeLists.txt文件中,在CUDA选项后添加set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-lineinfo")
.
后记
尽管我们能确定source码对应的SASS码了,当我们按照compute的分析对应各种可能的问题时,我们可能会感到困惑:它指示的瓶颈位置真的正确吗?
是的,你的顾虑没错,Compute指出的地方并不一定是真正的瓶颈所在。
它只是一个统计数值,只能给出大致位置和对应关系,真正的症结,还需要我们在附近上下翻找,CUDA代码优化,还是很难的啦,祝各位好运吧!