显卡驱动及cuda版本错误导致的tensorflow无法调用问题的解决办法
一、显卡驱动相关问题集合
1.1 卸载ubnutu16.04 cuda10.1
在 /usr/local/cuda-10.1/bin 中找到cuda-uninstaller,然后执行:sudo ./cuda-uninstaller
,然后执行如下命令:sudo rm -rf /usr/local/cuda-10.1/
,以清除残留文件。
PS:查看cuda是否已删除干净的命令nvcc -V
;此外,cudnn会被一并删除,查
1.2 安装cuda
在官网上下载对应run版本的cuda和cudnn,一般用9.0或者10.1,然后在.run文件的目录下执行:chmod +x cuda_9.0.130_410.48_linux.run
,上述代码的目的是赋予权限,然后再执行:./cuda_9.0.130_410.48_linux.run
开始安装,注意安装时不选中显卡驱动(此处安装可能会出现编译错误)。安装完毕后,重启teminal并输入nvcc -V
测试是否安装成功。
1.3 安装cudnn
下载后进行解压:tar -zxvf cudnn-9.0-linux-x64-v7.4.2.24.tgz
然后执行如下代码:
cp cuda/lib64/* /usr/local/cuda-9.0/lib64/
cp cuda/include/* /usr/local/cuda-9.0/include/
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*
将cudnn的lib64和include文件复制到cuda的目录,查看cudnn的版本命令如下:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
1.4 cuda的软链接设置(多版本切换)
sudo vim ./bashrc
,打开环境配置文件,然后修改如下信息(目的是去特殊化):
export PATH="$PATH:/usr/local/cuda/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64/"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda/lib64"
此时,已配置好环境,接下来则需要删除和修改软链接:
sudo rm -rf /usr/local/cuda #删除之前创建的软链接
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda #创建新 cuda 的软链接
最后,则成功将cuda9.0链接到cuda
PS:蓝色的文件是链接文件,绿色的文件是源文件,ln -s 源地址 目标地址
1.5 更换显卡驱动
(1)移除原有的驱动:sudo apt-get remove --purge nvidia418
(2)屏蔽自带的nouveau
sudo chmod 666
/etc/modprobe.d/blacklist.conf
sudo gedit /etc/modprobe.d/blacklist.conf
并在文末增加如下行:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
(3)Ctrl+Alt+F1进入命令行模式(Ctrl+Alt+F7退出命令行模式)
如果进入不了命令行模式,则需将/etc/default/grub文件中的GRUB_CMDLINE_LINUX_DEFAULT中的值由quiet splash
改为nomodeset
,并执行update-grub
命令来进行更新
(4)关闭图形系统
sudo service lightdm stop
(5)安装nvidia驱动
sudo apt-get install nvidia-418
,有时候这一步会执行不成功,则需按照如下步骤进行修改:
sudo add-apt-repository ppa:graphics-drivers
sudo apt-get update
sudo apt-cache search nvidia
ubuntu-drivers devices
此时,则可正常执行第(5)步
(6)安装完成后,重启图形系统
sudo service lightdm start
(7)然后重启系统,即可成功重装nvidia系统
1.6 Missing recommended library
原因是缺少相关的依赖库,安装相应库就解决了:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
1.7 更换/切换不同版本的cuDNN
(1) 卸载旧版本的cuDNN:
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
(2)按照正常步骤安装cuDNN
(3)建立软链接(非必要步骤)
sudo chmod +r libcudnn.so.7.5.1
sudo ln -s libcudnn.so.7.5.1 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig