Ubuntu16重装显卡驱动并配置CUDA9.0、cuDnn、tensorflow1.12环境

其实之前很早就在Ubuntu上配置过tensorflow1.10的环境了,平时用也没啥问题,后来要看tensorflow的object detection模块,需要升级到tensorflow1.12版本以上。想着直接在原来的环境中直接使用命令pip install tensorflow-gpu==1.12就可以了,确实这样是可以安装好tensorflow,可以运行object detection demo的时候直接就报错了,大体意思就是 CUDA Driver Version 和CUDA Runtime Version不一致适合导致的。网上给出的方法主要是两种,一种是升级驱动,一种是降低tensorflow的版本,在这里我只能使用第一种了。所以就卸载原来的显卡驱动,然后安装新的显卡驱动程序。

1 卸载原来的驱动和CUDA

1.1 卸载原来的显卡驱动
  1. 在卸载之前的先关闭图形界面的显示,使用Ctrl+Alt+F1进入命令行模式,然后输入命令sudo service lightdm stop关闭。(开启为:sudo serviece lightdm start)
  2. 输入sudo apt-get purge nvidia*卸载掉原来的驱动,更多的卸载方式请[参考]((https://blog.csdn.net/ezhchai/article/details/80536949)
  3. 重启系统,sudo reboot重启后会自动开启图形界面的显示。
1.2 卸载原来版本的CUDA
  1. 输入命令sudo /usr/local/cuda-9.0/bin/uninstall_cuda-9.0.pl,这里的cuda-9.0是CUDA的版本号,我自己是9.0的,如果不知道自己CUDA的版本号,可以在终端使用nvcc -V命令查看。
  2. 可能存在残留文件,使用sudo rm -r /usr/local/cuda-9.0。更多请参考
  3. 如果彻底不用了,需要清除环境变量中对应的设置,这里我就不清除了,因为还要安装。

2 显卡驱动的安装

我的显卡为NVIDIA 1050Ti,显卡驱动的安装方式有三种,其中主流的有两种,一种是ppa源安装,一种是通过runfile的形式安装;通过runfile形式安装主要是可以解决通过ppa源安装后不断弹出登录界面的情况,而ppa源安装方式比较简单,而且是比较安全稳定的安装方式。

  1. runfile的安装方式
    我之前使用了这种方式安装,在所有步骤都进行完了以后,在终端输入nvidia-smi可以弹出显卡的信息,然后输入nvidia-setting命令时,却报错了,无奈自己很菜啊,一直没有找到解决的方法,之后就换成了ppa源的方式安装了。如果要使用runfile的方式安装请参考
  2. ppa源安装(本文使用)
2.1 禁用nouveau驱动(如果之前已经禁用了,跳过这步)
  1. 修改blacklist.conf文件的属性,使用sudo chmod 666 /etc/modprobe.d/blacklist.conf
  2. 使用gedit打开文件,sudo gedit /etc/modprobe.d/blacklist.conf
  3. 在文件末尾增加如下命令:
blacklist vga16fb 
blacklist nouveau 
blacklist rivafb 
blacklist rivatv 
blacklist nvidiafb
  1. 保存文件退出并将文件blacklist.conf属性还原,sudo chmod 644 /etc/modprobe.d/blacklist.conf
  2. 更新内核,sudo update-initramfs -u
  3. 重启后确认nouveau是否已经被屏蔽掉,使用lsmod | grep nouveau查看,如果什么都没有,则禁用nouveau驱动成功;如果有,那么请重复上面的操作。
2.2 驱动安装(ppa源安装)
  1. 添加ppa源
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
  1. 使用Ctrl+Alt+F1进入命令行模式,并使用命令sudo service lightdm stop关闭图形界面的显示。
  2. 找到合适的驱动,输入ubuntu-drivers devices命令后,会弹出当前适合你显卡的驱动,一般选择recommend那个,我这里使用的是nvidia-396
  3. 驱动安装,sudo apt-get install nvidia-396,安装速度跟网速有关。
  4. 重启系统,sudo reboot
  5. 输入nvidia-smi查看显卡信息,输入nvidia-settings打开显卡设置;如果都成功则安装成功。

3 CUDA的安装和cuDNN配置

3.1 CUDA的安装

在Ubuntu上CUDA的安装主要有两种方式,一种是使用.deb文件安装,一种是使用runfile的形式安装。使用runfile的安装方式可以选择不安装CUDA包中推荐的显卡驱动,而使用.deb文件则会默认安装其自带的显卡驱动,这样的话之前的工作就白做了。

  1. 首先去官网下载对应的CUDA版本,我这里使用的是CUDA9.0,因为tensorflow对CUDA9.0的支持更好。
  2. 最好将下载的文件放置在home目录下,方便安装。
  3. 重启电脑,按Ctrl + Alt + F1进入命令行,并使用命令sudo service lightdm stop关闭图形界面的显示。
  4. 安装CUDA,sudo sh cuda_9.0.176_384.81_linux.run,在安装过程中,除了选择driver安装那一项为n,其余均选择y或则accept
  5. sudo reboot重启电脑,当然也可以不用重启,使用sudo service lightdm start开启图形界面的显示。
  6. 配置环境变量,运行如下命令打开profile文件,sudo gedit /etc/profile 
    在文件末尾添加:
export  PATH=/usr/local/cuda-9.0/bin:$PATH
export  LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH 
  1. 输入,sudo source /etc/profile使其生效。
  2. 添加CUDA-lib的路径,打开文件sudo vi /etc/ld.so.conf.d/cuda.conf,在文件末尾添加/usr/local/cuda/lib64,进入底行模式(ESC键)后如果wq保存退出;输入命令sudo ldconfig使其生效。
  3. 检测环境变量是否添加成功,输入nvcc -V或者nvcc -version,查看CUDA信息,如下图显示则表示配置成功。
    图1
3.2 编译CUDA Samples

为啥要编译呢,究竟安装成功没有,编译一把就知道了。到CUDA samples的目录下打开终端,输入make -j4,4表示计算机是4核,8用8核,我这里电脑是4核的,所以写了4,这样可以编译快一点。
如果编译成功,会出现Finished building CUDA samples。输入以下命令验证安装:

  1. 编译后生成的文件在/home/lxxx/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release目录下,在终端输入cd /home/lxxx/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release,其中xxx是你的计算机名,然后输入./deviceQuery,出现Result = PASS代表成功,Result = FAIL表示失败。
  2. 输入./bandwidthTest检查一下系统和CUDA-Capable device的连接情况,同样出现Result = PASS代表成功,Result = FAIL表示失败。
    在编译过程中可能遇到的问题:
  3. 编译一开始就报错,可能是gcc的问题。
  4. 在编译过程中,出现not found lgut等类似错误,表明确实某个库,或则软连接,具体解决方法参考参考
3.3 cuDNN的配置
  1. 官网下载需要的cuDNN版本,我这里下载的是7.3forCUDA9.0的二进制文件。
    图2
  2. 解压文件,会在当前目录下生成一个cuda的文件夹,在当前目录下进入终端。
  3. 替换CUDA安装时的文件
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
  1. 更改文件权限,
sudo chmod a+r /usr/local/cuda/include/cudnn.h 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
  1. 更新软连接(这步非常重要,否则可能会在运行tensorflow的时候出现错误),这里需要在/usr/local/cuda/lib64目录下输入如下命令:
sudo ln -sf libcudnn.so.7.3.0 libcudnn.so.7  
sudo ln -sf libcudnn.so.7 libcudnn.so  
sudo ldconfig  
  1. 查看cuDNN的版本,sudo cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A2。如下图所示,我这里是7.3.0:
    图3
    大功告成,CUDA和cuDNN的配置到这里就结束了。
    上述配置过程参考1参考2

4 Tensorflow的安装

我这里使用的anaconda下创建的tensorlfow虚拟环境来安装的,具体的安装过程,网上有很多的博客,我这里就不列举了,这里指说明我遇到的错误。在刚开始的时候,我使用pip install tensorlfow-gpu==1.10来安装1.10版本的tensorflow,后来要使用object detection模块,就升级了tensorflow的版本,手贱的我,使用了conda install tensorflow-gpu==1.12的命令,我以为会直接覆盖掉,后来证明我想多了,在同一个虚拟环境下共存了两个tensorflow的版本,一旦利用gpu跑网络的时候就出问题,系统不知道去调用那个tensorflow。另外在使用conda命令安装时,会默认给你安装cuda的环境,是不是贼坑,这样就可能让你的显卡驱动版本和CUDA的版本不合适了。所以建议在使用anaconda安装tensorlfow时,最好还是使用pip命令安装。这里给出几个查看tensorflow环境下安装tensorlfow具体方式和版本的命令。

  1. conda list tensorflow,会列出此环境下的tensorflow。如下图所示,我这里显示的只有pip命令安装的tensorflow-gpu.
    图4
  2. conda list cudnn,会列出anaconda在此环境下安装的CUDA toolkit。我这里显示啥都没有,就表示没有用conda来安装了CUDA。
    图5
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值