nvprof/ncu를 사용하려면 사용자에게 sudo 권한을 부여해야 합니까, 아니면 CAP_SYS_ADMIN 기능을 추가해야 합니까? 왜?

nvprof/ncu를 사용하려면 사용자에게 sudo 권한을 부여해야 합니까, 아니면 CAP_SYS_ADMIN 기능을 추가해야 합니까? 왜?

nvprofCUDA 10.1부터 nsightcompute 또는 nsightcompute 와 같은 CUDA 프로파일링 도구를 사용하여 ncu고급 메트릭을 수집 하려면 사용자에게 sudo 권한이 있어야 합니다 .

이 문제에 대한 대체 솔루션은 다음과 같습니다.

위의 링크에는 CAP_SYS_ADMIN을 사용하여 이러한 측정항목 수집을 활성화할 수 있다고 언급되어 있습니다.

문제를 이해하기 위해 다음과 같은 통찰력 있는 스택 오버플로 응답을 찾았습니다.

제가 틀렸다면 정정해 주세요. 하지만 CAP_SYS_ADMIN 경로를 계속 사용하려면 애플리케이션의 기능을 활성화해야 합니다.그리고사용자(루트가 아닌 경우)

저는 Linux 기능을 처음 접했고 사용자/응용 프로그램에 CAP_SYS_ADMIN을 제공하는 것이 더 나은지 아니면 사용자에게 SUDO 액세스 권한을 부여하는 것이 더 나은지 잘 모르겠습니다. 왜 하나가 다른 것보다 낫습니까?


편집: 지금으로서는 여전히 작동하지 않습니다.

# First I executed
$ sudo setcap cap_sys_admin+ep /usr/local/cuda/bin/nvprof
# This is the command that I am executing after installing the CUDA toolkit 10.2.
$ /usr/local/cuda/bin/nvprof -o output-detailed.nvvp -f --analysis-metrics /usr/local/cuda/extras/demo_suite/vectorAdd

[Vector addition of 50000 elements]
==142443== NVPROF is profiling process 142443, command: /usr/local/cuda/extras/demo_suite/vectorAdd
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
==142443== Some kernel(s) will be replayed on device 0 in order to collect all events/metrics.
==142443== Warning: ERR_NVGPUCTRPERM - The user does not have permission to profile on the target device. See the following link for instructions to enable permissions and get more information: https://developer.nvidia.com/ERR_NVGPUCTRPERM
Failed to launch vectorAdd kernel (error code unknown error)!
==142443== Warning: ERR_NVGPUCTRPERM - The user does not have permission to profile on the target device. See the following link for instructions to enable permissions and get more information: https://developer.nvidia.com/ERR_NVGPUCTRPERM
==142443== Warning: Some profiling data are not recorded. Make sure cudaProfilerStop() or cuProfilerStop() is called before application exit to flush profile data.
==142443== Generated result file: /results/nvprof/output-detailed.nvvp

하지만 sudo로 실행할 때만 작동합니다.

$ sudo /usr/local/cuda/bin/nvprof -o output-detailed.nvvp -f --analysis-metrics /usr/local/cuda/extras/demo_suite/vectorAdd

[Vector addition of 50000 elements]
==142687== NVPROF is profiling process 142687, command: /usr/local/cuda/extras/demo_suite/vectorAdd
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
==142687== Some kernel(s) will be replayed on device 0 in order to collect all events/metrics.
Replaying kernel "vectorAdd(float const *, float const *, float*, int)" (done)
Copy output data from the CUDA device to the host memory
Test PASSED
Done
==142687== Generated result file: /home/agostini/Development/nvprof/output-detailed.nvvp

실행 파일에 기능을 부여하고 슈퍼유저가 sudo 없이 애플리케이션을 실행하도록 하는 것만으로는 충분하지 않은 이유는 무엇입니까? sudo 그룹의 사용자에게도 PAM 설정이 꼭 필요한가요?

답변1

정확히 어떻게 작동하는지는 모르겠지만 CAP_SYS_ADMIN, 따라하는 것이 더 쉬울 수도 있습니다.설명하다이렇게 하면 루트가 아닌 사용자도 프로파일러를 사용할 수 있습니다.

echo 'options nvidia "NVreg_RestrictProfilingToAdminUsers=0"' | sudo tee -a /etc/modprobe.d/nvidia.conf
sudo update-initramfs -u 
sudo reboot

관련 정보