본문 바로가기

Computer Vision/개발

nvidia-smi has failed because it couldn't communicate with the nvidia driver 해결, nvidia driver 설치

그래픽 드라이버랑 뭔가 호환이 되지 않을 때 생기는 problem 인 "nvidia- smi has failed because it couldn't communicate with the nvidia driver" 에 대한 solution을 드디어 찾아냄...

 

이 문제를 해결하는데 이렇게 많은 solution들이 있는 줄 몰랐다...

하지만 나는 너무 어이없는 ... 방법으로 해결되었다.

 

방법1

방법 1은 현재 설치된 드라이버 싹 삭제하고 다시 까는 것

$ apt --installed list | grep nvidia-driver  ##실행하면 현재 설치된 nvidia driver 버전이 나온다.

 

$ sudo apt remove nvidia-driver-(버전명)  ## 현재 설치된 드라이버 지운다

$ sudo apt autoremove  ## 확인사살로 autoremove도 실행해서 깔끔하게 삭제한다.

 

$ sudo apt-get install nvidia-driver-(버전명)  ## 삭제했던 드라이버 다시 깐다

$ reboot  ## 재부팅

 

이렇게 하고 나서 다시 nvidia-smi 실행하면 되는 경우가 있다고들 한다.. (난 아님)

 

방법2

방법 2는 nvidia-prime을 확인하는 것이다.

 

$ sudo apt install nvidia-prime  ##nvidia-prime 설치

$ sudo prime-select nvidia  ## 이미 얘로 설정되어있으면 already selected 어쩌고~ 이렇게 나옴

$ sudo rm /lib/modprobe.d/blacklist-nvidia.conf  ##블랙리스트 삭제

$ sudo update-initramfs -u 

$ reboot

 

이렇게 하고 나서 재부팅 후 nvidia-smi 실행하면 된다고들 한다...  (난 아님)

 

방법3

방법3은 gcc, g++ 재설치하는 것이다.

 

$ sudo apt-get remove gcc

$ sudo apt-get remove g++

$ sudo apt-get install gcc

$ sudo apt-get install g++

$ reboot

 

마찬가지로 재부팅후 nvidia-smi 실행하면 되는 사람이 있다고 한다... (난 아님)

 

방법4

드디어 내가 해결한 방법 ^^^^^ 잘못 설치한 드라이버 버전 확인

보통 우리가 어떤 driver 설치할 건지 결정할 때, 

 

$ ubuntu-drivers devices 

위를 실행하면 설치 가능한 driver들이 주르르륵 나오고 그중에 특정 버전 옆에 "recommended" 라고 뜬다.

보통은 그 버전으로 설치하는 것이 일반적으로, autoinstall로 아무거나 자동설치해도 대부분 저 recommended 버전을 깔아준다.

 

나의 경우, 별별 난리를 쳐도 nvidia-smi 실행도 안되고 드라이버가 호환이 되지 않아서 ubuntu 해상도도 극악인 상태에서 뭐가 문제인지 못찾아서 짜증난 상태에서 다음을 발견했다.

 

$ dmesg | grep NVIDIA

이를 실행하면, 현재 설치된 드라이버와 관련된 log를 뱉어준다.

나의 경우 분명히 ubuntu-drivers devices 에서 nvidia-driver-460 이 recommended 라고 떴는데 

위의 코드를 실행하니 내 gpu에서는 nvidia-driver-390을 사용해야 하므로 460은 ignored 된다고 떴다 ^^^

아니 처음부터 왜 추천해줬던거람?

 

암튼 그래서 기존 460 버전 삭제하고 390 깔고 재부팅하니... 해상도도 높아지고 nvidia-smi도 정상 작동됨!!!

결론은 내가 드라이버 버전 잘못 설치한거였는데, 추천해주는 애가 쟤니까 차마 의심할 생각도 못했었다. 드디어 도커돌리러 간다...

 

 

추가)

알고보니 gpu가 오래된 버전이면 이렇게 460이 recommended 여도 Legacy GPU 취급받아, nvidia driver 390 써야되나 보다.

다음은 Legacy GPU 목록 및 설명 링크

What's a legacy driver? | NVIDIA