nvidia-smi时,Failed to initialize NVML: Driver/library version mismatch
记录一下配置cuda环境时遇到的问题和解决方法,已方便日后查证:
问题
终端输入nvidia-smi时,报如下错误:
Failed to initialize NVML: Driver/library version mismatch
出现这种情况的原因是NVIDIA内核驱动版本和系统驱动不一致。
大多数出现该错误的情况可能是NVIDIA驱动是在低版本的时候安装,由于系统更新,内核版本升级导致NVIDIA无法应用在高内核版本,新版本内核和显卡驱动不匹配,显卡驱动版本太低!
我的情况是在配置低版本的cuda时,不小心降低了显卡驱动的版本,导致其和系统内核版本不一致而报错。为了还原之前的版本,这里我通过重新安装对应版本的显卡驱动来解决这个问题。
安装显卡驱动
这一步的方法参考这篇博客中的方法二,感激不尽!!
第一步:安装显卡驱动PPA
英伟达官方PPA的网址是:https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa,可以查看所有显卡驱动。
lspci | grep NVIDIA #查看电脑上PCIE安装的显卡,理论上不用查,自己的电脑应该都知道
sudo add-apt-repository ppa:graphics-drivers/ppa # 添加显卡安装源
此过程需要花费一点时间,这个是ubuntu官方的用于安装NVIDIA显卡的安装包仓库,可以从这个源下载任何可用的英伟达显卡驱动。中间按回车继续就可以了。(因为写该博客时问题已经解决了,没法子放过程的截图了,具体可以参考链接中的博客)
NVIDIA PPA 被安装到APT package reppository的cache.后更新一下。
sudo apt update
第二步:查找合适的显卡驱动
打开显卡驱动查询网站:
我的显卡时TITAN XP,找到对应的选项点击search查询。
可以看到当前(2022.1.14),适配我显卡的驱动版本号是470.94。验证该显卡驱动版本是否可以初装,可以访问该链接,根据系统类型来查看。
使用下边的命令在ppa中搜索470版本(小数点后号码不用关注)的显卡驱动:
apt search nvidia-470
运气比较好,正好有;如果没有搜到,可以根据上边网页中所有可以获得的显卡驱动版本从高到低搜索使用。
第三步:移除系统上先前安装的显卡驱动
sudo apt purge nvidia*
该指令会把显卡驱动以及所用cuda全部移除,将在显卡驱动不变的情况下,单纯升级cuda,删除以前cuda版本的方法。具体运行结果见参考博客。
第四步:安装显卡驱动
在这一步,参考博客中的命令并没有起作用,经过google后使用如下命令进行安装:
sudo apt install nvidia-driver-470
第五步:重启电脑并验证
sudo reboot
nvidia-smi
lsmod | grep nvidia
nvcc --version
题外话
如果本文中的方法没能解决看到这的博友的问题,可以看下第二篇参考博客中的其他方法。要解决遇到的问题,终归是要弄明白问题出现的原因,才好对症下药,不然就是没头的苍蝇乱撞了。
参考了两位大佬的博客,才找出问题所在,感激不尽!