如何在Nsight Systems中显示嵌套CUDA Kernel调用
解决Nsight Systems无法显示CUDA嵌套内核运行时间的问题
你的问题源于嵌套内核的编译要求和Nsight Systems的采集配置未适配设备端内核启动场景,具体解决步骤如下:
1. 编译时启用可重定位设备代码
设备端发起的内核启动(即kernel_1内调用kernel_2)需要CUDA编译器生成可重定位设备代码(RDC),否则即便程序能正常运行,Nsight Systems也无法追踪到设备端发起的内核事件。编译时添加以下选项:
nvcc -rdc=true your_code.cu -o your_program
2. 配置Nsight Systems采集参数
图形界面操作
- 打开Nsight Systems新建采集任务
- 在采集配置的CUDA分类下,确保勾选:
- Trace CUDA Runtime API and Kernel Execution
- Device-side Kernel Launch Tracking(部分版本需展开CUDA详细配置项)
- 将采集级别设置为Full,避免轻量模式遗漏事件
命令行采集(nsys profile)
使用以下命令确保追踪设备端内核启动:
nsys profile --trace=cuda --cuda-kernel-trace=all ./your_program
完成上述配置后,重新采集程序运行数据,就能在Nsight Systems的时间线中看到kernel_2的运行时间条,空白间隙会被正确填充。
内容的提问来源于stack exchange,提问作者Bawbak
相关产品推荐
相关产品推荐

