NVIDIA NVML 드라이버 / 라이브러리 버전 불일치


224

내가 달릴 때 nvidia-smi 다음 메시지가 나타납니다.

Failed to initialize NVML: Driver/library version mismatch

한 시간 전에 동일한 메시지를 수신하고 cuda 라이브러리를 제거 nvidia-smi했으며 다음과 같은 결과를 얻을 수있었습니다 .

엔비디아 스미 결과

이 후 공식 NVIDIA 페이지cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb 에서 다운로드 했습니다 . 한 다음 간단히

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

이제 cuda가 설치되었지만 언급 된 불일치 오류가 발생합니다.


잠재적으로 유용한 정보 :

실행 cat /proc/driver/nvidia/version내가 얻을 :

NVRM version: NVIDIA UNIX x86_64 Kernel Module  378.13  Tue Feb  7 20:10:06 PST 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

Ubuntu 16.04.2 LTS를 실행 중입니다.

커널 릴리즈는 4.4.0-66-generic입니다.

감사!


12
이전 실행 파일 설치를 (현재) 패키지 관리자 설치 (apt-get)와 혼합했을 것입니다. cuda linux 설치 안내서 의 지침에 따라 모든 이전 NVIDIA 드라이버 및 CUDA 파일을 제거한 다음 정리 한 후 다시 설치하십시오. 재설치를 시작하기 전에 링크 된 전체 Linux 설치 안내서를 읽으십시오. 기존 378.13 드라이버 설치 위에 CUDA 8 GA2 패키지를 설치하려는 시도에서 충돌이 발생했을 가능성이 거의 있습니다.
Robert Crovella

나는 기본적으로 GPU 드라이버 설치 (또는 설치 중단)에 관한 질문이며 프로그래밍과 직접 관련이 없기 때문에이 질문을 닫으려고합니다.
talonmies

답변:


334

놀랍게도 재부팅하면 문제가 해결되었습니다 (이미 시도했다고 생각합니다).

의견에 언급 된 Robert Crovella는 다른 사람에게도 유용 할 수 있습니다. 왜냐하면 처음에 문제를 해결하기 위해했던 것과 매우 비슷하기 때문입니다.


2
며칠 후에 다시
와서이

5
재부팅 후이 작업에 대해 회의적이지만 그럼에도 불구하고 시도해 보았습니다. 감사!
Abhishek Potnis

8
@AbhishekPotnis 재부팅이 왜 작동했는지 궁금하다면, 그 이유 때문일 수 있습니다 /var/log/apt/history.log. 우분투를 확인 하면 시스템이 libcuda를 자동으로 업데이트 한 것으로 나타났습니다. 그 이후로 다시는 보이지 않기를 희망하여 업데이트를 비활성화했습니다.
John

1
불행히도 이것은 영구적 인 해결책이 아닙니다. 문제가 다시 나타날 수 있습니다. 해결책은 최신 버전의 nvidia 패키지 ( nvidia-390) 를 설치하는 것 입니다. 내 답변을 아래에서보십시오
Stefan Horning

1
이것은 또한 나를 위해 일했습니다. 일부 지침에는 포함되어 sudo reboot now있고 그렇지 않은 지침도 있습니다 .
rjurney

231

@etal이 말했듯이 재부팅하면이 문제를 해결할 수 있지만 재부팅하지 않은 절차가 도움이 될 것이라고 생각합니다.

중국어의 경우 내 블로그를 확인하십시오-> 中文 版

오류 메시지

NVML : 드라이버 / 라이브러리 버전 불일치

Nvidia 드라이버 커널 모듈 (kmod)의 버전이 잘못되었으므로이 드라이버를 언로드 한 다음 올바른 kmod 버전을로드해야합니다.

그렇게하는 방법 ?

먼저, 어떤 드라이버가로드되었는지 알아야합니다.

lsmod | 그렙 엔비디아

당신은 얻을 수 있습니다

nvidia_uvm            634880  8
nvidia_drm             53248  0
nvidia_modeset        790528  1 nvidia_drm
nvidia              12312576  86 nvidia_modeset,nvidia_uvm

마지막 목표는 nvidia모드 를 언로드하는 것이므로 모듈을 언로드해야합니다.nvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

그런 다음 언로드 nvidia

sudo rmmod 엔비디아

문제 해결

rmmod: ERROR: Module nvidia is in use커널 모듈이 사용 중임을 나타내는 오류가 발생 하면 kmod를 사용하는 프로세스를 종료해야합니다.

sudo lsof / dev / nvidia *

그런 다음 프로세스를 종료 한 다음 kmod를 계속 언로드하십시오.

테스트

그 kmods를 성공적으로 언로드 확인

lsmod | 그렙 엔비디아

