히비스서커스의 블로그

[Linux] Failed to initialize NVML: Driver/library version mismatch (feat. nvidia-smi error) 본문

Programming/Linux

[Linux] Failed to initialize NVML: Driver/library version mismatch (feat. nvidia-smi error)

HibisCircus 2021. 11. 12. 14:25
728x90

상황

 

터미널에서 nvidia-smi 명령어를 입력하였는데

Failed to initialize NVML: Driver/library version mismatch 

이와 같은 에러 메시지가 발생하였다. 찾아보니 nvidia 그래픽 드라이버나 관련 라이브러리가 업데이트 되면서 나타나는 경우에 발생하는 메시지라고 한다. 다른 서버 터미널에서도 동일한 메시지가 뜨는 것을 확인하였다.

 

해결방법

 

nvidia driver kernel module이 잘못 로딩되어 있는 것이므로 언로딩 후 로딩하면 해결이 가능하다.

 

1. 먼저 터미널에서 다음과 같은 명령어를 통해 로딩되어 있는 nvidia driver kernel을 확인한다. 

$ lsmod | grep nvidia

그럼 다음과 같은 nvidia driver kernel들을 확인할 수 있을 것이다. (서버마다 조금씩 다를 수 있다.)

 

2. 이제 로딩되어 있는 nvidia driver kernel들을 unload 해준다. 순서대로 입력을 해준다.

$ sudo rmmod nvidia_drm
$ sudo rmmod nvidia_modeset
$ sudo rmmod nvidia_uvm
$ sudo rmmod nvidia

error 1

첫 번째 명령어 입력 후 아래와 같은 에러 메세지가 나오는 경우가 종종 있다.

rmmod: ERROR: Module nvidia_drm is in use

이럴 경우 다음과 같은 방법으로 해결할 수 있다. 먼저 root 계정으로 변경해준다.

$ su root

그 다음 아래의 명령어를 순서대로 입력해준다.

$ systemctl isolate multi-user.target
$ modprobe -r nvidia-drm
$ systemctl start graphical.target

다시 user 계정으로 전환해준다.

$ su user

그 다음 2. 의 명령어를 순서대로 입력하면 

이와 같이 나오면 정상적으로 unload 된 것이다.

 

error 2

만약 마지막 두 명령어에서 다음과 같은 에러 메세지가 나온다면

 rmmod: ERROR: Module nvidia_uvm is in use
 rmmod: ERROR: Module nvidia is in use

nvidia와 관련된 프로세스 번호를 추출하여 kill 해준다.

$ sudo lsof /dev/nvidia* | awk 'NR > 1 {print $2}' | sudo xargs kill

 

3. 다시 한 번 로딩되어 있는 nvidia driver kernel을 확인한다.

$ lsmod | grep nvidia

아무 것도 뜨지 않는다면 성공이다.

 

 

4. 마지막으로 nvidia-smi 명령어를 통해 확인한다.

$ nvidia-smi

 

 

 

도움이 되셨다면 아래의 공감버튼 한 번 눌러주세요. 포스팅의 큰 힘이 됩니다.

 

-히비스서커스-

728x90