电脑基础 · 2023年3月23日

Could not load library libcudnn_cnn_infer.so.8.错误解决

Could not load library libcudnn_cnn_infer.so.8.

事件起因与mtd device must be supplied错误

用于深度学习的Ubuntu主机重启后无法正常开机报错:

mtd device must be supplied

查找资料,在StackOverflow上找到一个可行的方法:

sudo apt install nvidia-driver-515
reboot

这种解决方法需要能够进入bash,如果运气不好的话这一步实际上bash都进不去,遇到这个问题的时候我就无法通过ctrl + alt + F2进入tty2。
还好之前参照一位大佬的文章配置了ssh,我的ssh还能正常访问Ubuntu。

ssh连接后通过执行上述命令成功重启开机了。

重启后能够正常进入桌面了。

上述命令相当于重新安装了驱动,于是我就想看看之前的深度学习小样例能不能跑,样例来自这里,参照大佬的做法进入了conda的虚拟环境,但是执行时报错

(python_310-pytorch_1.13.0)
# ubuntu @ ubun in ~/work_space/condaTest [16:19:11]
$ py mnist_train.py
Using device: cuda
Could not load library libcudnn_cnn_infer.so.8. Error: libcuda.so: cannot open shared object file: No such file or directory
[1]    4627 IOT instruction (core dumped)  python3 mnist_train.py

问题解决

比较常规的做法导入该文件所在文件夹的路径,类似于windows配置环境,但是我尝试过没有成功,于是用了下面的方法解决,如果导入路径能解决这个问题的话可以不用像我这里这么麻烦。

最新解决方法:

sudo apt install nvidia-cudnn

参考了此处,尝试用上面这种方式安装了cudnn,最终可能是因此解决了这个问题(目前存疑,不过我最后的操作确实是安装这个),安装这个需要比较久,而且安装这个后驱动可能需要重新安装。

sudo apt install nvidia-driver-515

以下内容似乎失效了,可以只看上面这个解答。

最终解决方法(2022/11/27发现下述方法失效):
卸载cuda和cudnn,再重新安装。

卸载我参考的这篇文章,因为驱动已经是重新安装的了,所以这里我没有再卸载驱动。

卸载cuda与cudnn

以下cuda-X.Y代表你安装的cuda版本,cuda版本可通过以下命令查看:

$ nvcc -V

Could not load library libcudnn_cnn_infer.so.8.错误解决
比如上面,可以看到我的cuda版本是11.7,于是下面的cuda-X.Y我用的是cuda-11.7。

卸载cuda:

$ cd /usr/local/cuda-X.Y/bin
$ sudo ./cuda-uninstaller

卸载cudnn:

$ sudo rm -rf /usr/local/cuda-X.Y

安装cuda与cudnn

参考这里就完事了,大佬真的强。

为什么不导入路径?

是的,我最开始就想这么做,但是export不管怎么设置,怎么source更新配置文件都没办法找到那个库的路径,所以最后我放弃导入路径这种做法了。

当然,导入路径应该是最常规的一种做法,先尝试简单一点的方法多有裨益。


2022/11/27更新
主机重启后又出现了这个问题,重新安装cuda和cudnn这次也没有解决。。


2022/11/29更新
已按照最新方法暂时解决了这个问题。