아무것도 얻지 않으면 올바른 드라이버를로드 할 수 있는지 확인하십시오.

엔비디아-스미

당신은 정확한 결과를 얻어야한다


3
@suraj 그것은 단지 연결되어 있지 않습니다. 답은 잘 쓰여져 있습니다. 유일한 문제는 그가 소속을 공개하지 않았다는 것입니다.
Sagar V

2
@KiralyCraft 더 이상 디스크에 존재하지 않지만 여전히 메모리에 있습니다. nvidia-smi는 새로운 로딩 절차를 시작합니다.
Comzyh 2012 년

1
훌륭한! 이것이 문제의 원인인지 전혀 몰랐습니다. 다시 부팅해도 같은 작업을 수행합니까?
alys

1
@alys 분명히 재부팅하면 모든 모듈이 언로드되었다가 다시로드됩니다.
Comzyh

1
작동했지만 재부팅하면 문제가 다시 발생합니다 .. 내 해결책도 올바르지 않습니다. 전혀 깨끗한 설치가 아닙니다.
Kevin He

14

그래서 나는이 문제를 겪고 있었고 다른 치료법은 효과가 없었습니다. 오류 메시지가 불투명했지만 dmesg를 확인하는 것이 중요했습니다.

[   10.118255] NVRM: API mismatch: the client has the version 410.79, but
           NVRM: this kernel module has the version 384.130.  Please
           NVRM: make sure that this kernel module and all NVIDIA driver
           NVRM: components have the same version.

그러나 384 버전을 완전히 제거하고 나머지 커널 드라이버를 제거했습니다 nvidia-384*. 그러나 재부팅 한 후에도 여전히 이것을 얻었습니다. 이것을 보면 커널은 여전히 ​​384를 참조하도록 컴파일되었지만 410 만 찾았습니다. 그래서 커널을 다시 컴파일했습니다.

# uname -a # find the kernel it's using
Linux blah 4.13.0-43-generic #48~16.04.1-Ubuntu SMP Thu May 17 12:56:46 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
# update-initramfs -c -k 4.13.0-43-generic #recompile it
# reboot

그리고는 효과가있었습니다.

384를 제거한 후에도 /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/에 384 개의 파일이 있습니다. 커널 / 드라이버

locate매번 파일 시스템을 검색하는 대신 명령 (기본적으로 설치되지 않음)을 사용하는 것이 좋습니다 .


고마워요! 를 사용하는 것이 좋습니다 locate nvidia-smi. 다른 드라이버가 설치되었는지 알아내는 명령을 사용했습니다.
hao

sudo update-initramfs -c -k uname -r도움이되지 않았습니다.
mrgloom

dmesg출력 :NVRM: API mismatch: the client has the version 418.67, but NVRM: this kernel module has the version 430.26. Please NVRM: make sure that this kernel module and all NVIDIA driver NVRM: components have the same version.
mrgloom

9

상위 2 개의 답변으로 문제를 해결할 수 없습니다. Nvidia 공식 포럼에서 내 문제를 해결하는 솔루션을 찾았습니다. 아래 오류 정보는 서로 다른 접근 방식으로 두 가지 버전의 드라이버를 설치하여 발생할 수 있습니다. 예를 들어, apt 및 공식 설치 프로그램으로 Nvidia 드라이버를 설치하십시오.

NVML을 초기화하지 못했습니다 : 드라이버 / 라이브러리 버전 불일치

이 문제를 해결하려면 다음 두 명령 중 하나만 실행하면됩니다.

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall

bash는 : / NVIDIA-제거는 / usr / 빈 : 해당 파일이나 디렉토리
스테판 Yakovenko 보낸

효과가있다. 때때로 설치 제거 파일이 존재하지 않습니다.
Qinsheng Zhang

8

failed to initialize NVML: Driver/Library version mismatchnvidia-gpu-temperature-indicator에서 오류가 발생 했습니다. 그리고 nvidia-smi는 정보를 인쇄하지 못했습니다. 우분투에 다른 버전의 nvidia 드라이버가 설치되어 있는지 확인하려고했습니다. 하지만 방금 nvidia-driver-390을 찾았습니다. 결국 reboot문제 해결에 도움이되었습니다.


5

nvidia-348패키지 (Ubuntu 16.04의 최신 nvidia 버전)를 사용하여 Ubuntu 16.04에서 나에게도 발생했습니다 .

그러나 독점 GPU 드라이버 PPA를nvidia-390 통해 설치하면 문제를 해결할 수 있습니다.

따라서 Ubuntu 16.04에서 설명한 문제에 대한 해결책은 다음과 같습니다.

  • sudo add-apt-repository ppa:graphics-drivers/ppa
  • sudo apt-get update
  • sudo apt-get install nvidia-390

