web-dev-qa-db-ja.com

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

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-ジェネリックです。

ありがとうございます。

139
etal

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

コメントでRobert Crovellaが述べた解決策は、他の人にとっても役に立つかもしれません。それは私が最初に問題を解決したときに解決したこととよく似ているからです。

214
etal

@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

最後の目標はnvidia modをアンロードすることです。そのため、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を降ろし続ける

テスト

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

lsmod | grep nvidia

あなたは何も得ないはずです、そしてあなたが正しいドライバをロードできることを確認してください

nvidia-smi

正しい出力が得られるはずです

172
Comzyh

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

しかし、 Proprietary GPU Drivers 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インストールを前提としています。以前のドライバを再インストールしたことがある場合は、すべてのカーネルモジュールをリロードする必要があります。

4
Stefan Horning

私は私のnvidia-gpu-temperature-indicatorからエラーfailed to initialize NVML: Driver/Library version mismatchを得ました。そしてnvidia-smiは情報を印刷できませんでした。私のubuntuに他のバージョンのnvidiaドライバがインストールされているかどうか確認しようとしました。しかし、私はちょうどnvidia-driver-390を見つけました。結局、rebootは私が問題を解決するのを助けました。

3
Yossarian42

だから私はこの問題を抱えていた、他の救済策のどれもうまくいきませんでした。エラーメッセージは不透明ですが、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コマンド(デフォルトではインストールされません)を使用することをお勧めします。

2
UserOneFourTwo

問題もありました。 (私は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を再インストールしました。

0