如何用Nsight Compute分析CUDA __global__内核中的__device__函数?
用Nsight Compute分析CUDA内核内部__device__函数的方法
开启函数级剖析开关
在Nsight Compute的分析配置面板中,找到并勾选「Enable Function-level Profiling」选项(不同版本界面可能略有差异,通常在Profiling Options分类下)。开启后工具会追踪内核调用的所有__device__函数,单独统计它们的性能数据。编译时保留符号与行号信息
编译CUDA代码时必须添加对应参数,让Nsight能关联内核与内部函数的符号:- 若要分析带调试信息的代码,使用:
nvcc -G -lineinfo your_code.cu -o your_bin - 若要分析优化后的代码,仅保留行号信息即可:
nvcc -lineinfo your_code.cu -o your_bin
注:-G会禁用编译器优化,适合调试阶段剖析;仅用-lineinfo时优化不受影响,但函数级数据的精准度可能稍有下降。
- 若要分析带调试信息的代码,使用:
查看函数级性能报告
完成剖析后,在Nsight Compute的报告界面切换到「Functions」标签,就能看到内核调用的每个__device__函数的详细指标,包括指令吞吐量、内存访问效率、Warp调度情况等。定位函数内的性能瓶颈
选中目标__device__函数后,切换到「Source」面板可关联源代码行与性能数据,「Metrics」面板则能查看该函数的各项细分性能指标,快速定位耗时的代码段。
内容的提问来源于stack exchange,提问作者BoringSession
相关产品推荐
相关产品推荐

