显卡驱动及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 
原文地址:https://www.cnblogs.com/litchi99/p/13504319.html