NVIDIA NVMLドライバー/ライブラリバージョンの不一致


226

実行するnvidia-smiと、次のメッセージが表示されます。

Failed to initialize NVML: Driver/library version mismatch

1時間前に同じメッセージを受け取り、cudaライブラリをアンインストールしたところ、を実行できnvidia-smi、次の結果が得られました。

nvidia-smi-result

その後、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
以前のrunfileのインストールと(現在の)パッケージマネージャーのインストール(apt-get)が混在している可能性があります。cuda linuxインストールガイドの指示に従って、以前のすべてのNVIDIAドライバーとCUDAファイルを削除し、クリーンアップした後に再インストールします。再インストールを開始する前に、リンクしたLinuxインストールガイドのドキュメント全体を読むことをお勧めします。競合は、既存の378.13ドライバーインストールの上にCUDA 8 GA2パッケージをインストールしようとしたことからほぼ確実に発生します。
Robert Crovella

この質問は基本的にGPUドライバーのインストール(またはインストールの中断)に関する質問であり、プログラミングに直接関係しないため、私はこの質問を締めくくります。
talonmies

回答:


336

驚いたことに、再起動によって問題が解決しました(私はすでに試したことがあると思いました)。

コメントで言及されたRobert Crovellaの解決策は、私が初めて問題を解決したときに私が行ったものと非常に似ているため、他の誰かにも役立つかもしれません。


2
数日後に戻ってこの回答を受け入れることを忘れないでください。そうすれば、この質問はCUDAタグの未回答リストから外れます
talonmies

5
再起動後にこれが機能するか疑問に思っていましたが、それでも試してみましたが、問題なく動作しました。ありがとう!
Abhishek Potnis 2017年

8
@AbhishekPotnisなぜリブートが機能したのか疑問に思っている場合は、これが原因である可能性があります。Ubuntuをチェックする/var/log/apt/history.logと、システムがlibcudaを自動的に更新したことが判明しました。それ以来、私はそれが二度と表示されないことを期待して、それらの更新を無効にしました。
ジョン

1
残念ながら、これは恒久的な解決策ではありません。問題が再発する可能性があります。解決策は、nvidiaパッケージの新しいバージョンをインストールすることです(nvidia-390)。下記の私の回答を参照してください
Stefan Horning

1
これも私にとってはうまくいきました。一部の手順には含まれsudo reboot now、他には含まれません。
rjurney

232

@etalが言ったように、再起動することでこの問題を解決できますが、再起動しない手順が役立つと思います。

中国語については、私のブログをチェックしてください-> 中文版

エラーメッセージ

NVML:ドライバー/ライブラリバージョンの不一致

Nvidiaドライバーカーネルモジュール(kmod)のバージョンが間違っていることを伝えます。このドライバーをアンロードしてから、正しいバージョンのkmodをロードする必要があります。

どうやってするか ?

まず、どのドライバーがロードされているかを知る必要があります。

lsmod | grep nvidia

あなたは得るかもしれません

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

私たちの最終的な目標はnvidiamod をアンロードすることなので、モジュールをアンロードする必要がありますnvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

次に、アンロードします nvidia

sudo rmmod nvidia

トラブルシューティング

rmmod: ERROR: Module nvidia is in useカーネルモジュールが使用中であることを示すのようなエラーが発生した場合は、kmodを使用してプロセスを強制終了する必要があります。

sudo lsof / dev / nvidia *

その後、それらのプロセスを強制終了し、kmodsのアンロードを続行します

テスト

それらのkmodsが正常にアンロードされたことを確認します

lsmod | grep nvidia

何も表示されないはずです。正しいドライバをロードできることを確認してください

nvidia-smi

あなたは正しい出力を得るはずです


3
@surajリンクされているだけではありません。答えはよく書かれています。唯一の問題は彼が彼の所属を明らかにしなかったことであり、あなたはそれをしました。
Sagar V

2
@KiralyCraft間違ったものはディスク上に存在しなくなりましたが、まだメモリ内にあります。nvidia-smiは、新しい読み込み手順をトリガーするだけだと思います。
Comzyh 2018年

1
鮮やかさ!これが問題の原因だとは思いもしませんでした。だから、再起動しても同じことですか?
2018年

1
@alys明らかに、再起動すると、すべてのモジュールがアンロードされてから再ロードされます。
Comzyh 2018

1
動作しましたが、再起動すると問題が発生します。私の解決策も正しくありません。それは...すべてのクリーンインストールではありません
ケビン氏

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を削除した後も、384個のファイルが次の場所にありました:/var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/カーネル/ドライバー

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

failed to initialize NVML: Driver/Library version mismatchnvidia-gpu-temperature-indicatorからエラーが発生しました。また、nvidia-smiは情報の印刷に失敗しました。Ubuntuに他のバージョンのnvidiaドライバーがインストールされていないかどうかを確認しようとしました。しかし、私はnvidia-driver-390を見つけました。最後に、reboot私は問題を解決するのに役立ちました。


9

トップ2の回答では問題を解決できません。Nvidiaの公式フォーラムで解決策を見つけ、問題を解決しました。以下のエラー情報は、異なる方法で2つの異なるバージョンのドライバーをインストールすることにより発生する場合があります。たとえば、aptおよび公式インストーラーを使用してNvidiaドライバーをインストールします。

NVMLの初期化に失敗しました:ドライバー/ライブラリバージョンの不一致

この問題を解決するには、次の2つのコマンドのいずれかを実行するだけで済みます。

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

bash:/ usr / bin / nvidia-uninstall:そのようなファイルやディレクトリはありません
Stepan Yakovenko '16

できます。アンインストールファイルが存在しない場合があります。
Qinsheng Zhang

5

これは、nvidia-348パッケージを使用してUbuntu 16.04でも発生しました(Ubuntu 16.04の最新のnvidiaバージョン)。

ただしnvidia-390独自のGPUドライバーPPAを使用してインストールすると、問題を解決できます。

したがって、Ubuntu 16.04で説明されている問題の解決策は次のとおりです。

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

注:このガイドは、Ubuntuのクリーンインストールを前提としています。以前のドライバがインストールされている場合は、すべてのカーネルモジュールをリロードするために再起動が必要です。


1
これと再起動が私のためにそれをしました!
サイボット2018

1

問題も抱えていました。(ubuntu 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 remove " nvidia "

「libtinfo6:i386」のようなパッケージが削除されない

Ubuntu 20.04とNvidia-driver-440を使用しているため、画像の下に表示されているすべてのパッケージを削除する必要があります

削除する必要があるすべてのパッケージのリスト:

img

画像に示すように、インストールするパッケージがNvidia-driver-440の207 Mbの正しいサイズであることを確認します。それより少ない場合は、すべてのパッケージを削除していないことを意味します。


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

コンテナーをDockerイメージにコミットしました。次に、このDockerイメージを使用して別のコンテナーを再作成しましたが、問題は解決しました。


-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

セント/ rhel

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.