Incompatibilidade de versão do driver / biblioteca NVIDIA NVML

227

Quando executo nvidia-smi, recebo a seguinte mensagem:

Failed to initialize NVML: Driver/library version mismatch

Há uma hora, recebi a mesma mensagem e desinstalei minha biblioteca cuda e pude executar nvidia-smi, obtendo o seguinte resultado:

nvidia-smi-result

Depois disso, baixei cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debda página oficial da NVIDIA e simplesmente:

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}}

Agora eu tenho o cuda instalado, mas recebo o erro de incompatibilidade mencionado.


Algumas informações potencialmente úteis:

Em execução cat /proc/driver/nvidia/version, recebo:

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)

Estou executando o Ubuntu 16.04.2 LTS.

O lançamento do kernel é: 4.4.0-66-genérico.

Obrigado!

etal
fonte
12
Você provavelmente misturou uma instalação anterior do arquivo de execução com a instalação (atual) do gerenciador de pacotes (apt-get). Siga as instruções no guia de instalação do cuda linux para remover todos os drivers CUID e arquivos CUDA anteriores da NVIDIA e, em seguida, reinstale-os após a limpeza. Antes de iniciar a reinstalação, convém ler o documento completo do guia de instalação do Linux que eu vinculei. O conflito quase certamente surge da sua tentativa de instalar o pacote CUDA 8 GA2 em cima da instalação do driver 378.13 existente.
Robert Crovella
Estou votando para fechar esta questão, pois é basicamente uma questão de instalar (ou interromper a instalação de) drivers de GPU e não diretamente relacionada à programação.
talonmies 29/01

Respostas:

337

Surpresa surpresa, a reinicialização resolveu o problema (eu pensei que já tinha tentado isso).

A solução que Robert Crovella mencionou nos comentários também pode ser útil para outra pessoa, já que é bastante semelhante ao que eu fiz para resolver o problema na primeira vez que o tive.

etal
fonte
2
lembre-se de voltar em alguns dias e aceitar essa resposta assim que esta questão cai fora da lista sem resposta para o tag CUDA
talonmies
5
Fiquei cético em relação a esse trabalho após uma reinicialização, mas mesmo assim tentei e funcionou !! Obrigado!
Abhishek Potnis
8
@AbhishekPotnis Se você está se perguntando por que a reinicialização funcionou, pode ser por causa disso: a verificação /var/log/apt/history.logno Ubuntu revelou que o sistema atualizou automaticamente a libcuda, o que presumivelmente exigiu uma reinicialização para continuar funcionando corretamente. Desde então, desativei essas atualizações na esperança de que não voltarei a vê-lo.
John
1
Infelizmente, essa não é uma solução permanente. O problema pode reaparecer. A solução é instalar uma versão mais recente do pacote nvidia ( nvidia-390). Veja minha resposta abaixo
Stefan Horning
1
Isso também funcionou para mim. Algumas instruções incluem sudo reboot nowe outras não.
Rjurney
232

Como o @etal disse, a reinicialização pode resolver esse problema, mas acho que um procedimento sem reiniciar ajudará.

Para chinês, verifique meu blog -> 中文 版

A mensagem de erro

NVML: Incompatibilidade de versão do driver / biblioteca

informe-nos que o módulo do kernel do driver da Nvidia (kmod) tem uma versão incorreta; portanto, devemos descarregar esse driver e carregar a versão correta do kmod

Como fazer isso ?

Primeiro, devemos saber quais drivers estão carregados.

lsmod | grep nvidia

você pode obter

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

nosso objetivo final é descarregar o nvidiamod, então devemos descarregar o módulo dependendonvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

então, descarregue nvidia

sudo rmmod nvidia

Solução de problemas

se você receber um erro como o rmmod: ERROR: Module nvidia is in useque indica que o módulo do kernel está em uso, você deve interromper o processo usando o kmod:

sudo lsof / dev / nvidia *

e, em seguida, mate esses processos e continue a descarregar os kmods

Teste

confirme se você descarregou com êxito esses kmods

lsmod | grep nvidia

você não deve obter nada e confirme que pode carregar o driver correto

nvidia-smi

você deve obter a saída correta

Comzyh
fonte
3
@suraj não é apenas vinculado. a resposta está bem escrita. o único problema é que ele não divulgou sua afiliação e você fez isso.
Sagar V
2
@KiralyCraft O errado não existe mais no disco, mas ainda está na memória. A nvidia-smi acabou de acionar um novo procedimento de carregamento, eu acho.
Comzyh
1
Brilhante! Não tinha ideia de que foi isso que causou o problema. Então, reiniciar faz a mesma coisa?
alys
1
@ alys Obviamente, a reinicialização será descarregada e, em seguida, recarregará todo o módulo.
Comzyh
1
funcionou, mas a reinicialização traz o problema de volta .. e minha resolução não está correta também. Não é uma instalação limpa em todos ..
Kevin Ele
14

Então, eu estava tendo esse problema, nenhum dos outros remédios funcionou. A mensagem de erro era opaca, mas a verificação do dmesg foi fundamental:

