做 CUDA 开发,使用工具 profile 程序性能是必不可少的,其中 nvprof 命令行工具最为常用。我的配置是Ubuntu18.04,CUDA Toolkit 10.1,驱动 440.26。使用命令行 nvprof ./fileName,报错:
Warning: ERR_NVGPUCTRPERM - The user does not have permission to profile on the target device.
这个问题的官网解决方案在:https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-counters,原因简单说来就是权限不够,这个问题在你使用 418.43 (Linux) 以后的驱动时都会碰到。
其中一种解决方法(对我的情况无效):
modprobe nvidia NVreg_RestrictProfilingToAdminUsers=0
我的解决方案是配合 sudo 使用 nvprof
sudo nvprof ./fileName
你应该会发现这行命令会报以下错误:
sudo: nvprof: command not found
解决这个问题的方法很多,我选了个最简单粗暴的。输入以下命令打开 sudoers:
sudo visudo
把以下内容都注释掉,然后保存:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
这时再输入以下命令以管理员权限运行 nvprof 应该就可以了:
sudo nvprof ./fileName