安装Cuda9.0 + CUDNN + Tensorflow

匿名 (未验证) 提交于 2019-12-03 00:36:02

Ubuntu 17.10 + Cuda9.0 + CUDNN + Tensorflow最正确姿势排坑

     博主之前一直使用16.04与win10双系统,但是由于当初安装系统时候引导安装的有点问题,导致ubuntu使用起来一直有些毛病,搞了好久也没搞好,索性就想到干脆重新把系统装一下。作为一个爱尝鲜的用户,使用了这么长时间平平淡淡的长期稳定支持版,还是想要换换口味试试最新的17.10版本,不过鉴于长期支持版的18版本再过不久就会放出来了,估计17.10的寿命和用户数量也不会太多了,也正是这个原因导致网络上相关的教程太少,而且坑非常多(可能是时间原因,当时的教程对现在的驱动和cuda版本不适用了),尤其是CUDA的安装,一不小心就会导致开不了机,在折腾了两天历经万难,终于自己摸索出了一套方法解决了问题,所以写一点东西,给可能需要的人,博主自己也是小菜鸟,就是分享分享自己遇到的坑,基本纯手打了一下午,难免有小差错,有什么不对的地方欢迎大佬们指正。

PS:博主显卡1060,应该10系显卡都没有问题,其他没有测试过,不过应该没有问题,如果有的话欢迎交流分享经验

 一、Ubuntu17.10安装

这个就不展开讲了,网上教程太多,注意分区的时候系统引导就好了,不要和windows装到一起了,这样的话相当于是把Ubuntu装成了win系统下的一个软件,速度会减慢很多,并且会出现很多问题

进入系统,眼前一亮,有中从XP到win10的感觉,实在太漂亮了,17.10从Unity换成Gnome后,界面的流畅度和点击感都有质的提升,哈哈虽然和本文核心内容关系不大,但是还是放两张截图,看到这么漂亮的界面就感觉回不去16.04了


当然作为操作系统,实用性和兼容性才是首位的,既然选择了这样的最新版本,那就要做好面临许多BUG却无法解决的准备了

二、Nvidia驱动以及Cuda9.0的安装

因为Cuda8.0并不支持17版本的原因,所以这里只能安装Cuda9.0(网上安装8.0的教程其实里面也全是安装的9.0),目前官网最新的cuda版本已经是9.1了,但是我安装的时候发现9.1老是出错,最后还是选择了9.0版本

首先应该安装显卡驱动,这里有很多坑,有些博文里面说直接安装nvidia官网的cuda,会自动帮你安装显卡驱动,但是我试过之后发现每次安装之后显卡驱动都是387版本的,然后重启后就开不了机(界面闪烁,显示dev/sda:clean,xxxxx/xxxxx files),必须ALT+F2进入命令行模式执行sudo apt-get purge mvidia* 删除显卡驱动显卡以后才可以正确开机,具体原因我不知道是为什么,可能网上的教程装cuda的时候,还没有这么高版本的显卡驱动,所以那时候没问题,现在却出现了问题,所以分享我自己的方法,主要是装384版本的驱动,亲测没有问题,首先打开“软件与更新”(默认不在左侧的Launcher上,需要在应用里搜索),先取消勾选默认的从光驱安装

有如下两种方法安装驱动:

第一种(速度慢):

添加第三方驱动源:

[plain] view plain copy
  1. sudo add-apt-repository ppa:graphics-drivers/ppa  
  2. sudo apt update  

然后安装384版本的驱动(这一步国内网特别慢,会装很久):

[plain] view plain copy
  1. sudo apt install nvidia-384 nvidia-384-dev  

安装完以后应该就好了,终端输入nvidia-smi查看显卡状态,有可能会显示couldn't communicate with the NVIDIA driver,一般重启之后可解决问题

第二种(推荐):

在附加驱动中直接更改成384版本的驱动,速度很快,同样变更后重启

驱动安装成功以后开始安装cuda9.0,这里不使用官方提供的deb文件来安装,因为我试过官网的deb安装后,发现会一同安装显卡驱动(最新的即387版本),这就导致了开不了机(原因未知)

