1 말하자면 아래와 같은 희안한 상황
nvcc --version 명령어는 10.1을 보여주는 데에 반해, nvidia-smi는 11.2를 보여주고 있는 상황.
2
원인
이는 CUDA가 두 개의 기본 API를 가지고 있기 때문이다. CUDA는 런타임 API와 드라이버 API를 가지고 있는데, 각각의 버전이 서로 상이할 수 있다.
예를 들어서 리눅스의 libcuda.so같은 드라이버 API에 필수적인 것들은 GPU driver installer에 의해
설치된다. 한편 libcudart.so나 nvcc같은 런타임 API들은
CUDA toolkit installer에 의해 설치된다.
항상 모든 경우에 있어서 driver API 버전과 runtime API 버전이 같아야만 하는 것은 아니다. nvidia-smi 명령어는 GPU driver
installer에 의해 설치된 정보를 반환하며, CUDA toolkit installer에
의해 설치된 정보는 일체 반환하지 않는다.
이보다 더 상세한 내용은 스택오버플로우
게시물 및 NVIDIA
홈페이지에서 확인할 수 있다.
3
영향은
nvidia-smi가 ncvv --version보다 같거나 더 높은 CUDA 버전을 표시하는 것은 대수롭게 여기지 않아도 된다. 이는 CUDA에 정의된 호환성 경로 때문이다. 예를 들어서 위의 사진처럼 nvidia-smi가
CUDA 11.2를 보여주고 있고, nvcc --version이 CUDA 10.1을
표시하고 있더라도 더 최신의 드라이버가 구형의 CUDA toolkit 및 runtime API를 지원하기 때문에 문제가 되지 않는다.
다만 Command ‘nvcc’ not
found가 출력되는 경우엔 CUDA 설치가 정상적으로 이루어지지 않은 것이므로 CUDA
11 linux install guide를 적절히 수행하여 해결해야 한다.
댓글 없음:
댓글 쓰기