which nvcc
및 을 실행 하여 표시되는 다른 CUDA 버전으로 인해 매우 혼란 스럽습니다 nvidia-smi
.
우분투 16.04에 cuda9.2와 cuda10이 모두 설치되어 있습니다. 이제 cuda9.2를 가리 키도록 PATH를 설정했습니다. 그래서 내가 실행할 때 :
$ which nvcc
/usr/local/cuda-9.2/bin/nvcc
그러나 내가 달리면
$ nvidia-smi
Wed Nov 21 19:41:32 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72 Driver Version: 410.72 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 106... Off | 00000000:01:00.0 Off | N/A |
| N/A 53C P0 26W / N/A | 379MiB / 6078MiB | 2% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1324 G /usr/lib/xorg/Xorg 225MiB |
| 0 2844 G compiz 146MiB |
| 0 15550 G /usr/lib/firefox/firefox 1MiB |
| 0 19992 G /usr/lib/firefox/firefox 1MiB |
| 0 23605 G /usr/lib/firefox/firefox 1MiB |
그래서 나는 which nvcc
제안 대로 cuda9.2를 사용하고 있습니까 , 아니면 nvidia-smi
제안 대로 cuda10을 사용하고 있습니까?
나는 이 대답을 보았지만 혼란에 대한 직접적인 대답을 제공하지 않으며, 단지 내가 이미 한 cudatoolkit을 다시 설치하도록 요청합니다.
답변
CUDA에는 런타임과 드라이버 API라는 2 개의 기본 API가 있습니다. 둘 다 해당 버전 (예 : 8.0, 9.0 등)이 있습니다.
드라이버 API (예 : Linux의 libcuda.so)에 필요한 지원은 GPU 드라이버 설치 프로그램에 의해 설치됩니다.
런타임 API에 대한 필수 지원 (예 : Linux의 libcudart.so 및 nvcc
)은 CUDA 툴킷 설치 프로그램 (GPU 드라이버 설치 프로그램이 번들로 포함될 수도 있음)에 의해 설치됩니다.
어떤 경우에도 (설치된) 드라이버 API 버전이 (설치된) 런타임 API 버전과 항상 일치하지 않을 수 있습니다. 특히 CUDA 설치 (즉, CUDA 툴킷)와 독립적으로 GPU 드라이버를 설치하는 경우에는 더욱 그렇습니다.
이 nvidia-smi
도구는 GPU 드라이버 설치 프로그램에 의해 설치되며 일반적으로 CUDA 도구 키트 설치 프로그램이 설치 한 것이 아니라 GPU 드라이버가 표시됩니다.
최근 (리눅스에서 410.48에서 410.73 사이의 드라이버 버전) NVIDIA의 힘은 드라이버가 설치 한 CUDA 드라이버 API 버전에 대한보고를 nvidia-smi
.
설치된 CUDA 런타임 버전과 연결되어 있지 않습니다.
nvcc
, CUDA 툴킷과 함께 설치된 CUDA 컴파일러 드라이버 도구는 항상 인식하도록 빌드 된 CUDA 런타임 버전을보고합니다. 어떤 드라이버 버전이 설치되어 있는지 또는 GPU 드라이버가 설치되어 있는지도 알지 못합니다.
따라서 설계 상이 두 숫자는 서로 다른 두 가지를 반영하기 때문에 반드시 일치하지는 않습니다.
nvcc -V
예상치 못한 CUDA 버전을 표시하는 이유가 궁금 하거나 (예 : 설치했다고 생각하는 것과 다른 버전이 표시됨) 버전이 전혀 표시되지 않는 이유가 궁금하다면 cuda linux 설치 가이드의 7 단계 (CUDA 11 이전) (또는 CUDA 11 linux 설치 가이드의 6 단계)에있는 필수 지침을 따랐습니다.
이 질문에는 대부분 리눅스가 있지만 Windows CUDA 설치 에도 동일한 개념이 적용 됩니다. 드라이버에 연결된 CUDA 드라이버 버전이 있습니다 ( nvidia-smi
예 : 로 쿼리 할 수 있음 ). CUDA 런타임에는 또한 연결된 CUDA 런타임 버전이 있습니다. 두 가지가 모든 경우에 반드시 일치하지는 않습니다.
대부분의 경우에서 nvidia-smi
보고 한 것과 수치 적으로 같거나 높은 CUDA 버전을보고 nvcc -V
하는 경우 이는 우려 할만한 원인이 아닙니다. 이는 CUDA에 정의 된 호환성 경로입니다 (최신 드라이버 / 드라이버 API 지원 “이전”CUDA 툴킷 / 런타임 API). 예를 들어 nvidia-smi
CUDA 10.2를 nvcc -V
보고하고 CUDA 10.1을보고하는 경우 일반적으로 우려 할 필요가 없습니다. 그냥 작동해야하며 반드시 “CUDA 10.1을 설치하려고했을 때 실제로 CUDA 10.2를 설치했다”는 의미는 아닙니다.
nvcc
명령이 아무것도보고하지 않는 경우 (예 Command 'nvcc' not found...
🙂 CUDA 설치가 잘못 되었기 때문일 수 있습니다. 즉, 위에서 언급 한 필수 단계가 올바르게 수행되지 않았기 때문일 수 있습니다. 실행 파일 을 찾기 위해 find
또는 locate
(맨 페이지를 사용하여 방법을 배우려면) 와 같은 리눅스 유틸리티를 사용하여 이것을 알아낼 수 있습니다 nvcc
. 하나만 있다고 가정하면 경로를 사용하여 PATH 환경 변수를 수정할 수 있습니다.
답변
nvcc
CUDA bin 폴더에 있습니다 $PATH
. 따라서 CUDA bin 폴더가 .
특히 CUDA 설치 후 작업을 수행했는지 확인 하십시오 (예 : 여기에서 ).
- CUDA Bin을에
$PATH
추가합니다 (예 :에 다음 줄을 추가~/.bashrc
).
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}
추신. 위의 다음 두 경로가 먼저 존재하는지 확인하십시오.
/usr/local/cuda-10.1/bin
그리고/usr/local/cuda-10.1/NsightCompute-2019.1
(NsightCompute 경로는 설치된 Nsight 컴퓨팅 버전에 따라 약간 다른 끝을 가질 수 있습니다.
- 업데이트합니다
$LD_LIBRARY_PATH
(예 :에 다음 줄을 추가합니다~/bashrc
).
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
그 후 nvcc
및 nvidia-smi
(또는 nvtop
) 모두 동일한 버전의 CUDA를보고합니다.
답변
cuda 10.2를 사용하는 경우 :
export PATH=/usr/local/cuda-10.2/bin:/opt/nvidia/nsight-compute/2019.5.0${PATH:+:${PATH}}
확인했을 때 cuda-10.2에 nsight-compute에 대한 디렉토리가 없기 때문에 도움이 될 수 있습니다. 이것이 나만의 문제인지 아니면 왜 공식 문서에 언급하지 않았는지 확실하지 않습니다.