Ubuntu libnvidia计算更新后NVML驱动程序/库不匹配

Ubuntu libnvidia计算更新后NVML驱动程序/库不匹配,ubuntu,cuda,nvidia,apt,Ubuntu,Cuda,Nvidia,Apt,我正在运行Ubuntu18.04,最近(大约一个月)在.deb安装过程中遇到了很多麻烦之后,用runfile安装了CUDA10.2。一切都很好:nvidia smi显示了GPU的统计数据,我能够在GPU上运行我的并行代码。今天我启动了我的机器,软件中心建议进行一些更新……这似乎只是libnvidia-compute-440软件包中的一部分,但我没有太在意,而是安装了所有更新。在那之后,我的CUDA代码不起作用,我尝试了nvidia smi,并得到了一个 初始化NVML失败:驱动程序/库版本不匹配

我正在运行Ubuntu18.04,最近(大约一个月)在.deb安装过程中遇到了很多麻烦之后,用runfile安装了CUDA10.2。一切都很好:nvidia smi显示了GPU的统计数据,我能够在GPU上运行我的并行代码。今天我启动了我的机器,软件中心建议进行一些更新……这似乎只是libnvidia-compute-440软件包中的一部分,但我没有太在意,而是安装了所有更新。在那之后,我的CUDA代码不起作用,我尝试了nvidia smi,并得到了一个

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

我重新启动了系统,但仍然有错误。我花了一下午的时间在谷歌上搜索可能的解决方案,我想我找到了问题的核心:运行
dmesg | tail-4
gives

NVRM: API mismatch: the client has the version 440.59, but
NVRM: this kernel module has the version 440.33.01.  Please
NVRM: make sure that this kernel module and all NVIDIA driver
NVRM: components have the same version.
我现在拥有的
libnvidia-compute-440
软件包的版本确实是440.59,但我的驱动程序版本是440.33.01,正如
dmesg | grep nvidia
(或我尝试过的类似命令)所示(见第三行)

事实上,通过查看
/var/log/apt/history.log
我可以看到libnvidia-compute-440已从
440.33.01-0ubuntu1
更新为
440.59-0ubuntu0.18.04.133.01
。所有这些证据都让我得出结论,我可以尝试返回到该库的早期版本,但是,
apt get install libnvidia-compute-440=440.33.01
(我认为这是正确的语法)给了我
E:libnvidia-compute-440的版本“440.33.01”找不到


我真的希望有一个不意味着卸载CUDA的解决方案存在,因为安装CUDA花了我一个周末的时间,正如我所说,这对我来说是一个很大的困难

更新:已解决

我非常谨慎,担心我会弄乱我的CUDA安装。然而,我鼓起勇气,更新了我的nvidia驱动程序

sudo apt安装nvidia-driver-440

它成功地更新了驱动程序,这些驱动程序现在与libnvidia计算版本相匹配440.59


重新启动后,一切正常,与以前一样。

尝试用dpkg删除更新后的软件包。我也遇到过类似的问题,并且在安装过程中进行了良好的飞行。如果我没有弄错的话,运行文件只复制文件,不注册任何包。由于运行文件的经验不好,我总是坚持使用Deb安装。只要在尝试安装/卸载CUDA之前设置nouveau驱动程序并重新启动电脑,它就可以正常工作。而且,由于库必须匹配特定的驱动程序版本,因此永远不要从更新管理器更新任何内容。至少我是这样做的。为什么投了反对票?有人能解释一下吗?顺便说一句,谢谢@Daniele LEFEVRE的回答,我会尽快尝试“帮助软件更新损坏了我的电脑!”这不是一个真正的主题问题。在ASKUBUTU或英伟达支持论坛上,你会得到更好的服务。非常感谢你的解决方案。我也面临同样的问题,我在这里发布我的解决方案。在我的例子中,NVRM版本是440.100,驱动程序版本是460.32.03。我的驱动程序是通过安装caffe cuda更新的,我没有注意到那个时间,但我从history.log中查看了它。在我的NVRM版本之后,我刚刚使用了
sudo安装nvidia-driver-440
,但是它安装了
450.102
,我不知道为什么它安装了其他版本。无论如何,重新启动我的电脑后,一切都很好。重新安装驱动程序后,我的cuda仍然工作正常。我有一个问题,如何停止nvidia驱动程序更新?
 [   16.462737] nvidia-nvlink: Nvlink Core is being initialized, major device number 237
[   16.463235] nvidia 0000:03:00.0: enabling device (0006 -> 0007)
[   16.785628] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 440.33.01  Tue Nov 12 23:43:11 UTC 2019
[   16.916202] [drm] [nvidia-drm] [GPU ID 0x00000300] Loading driver
[   16.916205] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:03:00.0 on minor 1