解决 WSL 下 nvprof 不可用问题

本文讲述了作者在使用nvprof进行CUDA代码性能分析时遇到的错误,通过尝试nsysnvprof、sudo权限、不同nvprof选项和启用GPU性能计数器,最终发现问题出在WSL中权限不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 问题

最近尝试写一些 cuda code, 然后发现在跟随教程使用 nvprof 工具进行性能分析时始终报错:

‘No kernels were profiled. No API activities were profiled.’

详情为:

始终没办法获取到和教程结果一致的 profiler 信息。

2. 解决办法

2.1 使用 nsys nvprof 代替 nvprof

nsys 似乎也是进行 GPU 性能分析的工具,但本地使用该命令后,产生了两个无法正常打开的数据库文件:

可能在以后的开发过程中可以用到,但目前并不能解决我这个初学者的问题。

2.2 使用 sudo 权限

该问题是由于,网上都说新的 nvprof 不能在非 root 权限下使用,但上面的报错内容也并没有提到 permisson 的问题,果然试了以后并没有解决任何问题

2.3 添加 nvprof --unified-memory-profiling per-process-device 或 nvprof --unified-memory-profiling off 选项

此方法中的二者是等价的,似乎 per-process-device 的值就是 off,于是这两个选项都并没有解决问题。

2.4 打开 "GPU performance counters." 选项

最终是这个办法奏效了,看名字,应该是 GPU 计数器没有启用之类的问题,导致的 nvprof 没有正确的输出,具体步骤为:

打开 windows 下 NVIDIA 控制面板

打开开发者选项

在管理GPU性能计数器中,改为允许所有用户访问:

最终产生了正确的 profiler 结果:

3. 问题根源

我对 GPU 和硬件不甚了解,但通过名字也猜到七七八八,估计就是在 WSL 中没有权限访问 GPU 的性能计数器(performance counters),导致没办法产生正确的 profiler 结果。

参考:cuda - What does nvprof output: "No kernels were profiled" mean, and how to fix it - Stack Overflow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值