2021-01-26

nvcc와 nvidia-smi 명령어가 보여주는 CUDA 버전이 다를 때


1       말하자면 아래와 같은 희안한 상황


nvcc --version 명령어는 10.1을 보여주는 데에 반해, nvidia-smi11.2를 보여주고 있는 상황.

 

2       원인

이는 CUDA가 두 개의 기본 API를 가지고 있기 때문이다. CUDA는 런타임 API와 드라이버 API를 가지고 있는데, 각각의 버전이 서로 상이할 수 있다.

예를 들어서 리눅스의 libcuda.so같은 드라이버 API에 필수적인 것들은 GPU driver installer에 의해 설치된다. 한편 libcudart.sonvcc같은 런타임 API들은 CUDA toolkit installer에 의해 설치된다.

항상 모든 경우에 있어서 driver API 버전과 runtime API 버전이 같아야만 하는 것은 아니다. nvidia-smi 명령어는 GPU driver installer에 의해 설치된 정보를 반환하며, CUDA toolkit installer에 의해 설치된 정보는 일체 반환하지 않는다.

이보다 더 상세한 내용은 로우 게시물 및 NVIDIA 에서 확인할 수 있다.

  

3       영향은

nvidia-smincvv --version보다 같거나 더 높은 CUDA 버전을 표시하는 것은 대수롭게 여기지 않아도 된다. 이는 CUDA에 정의된 호환성 경로 때문이다. 예를 들어서 위의 사진처럼 nvidia-smiCUDA 11.2를 보여주고 있고, nvcc --versionCUDA 10.1을 표시하고 있더라도 더 최신의 드라이버가 구형의 CUDA toolkit runtime API를 지원하기 때문에 문제가 되지 않는다.

다만 Command ‘nvcc’ not found가 출력되는 경우엔 CUDA 설치가 정상적으로 이루어지지 않은 것이므로 CUDA 11 linux install guide를 적절히 수행하여 해결해야 한다.

 

댓글 없음:

댓글 쓰기