这里注意一个问题,由于17.10的默认gcc版本是7.2(可通过gcc --version来查看),而cuda只支持7以下的gcc/g++版本,所以要先对gcc/g++进行降级,至于降到哪个版本,我选择了5.4,因为16.04好像用的是用的这个版本,相对来说兼容性比较好

首先安装gcc-5

[plain] view plain copy
  1. sudo apt-get install gcc-5 gcc-5-multilib g++-5 g++-5-multilib  

安装之后输入gcc --version发现还是7.2版本,输入:

[plain] view plain copy
  1. sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40   
  2.   
  3. sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50  
  4.   
  5. sudo update-alternatives --config gcc  

会看到如下三个候选项用于替换gcc:

想用哪个gcc直接输入编号切换就好了

接下来同样要设置一下g++版本(和gcc保持一致)

[plain] view plain copy
  1. sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50   
  2.   
  3. sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40  
  4.   
  5. sudo update-alternatives --config g++  

这样的话就成功了,查看一下gcc版本发现已经是5.4版本了,可以开始安装cuda了,先安装一些相关的包:

[plain] view plain copy
  1. sudo apt-get install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev  

先下载文件(速度不慢),然后安装:

[plain] view plain copy
  1. wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run  
[plain] view plain copy
  1. chmod +x cuda_9.0.176_384.81_linux-run   
  2. sudo ./cuda_9.0.176_384.81_linux-run --override  

安装时候出现以下几个选择,一定要注意第二个选项要选择n,否则会重新安装驱动:

[plain] view plain copy
  1. You are attempting to install on an unsupported configuration. Do you wish to continue?  
  2. y  
  3. Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?  
  4. n  
  5. Install the CUDA 9.0 Toolkit?  
  6. y  
  7. Enter Toolkit Location  
  8. [default location]  
  9. Do you want to install a symbolic link at /usr/local/cuda?  
  10. y  
  11. Install the CUDA 9.0 Samples?  
  12. y  
  13. Enter CUDA Samples Location  
  14. [default location]  

一段时间的等待后就成功安装了

可以用Samples试一下是否安装成功

[plain] view plain copy
  1. cd ~/NVIDIA_CUDA-9.0_Samples/5_Simulations/smokeParticles  
  2. make  
  3. ../../bin/x86_64/linux/release/smokeParticles   

出现烟雾的图像就算是安装成功了,可以输入nvcc --version查看一下cuda的版本

三、cuDNN安装

这里选择安装cuDNN6.0版本(注意tensorflow1.3版本以上才支持6.0)

[plain] view plain copy
  1. wget http://developer.download.nvidia.com/compute/redist/cudnn/v6.0/cudnn-8.0-linux-x64-v6.0.tgz  
  2.   
  3. tar -xzvf cudnn-8.0-linux-x64-v7.tgz  
  4. sudo cp cuda/include/cudnn.h /usr/local/cuda/include  
  5. sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64  
  6. sudo chmod a+r /usr/local/cuda/include/cudnn.h  
  7. sudo chmod a+r /usr/local/cuda/lib64/libcudnn*  

然后把lib64文件夹添加到环境变量:

[plain] view plain copy
  1. cd ~  
  2. sudo vim .bashrc  

在文档最后一行加入:

[plain] view plain copy
  1. export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH  

保存后

[plain] view plain copy
  1. source .bashrc  

这样cuDNN6.0就全部安装完成了,对系统的配置基本就完成了

四、Anaconda安装及tensorflow的配置

这个部分就没有多大的区别和难度了,和16.04版本的安装方法无异,从官网下载anaconda创建一个tensorflow环境就OK了,现在的Anaconda安装gpu版本的tensorflow的时候只需要一条指令就可以了:

[plain] view plain copy
  1. conda install tensorflow-gpu  

会自动帮你把相关的依赖包都装好,不需要使用过去网上复杂的PIP安装方法了,当然这条指令默认装的是1.3版本的tensorflow,比较稳定,使用起来也发现没有什么问题,但是现在tensorflow已经更新到1.7了,作为爱尝鲜爱折腾的人当然要体验下最新的版本的啦

首先查看conda包含的tensorflow版本,

[plain] view plain copy
  1. anaconda search -t conda tensorflow  

可以看到有很多版本的tensorflow,找到其中1.7版本的,记住user和package名字使用

[plain] view plain copy
  1. anaconda show <USER/PACKAGE>  
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!