[   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.

No entanto, eu havia removido completamente a versão 384 e os drivers de kernel restantes nvidia-384*. Mas mesmo após a reinicialização, eu ainda estava conseguindo isso. Ver isso significava que o kernel ainda estava compilado para fazer referência à 384, mas estava apenas encontrando 410. Portanto, recompilei meu kernel:

# 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

E então funcionou.

Após remover o 384, eu ainda tinha 384 arquivos em: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/ kernel / drivers

Eu recomendo usar o locatecomando (não instalado por padrão) em vez de pesquisar o sistema de arquivos todas as vezes.

UserOneFourTwo
fonte
Muito obrigado! É uma boa ideia usar locate nvidia-smi. Eu usei o comando para descobrir que outro driver foi instalado.
hao
sudo update-initramfs -c -k uname -rNão me ajudou.
mrgloom 29/01
dmesgsaída: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 29/01
9

Eu recebi o erro failed to initialize NVML: Driver/Library version mismatchdo meu indicador nvidia-gpu-temperature-. E a nvidia-smi não conseguiu imprimir nenhuma informação. Tentei descobrir se havia outras versões do driver da nvidia instaladas no meu ubuntu. Mas acabei de encontrar nvidia-driver-390. No final, rebootme ajudou a resolver o problema.

Yossarian42
fonte
9

As 2 principais respostas não podem resolver meu problema. Encontrei uma solução no fórum oficial da Nvidia resolvendo meu problema. As informações de erro abaixo podem causar a instalação de duas versões diferentes do driver por abordagens diferentes. Por exemplo, instale o driver da Nvidia pelo apt e pelo instalador oficial.

Falha ao inicializar o NVML: incompatibilidade de versão do driver / biblioteca

Para resolver esse problema, é necessário executar apenas um dos dois comandos a seguir.

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall
zhenlingcn
fonte
bash: / usr / bin / nvidia-uninstall: Não existe esse arquivo ou diretório
Stepan Yakovenko 16/16
Funciona. Às vezes, o arquivo de desinstalação não existe.
Qinsheng Zhang
5

Isso também aconteceu comigo no Ubuntu 16.04 usando o nvidia-348 pacote (versão mais recente da nvidia no Ubuntu 16.04).

No entanto, eu poderia resolver o problema instalando nvidia-390através do PPA de drivers proprietários da GPU .

Portanto, uma solução para o problema descrito no Ubuntu 16.04 está fazendo o seguinte:

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

Nota: Este guia assume uma instalação limpa do Ubuntu. Se você possui drivers anteriores instalados, uma reinicialização pode ser necessária para recarregar todos os módulos do kernel.

Stefan Horning
fonte
1
Isso e uma reinicialização fizeram isso por mim!
SaiBot 08/08/19
1

Teve o problema também. (Estou executando o ubuntu 18.04)

O que eu fiz:

dpkg -l | grep -i nvidia

Então sudo apt-get remove --purge nvidia-381 (e todas as versões duplicadas, no meu caso, eu tinha 381, 384 e 387)

Então sudo ubuntu-drivers devices para listar o que está disponível

E eu escolho sudo apt install nvidia-driver-430

Depois disso, nvidia-smi deu a saída correta (não há necessidade de reiniciar). Mas suponho que você possa reiniciar em caso de dúvida.

Também segui esta instalação para reinstalar o cuda + cudnn.

Benjamin Crouzier
fonte
Não sei por que isso foi marcado como negativo (-1). Aumentei para 0. O comando "dpkg -l | grep -i nvidia" é válido e mostra o que não foi excluído.
Gerardg 27/11/19
1

Experimentei esse problema após uma atualização normal do kernel em uma máquina CentOS. Como todos os drivers e bibliotecas CUDA e nVidia foram instalados por meio de repositórios YUM, consegui resolver os problemas usando as seguintes etapas:

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

Isso garantiu que meu kernel e meu driver nVidia fossem consistentes. Eu acho que apenas reiniciar pode resultar na versão errada do módulo do kernel sendo carregada.

scrutari
fonte
Trabalhou como um encanto!
max
1

Eu tenho que reiniciar meus kernels e remover todos os pacotes que eu instalei anteriormente (durante a primeira instalação), certifique-se de excluir todos os pacotes, mesmo depois de remover os pacotes pelo comando abaixo

sudo apt-get --purge remove " nvidia "

os pacotes como "libtinfo6: i386" não são removidos

Estou usando o Ubuntu 20.04 e Nvidia-driver-440 para que você tenha que remover todos os pacotes mostrados abaixo.

Lista de todos os pacotes que precisam ser removidos:

img

conforme mostrado na imagem, verifique se o pacote que você está instalando tem o tamanho correto de 207 Mb para Nvidia-driver-440, se for menor, significa que você não removeu todos os pacotes.

Gaurav Ghati
fonte
-1

Confirmei o contêiner em uma imagem do Docker. Em seguida, recrio outro contêiner usando esta imagem de janela de encaixe e o problema se foi.

Berat
fonte
-1

Essas respostas não funcionaram para mim:

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.

Desinstale o driver antigo 418.67e instale o novo driver 430.26(download 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)
Mrgloom
fonte
-1

reiniciar. Se o problema ainda existir:

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

por cent / rhel

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

então

reboot
levinit
fonte