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上,需要在应用里搜索),先取消勾选默认的从光驱安装

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

第一种(速度慢):

添加第三方驱动源:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

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

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

sudo apt-get install gcc-5 gcc-5-multilib g++-5 g++-5-multilib

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

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40 

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50

sudo update-alternatives --config gcc

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

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

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

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50 

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40

sudo update-alternatives --config g++

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

sudo apt-get install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev

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

wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run
chmod +x cuda_9.0.176_384.81_linux-run 
sudo ./cuda_9.0.176_384.81_linux-run --override

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

You are attempting to install on an unsupported configuration. Do you wish to continue?
y
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
n
Install the CUDA 9.0 Toolkit?
y
Enter Toolkit Location
[default location]
Do you want to install a symbolic link at /usr/local/cuda?
y
Install the CUDA 9.0 Samples?
y
Enter CUDA Samples Location
[default location]

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

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

cd ~/NVIDIA_CUDA-9.0_Samples/5_Simulations/smokeParticles
make
../../bin/x86_64/linux/release/smokeParticles 

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

三、cuDNN安装

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

wget http://developer.download.nvidia.com/compute/redist/cudnn/v6.0/cudnn-8.0-linux-x64-v6.0.tgz

tar -xzvf cudnn-8.0-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

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

cd ~
sudo vim .bashrc

在文档最后一行加入:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

保存后

 source .bashrc

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

四、Anaconda安装及tensorflow的配置

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

conda install tensorflow-gpu

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

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

anaconda search -t conda tensorflow

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

anaconda show <USER/PACKAGE>
确认要下载的版本就好了,速度会有点慢,安装完以后发现import tensorflow报错,经检查发现如今的1.7版本只支持cuDNN7以上,而我们刚才安装的是6.0,但是cuDNN版本太高以后会对其他框架(如Theano)兼容性有点影响,还是等今后时间多点再瞎折腾吧哈哈,先用着稳定的版本好了,等哪天时间多一点再试一下换cuDNN让1.7跑起来

至此就算是Ubuntu 17.10这个短暂的版本深度学习框架配置的基本配置了,马上出18长期支持版了,估计这个版本用的人也不会太多,网上资料这么少,也算是写给少部分爱折腾的人看看吧哈哈!如果有什么不对的欢迎指正,第一次写博没什么经验,自己也是小菜鸟,就是分享分享自己遇到的坑,希望后来的朋友能少踩点坑!










阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页