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
比如上面,可以看到我的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更新
已按照最新方法暂时解决了这个问题。