nvcc 및 NVIDIA-smi에 표시된 다른 CUDA 버전


122

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을 다시 설치하도록 요청합니다.


29
지난 며칠 동안이 정확한 질문이 여러 번 나오는 것을 본 것 같습니다. 하지만 지금은 중복을 찾을 수없는 것 같습니다. 대답은 다음과 같습니다. nvidia-smi는 드라이버가 지원하는 CUDA 버전을 보여줍니다. CUDA 10을 지원하는 최신 410.x 드라이버 중 하나가 설치되어 있습니다. 드라이버가 지원하는 버전은 프로그램을 컴파일하고 링크하는 버전과 관련이 없습니다. CUDA 10.0을 지원하는 드라이버는 또한 CUDA 9.2 용으로 구축 된 응용 프로그램을 실행할 수 있습니다…
Michael Kenzel

@MichaelKenzel 알겠습니다. 설명해 주셔서 감사합니다! 내가 CUDA9.2를 사용하고있는 것 같아요 ..
yuqli

비슷한 질문이 여기 있습니다 . @MichaelKenzel 답변을 추가하고 싶다면 내가 찬성 할 것입니다.
Robert Crovella 2018

1
@RobertCrovella 네, 제가 찾던 사람이었습니다. ) 나는 단지 사람이 다음 upvote에 가치가 그래서 만약 당신 자신이며,이 의견에서 답을 배웠다
마이클 Kenzel

답변:


179

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-smiCUDA 10.2를 nvcc -V보고하고 CUDA 10.1을보고하는 경우 일반적으로 우려 할 필요가 없습니다. 그냥 작동해야하며 반드시 "CUDA 10.1을 설치하려고했을 때 실제로 CUDA 10.2를 설치했다"는 의미는 아닙니다.

nvcc명령이 아무것도보고하지 않는 경우 (예 Command 'nvcc' not found...:) CUDA 설치가 잘못 되었기 때문일 수 있습니다. 즉, 위에서 언급 한 필수 단계가 올바르게 수행되지 않았기 때문일 수 있습니다. 실행 파일 을 찾기 위해 find또는 locate(맨 페이지를 사용하여 방법을 배우려면) 와 같은 리눅스 유틸리티를 사용하여 이것을 알아낼 수 있습니다 nvcc. 하나만 있다고 가정하면 경로를 사용하여 PATH 환경 변수를 수정할 수 있습니다.



1
@Rober Crovella 명확 해 주셔서 감사합니다. nvidia-smi는 CUDA 버전 10.1을 보여주고 nvcc는 9.1을 보여줍니다. 이제 네트워크를 훈련해도 괜찮습니까? 아니면 설치가 괜찮습니까?
Dhiren Hamal

나는 사후 설치 단계를 수행하지만, 여전히, NVCC 및 NVIDIA-SMI 다른 CUDA 버전을 보여주고있다
BeingMIAkashs

그것은 전적으로 가능합니다. 최신 드라이버를 설치 한 경우 (유발 nvidia-smi하지만 CUDA의 이전 버전 (예를 들어, 10.1) 후 차이에 의해보고있을 것 CUDA 10.2을, 현재 표시) nvidia-smi에 비해 nvcc. 그 경우에는 문제가되지 않습니다.
Robert Crovella

이 설명은 도움이되지만 10.1 nvcc보다 높은 버전 (예 : 10.2)을보고하면 어떤 일이 발생하는지 설명하지 않습니다 nvidia-smi. 이 경우 Cuda는이를 10.2로 컴파일하고 10.1에서 실행하려고합니다. "RuntimeError: CUDA error: no kernel image is available for execution on the device"예를 들어 일반적으로 런타임 오류가 발생 합니다.
TheSaurus 2010 년

5

nvccCUDA bin 폴더에 있습니다 $PATH. 따라서 CUDA bin 폴더가 .

특히 CUDA 설치 후 작업을 수행했는지 확인 하십시오 (예 : 여기에서 ).

  1. 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 컴퓨팅 버전에 따라 약간 다른 끝을 가질 수 있습니다.

  1. 업데이트합니다 $LD_LIBRARY_PATH(예 :에 다음 줄을 추가합니다 ~/bashrc).
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

그 후 nvccnvidia-smi(또는 nvtop) 모두 동일한 버전의 CUDA를보고합니다.


이는 $ PATH $가 CUDA 10 사용을 지정하기 때문입니다. 그러나 일부 소프트웨어에는 다른 버전의 CUDA가 필요합니다.
yuqli

NsightCompute-2019.1NsightCompute-1.0CUDA 10.0에서 호출 됩니다.
Astrid

나는 사후 설치 단계를 수행하지만, 여전히, NVCC 및 NVIDIA-SMI 다른 CUDA 버전을 보여주고있다
BeingMIAkashs

터미널을 열 때마다 두 경로 명령을 실행해야합니다 (7 단계의 cuda 설치 후). 상태를 유지하고 경로 명령을 반복적으로 실행할 필요가없는 방법이 있습니까?
monti

@monti 예, 명령을 작성 .bashrc하거나 bash_profile각 bash 세션에 대해 자동으로로드 할 수 있습니다 . 여기를 참조하십시오 : stackoverflow.com/questions/14637979/...
yuqli

0

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에 대한 디렉토리가 없기 때문에 도움이 될 수 있습니다. 이것이 나만의 문제인지 아니면 왜 공식 문서에 언급하지 않았는지 확실하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.