참고 : 이 안내서는 Ubuntu를 새로 설치 한 것으로 가정합니다. 이전 드라이버를 설치 한 경우 모든 커널 모듈을 다시로드하려면 재부팅해야합니다.


1
이것과 다시 시작은 나를 위해 그것을했다!
SaiBot

1

문제도있었습니다. (우분투 18.04를 실행 중입니다)

제가 한:

dpkg -l | grep -i nvidia

그때 sudo apt-get remove --purge nvidia-381 (그리고 모든 중복 버전, 제 경우에는 381, 384 및 387이었습니다)

그때 sudo ubuntu-drivers devices 사용 가능한 항목을 나열하십시오.

그리고 나는 선택한다 sudo apt install nvidia-driver-430

그 후 nvidia-smi 올바른 출력을 제공했습니다 (재부팅 할 필요 없음). 그러나 확실하지 않은 경우 재부팅 할 수 있다고 가정합니다.

또한 이 설치 에 따라 cuda + cudnn을 다시 설치 했습니다.


왜 이것이 표시되지 않았는지 모르겠습니다 (-1). "dpkg -l | grep -i nvidia"명령이 유효하며 삭제되지 않은 항목을 표시합니다.
gerardg

1

CentOS 시스템에서 정상적인 커널 업데이트 후이 문제가 발생했습니다. 모든 CUDA 및 nVidia 드라이버 및 라이브러리가 YUM 리포지토리를 통해 설치되었으므로 다음 단계를 사용하여 문제를 해결했습니다.

sudo yum remove nvidia-driver-*
sudo reboot
sudo yum install nvidia-driver-cuda nvidia-modprobe
sudo modprobe nvidia # or just reboot

커널과 nVidia 드라이버가 일치하는지 확인했습니다. 재부팅 만하면 잘못된 버전의 커널 모듈이로드 될 수 있습니다.


매력처럼 일했다!
최대

1

커널을 다시 시작하고 이전에 설치 한 모든 패키지를 제거해야합니다 (첫 번째 설치 중). 아래 명령으로 패키지를 제거한 후에도 모든 패키지를 삭제하십시오.

sudo apt-get --purge 제거 " nvidia "

"libtinfo6 : i386"과 같은 패키지는 제거되지 않습니다

아래 이미지에 표시된 모든 패키지를 제거해야하기 때문에 Ubuntu 20.04 및 Nvidia-driver-440을 사용하고 있습니다.

제거해야 할 모든 패키지 목록 :

img

이미지와 같이 설치중인 패키지의 크기가 Nvidia-driver-440에 대해 207MB 인 올바른 크기인지 확인하십시오. 크기가 적 으면 모든 패키지를 제거하지 않았 음을 의미합니다.


0

nvidia 드라이버를 다시 설치했습니다. 다음 명령을 root모드 에서 실행 하십시오.

  1. systemctl isolate multi-user.target

  2. modprobe -r nvidia-drm

  3. Nvidia 드라이버를 다시 설치하십시오 : chmod +x NVIDIA-Linux-x86_64–410.57.run

  4. systemctl start graphical.target

마지막으로 확인 nvidia-smi

덕분에 : Ubuntu-16.04 / 18.04에 RTX 2080 Ti GPU 용 Nvidia 드라이버 및 CUDA-10.0 설치 방법

커널 모듈 'nvidia-drm'을 언로드하는 방법은 무엇입니까?


-1

컨테이너를 도커 이미지에 커밋했습니다. 그런 다음이 도커 이미지를 사용하여 다른 컨테이너를 다시 작성하면 문제가 사라졌습니다.


-1

이 답변은 저에게 효과적이지 않았습니다.

https://stackoverflow.com/a/43023000/1179925

https://stackoverflow.com/a/45319156/1179925

https://stackoverflow.com/a/54349675/1179925

dmesg

NVRM: API mismatch: the client has the version 418.67, but
NVRM: this kernel module has the version 430.26.  Please
NVRM: make sure that this kernel module and all NVIDIA driver
NVRM: components have the same version.

이전 드라이버를 제거 418.67하고 새 드라이버를 설치하십시오 430.26(다운로드 NVIDIA-Linux-x86_64-430.26.run).

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall
chmod +x NVIDIA-Linux-x86_64-430.26.run
sudo ./NVIDIA-Linux-x86_64-430.26.run
[ignore abort]

cat /proc/driver/nvidia/version

NVRM version: NVIDIA UNIX x86_64 Kernel Module  430.26  Tue Jun  4 17:40:52 CDT 2019
GCC version:  gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)

-1

재부팅하십시오. 문제가 여전히 존재하는 경우 :

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia
nvidia-smi

센트 / 릴

cd /boot
mv initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut -vf initramfs-$(uname -r).img $(uname -r)

그때

reboot

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