首页 文章

NVIDIA NVML驱动程序/库版本不匹配

提问于
浏览
128

当我运行 nvidia-smi 时,我收到以下消息:

Failed to initialize NVML: Driver/library version mismatch

一小时前我收到了同样的消息并卸载了我的cuda库,我能够运行 nvidia-smi ,得到以下结果:

nvidia-smi-result

在此之后我从the official NVIDIA page下载了 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 .

谢谢!

6 回答

  • -3

    惊喜,重启解决了问题(我以为我已经尝试过了) .

    Robert Crovella在评论中提到的解决方案也可能对其他人有用,因为它与我第一次使用它时解决问题的方式非常相似 .

  • 160

    正如@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

    测试

    确认您已成功卸载这些kmods

    lsmod | grep nvidia

    你应该什么也得不到,然后确认你可以加载正确的驱动程序

    nvidia-smi

    你应该得到正确的输出

  • 203

    这也发生在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

    Note: 本指南假定Ubuntu安装干净 . 如果您安装了以前的驱动程序,则需要重新启动以重新加载所有内核模块 .

  • 4

    我从我的nvidia-gpu-temperature-indicator获得了错误 failed to initialize NVML: Driver/Library version mismatch . 并且nvidia-smi无法打印任何信息 . 我试图找到我的ubuntu中是否安装了其他版本的nvidia驱动程序 . 但我刚刚找到了nvidia-driver-390 . 最后, reboot 帮助我解决了这个问题 .

  • 1

    所以我遇到了这个问题,其他任何补救措施都没有奏效 . 错误消息是不透明的,但检查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

    对于我的情况,我已经安装了nvidia驱动程序,然后安装了cuda . 我发现它可以通过安装cuda来修复 . https://developer.nvidia.com/cuda-toolkit

相关问题