| 分类 | 详情 |
|---|---|
| 问题描述 | 执行nvidia-smi命令报【Failed to initialize NVML: Driver/library version mismatch】 |
| 问题原因 | 系统自动升级过显卡驱动,在显卡驱动支持的系统内核版本相同的情况下,某些应用占用显卡,导致无法更新驱动的内核模块,进而无法使用 |
| 问题影响 | 使用显卡的应用,无法进行运算处理 |
| 排查过程 | 提示:在百度上查询该错误,基本上都是驱动版本和内核版本不一致导致的,并不完全准确,但排查的思路可取 这篇文章还不错:【nvidia】1.命令行方式安装nvidia显卡驱动_牛andmore牛的博客-CSDN博客_命令行安装显卡驱动 # 1.查看当前显卡当前使用的驱动版本 root@ops-01:~# cat /proc/driver/nvidia/version NVRM version: NVIDIA UNIX x86_64 Kernel Module 470.103.01 Thu Jan 6 12:10:04 UTC 2022 GCC version: gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) 结论:当前使用的是470.103.01版本的驱动 # 2.查看显卡驱动是否更新 root@ops-01:~# cat /var/log/dpkg.log | grep nvidia 2022-05-19 06:15:26 upgrade nvidia-driver-470:amd64 470.103.01-0ubuntu0.20.04.1 470.129.06-0ubuntu0.20.04.1 结论:升级驱动70.103.01到470.129.06,升级前后的内核版本都是0ubuntu0.20.04.1 # 3.查看系统的内核版本 root@ops-01:~# uname -a Linux ops-01 5.13.0-41-generic #46~20.04.1-Ubuntu SMP Wed Apr 20 13:16:21 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux 结论:系统使用的内核是20.04.1-Ubuntu,和显卡驱动支持的内核版本一致 到这里基本上就能确认上述的问题原因了。 辅助排查的命令: # 查看系统的nvidia驱动版本 root@ops-01:~# ubuntu-drivers devices|grep nvidia-driver WARNING:root:_pkg_get_support nvidia-driver-510-server: package has invalid Support PBheader, cannot determine support level WARNING:root:_pkg_get_support nvidia-driver-510: package has invalid Support PBheader, cannot determine support level driver : nvidia-driver-470 - distro non-free recommended driver : nvidia-driver-510-server - distro non-free driver : nvidia-driver-470-server - distro non-free driver : nvidia-driver-510 - distro non-free # 查看驱动的完整版本号 root@ops-01:/home/ubuntu# aptitude show nvidia-driver-470-server 软件包:nvidia-driver-470-server 版本号:470.129.06-0ubuntu0.20.04.1 # 查看驱动程序支持的内核版本 root@ops-01: dpkg --list | grep nvidia-* ii libnvidia-cfg1-470:amd64 470.129.06-0ubuntu0.20.04.1 amd64 NVIDIA binary OpenGL/GLX configuration library ii libnvidia-common-450 460.91.03-0ubuntu0.20.04.1 all Transitional package for libnvidia-common-460 ii libnvidia-common-460 470.129.06-0ubuntu0.20.04.1 all Transitional package for libnvidia-common-470 ii libnvidia-common-470 470.129.06-0ubuntu0.20.04.1 all Shared files used by the NVIDIA libraries Ubuntu常用包管理命令:Ubuntu包管理工具整理 - weaming - 博客园 |
| 解决办法 | 方法一:查看所有使用显卡的应用,并停掉,然后再卸载内核模块,重新进行加载,比较麻烦,卸载和加载模块可参考:Failed to initialize NVML: Driver/library version mismatch. # 1.查看哪些应用占用显卡 root@ops-01:~# fuser -v /dev/nvidia* USER PID ACCESS COMMAND /dev/nvidia0: root 1096 F...m Xorg gdm 1330 F...m gnome-shell root 5155 F...m tensorboard root 15319 F...m python /dev/nvidia1: root 1096 F...m Xorg gdm 1330 F...m gnome-shell root 5155 F...m tensorboard root 15319 F...m python /dev/nvidiactl: root 1096 F...m Xorg gdm 1330 F...m gnome-shell root 5155 F.... tensorboard root 15319 F...m python /dev/nvidia-modeset: root 1096 F.... Xorg gdm 1330 F.... gnome-shell /dev/nvidia-uvm: root 5155 F.... tensorboard root 15319 F...m python # 2.查看显卡的内核模块 root@ops-01:~# lsmod |grep nvidia nvidia_uvm 1036288 2 nvidia_drm 61440 6 nvidia_modeset 1200128 5 nvidia_drm nvidia 35336192 299 nvidia_uvm,nvidia_modeset drm_kms_helper 253952 1 nvidia_drm drm 557056 10 drm_kms_helper,nvidia,nvidia_drm 方法二:重启系统,简单直接 |
| 优化项 | 1.禁用显卡自动更新:apt-mark hold nvidia-driver-470 2.如果是显卡和内核模块不匹配,就需要先卸载当前驱动,再重新安装,重启系统,可参考:Ubuntu中Failed to initialize NVML: Driver/library version mismatch问题的解决 - 灰信网(软件开发博客聚合) |



