首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NVML驱动程序/库版本错配

NVML驱动程序/库版本错配
EN

Stack Overflow用户
提问于 2017-03-25 22:47:00
回答 19查看 549.7K关注 0票数 478

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

未能初始化NVML:驱动程序/库版本不匹配

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

在此之后,我从NVIDIA官方页面下载了NVIDIA官方页面,然后简单地:

代码语言:javascript
运行
复制
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我得到:

代码语言:javascript
运行
复制
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)

我正在运行Ubuntu16.04.2LTS (Xenial Xerus)。

内核版本是4.4.0-66通用的.

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2017-03-25 23:06:55

令人惊讶的是,重新启动解决了这个问题(我以为我已经尝试过了)。

注释中的解决方案罗伯特·克罗夫拉也可能对其他人有用,因为它与我第一次解决问题时所做的非常相似。

票数 686
EN

Stack Overflow用户

发布于 2017-07-26 06:33:41

作为埃塔尔,重新启动可以解决这个问题,但是我认为不重新启动的过程会有帮助。

关于中文,请访问我的博客-> 中文版

错误信息

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

告诉我们Nvidia驱动程序内核模块( kmod )有错误的版本,所以我们应该卸载该驱动程序,然后加载正确的kmod版本。

我们怎么能做到呢?

首先,我们应该知道哪些驱动程序是加载的。

代码语言:javascript
运行
复制
lsmod | grep nvidia

你可能会得到

代码语言:javascript
运行
复制
nvidia_uvm            634880  8
nvidia_drm             53248  0
nvidia_modeset        790528  1 nvidia_drm
nvidia              12312576  86 nvidia_modeset,nvidia_uvm

我们的最终目标是卸载nvidia模块,因此我们应该依靠nvidia卸载模块。

代码语言:javascript
运行
复制
sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

然后,卸载nvidia

代码语言:javascript
运行
复制
sudo rmmod nvidia

故障排除

如果您得到像rmmod: ERROR: Module nvidia is in use这样的错误(这表明内核模块正在使用),您应该终止使用kmod的进程:

代码语言:javascript
运行
复制
sudo lsof /dev/nvidia*

然后消灭这些过程,然后继续卸载这些kmod。

测试

确认你成功卸载了那些kmod

代码语言:javascript
运行
复制
lsmod | grep nvidia

你什么都不应该得到。然后确认您可以加载正确的驱动程序:

代码语言:javascript
运行
复制
nvidia-smi

你应该得到正确的输出。

票数 431
EN

Stack Overflow用户

发布于 2019-01-24 15:06:26

我有这个问题,其他的治疗方法都没有用。错误消息是不透明的,但是检查https://en.wikipedia.org/wiki/Dmesg的输出是关键:

代码语言:javascript
运行
复制
[   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。所以我重新编译了我的内核:

代码语言:javascript
运行
复制
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-泛型/内核/驱动程序中。

我建议使用locate命令(默认情况下不安装),而不是每次搜索文件系统。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43022843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档