显卡驱动, CUDA, CUDNN, Tensorflow的安装

07 July 2018

显卡驱动,CUDA,cuDNN,TensorFlow等软件在Ubuntu的安装都有好几种选择:

系统的介绍所有按照方式较为繁琐,在这里我们采取相对简单的方式,以尽可能简练的语言来介绍安安装环境的过程。好了,开启我们的安装之旅。

在开始之前先声明一下,有些显卡是不需要单独装驱动的,比如Tesla k40,安装cuda时自带驱动;有些显卡是需要装驱动的,如titan black系列。所以,这里以titan black为例介绍安装的流程。

  • 安装显卡驱动
  • 安装CUDA
  • 安装cuDNN
  • 安装TensorFlow

安装显卡驱动,以titan black为例

  1. 确认你有一个支持CUDA的GPU.

    $ lspci | grep -i nvidia

    如果它在http://developer.nvidia.com/cuda-gpus列表里,则说明配置有支持GPU的CUDA,可继续第2步;若没有显示出我们的GPU信息,有可能是GPU没有插好或者没有更新PCI hardware database.

  2. 下载cuda驱动,链接地址,我们选择的设置如下图,由于没有Ubuntu 16.04的版本,所以我们选择了Linux 64bit的版本,事实证明,可以安装成功。

  3. 删除原有驱动

    sudo apt-get remove --purge nvidia*

  4. 禁用nouveau驱动

    编辑/etc/modprobe.d/blacklist-nouveau.conf文件,添加以下内容:

     blacklist nouveau  
     blacklist lbm-nouveau  
     options nouveau modeset=0  
     alias nouveau off  
     alias lbm-nouveau off  
    

    然后保存,关闭nouveau:

    echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

    注:系统里没有blacklist-nouveau.conf,所以创建了该文件。或许添加到blacklist.conf文件里也可以,这里没有尝试。

  5. 重启

    update-initramfs -u  
    sudo reboot 
    
  6. 获取Kernel source:

    apt-get install linux-source  
    apt-get install linux-headers-x.x.x-x-generic 
    

    x.x.x-x需要替换成具体的版本信息,该信息可在apt-get install linux-source执行后的提示信息中查找。

  7. 安装Nvidia驱动

sudo sh ./NVIDIA-Linux-x86_64-390.48.run 注: 1. 安装过程中会弹出一些框,让你选择yes or no,这个具体问题记不清了,根据实际情况来做选择。 2. sudo sh ./NVIDIA-Linux-x86_64-390.48.run –no-opengl-files:表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为”login loop”或者”stuck in login”;不加-no-opengl-files也可以安装成功,也可以在客户端连上服务器,但会一直卡在登录界面。
  1. 挂载Nvidia驱动

    modprobe nvidia

  2. 检查驱动是否安装成功

    nvidia-smi

    如果输出以下提示,则表明安装成功。

提示:

  1. 安装过程中可能会提示关闭uefi,然后关闭在bios里关闭就行了;可能会让关闭桌面,执行以下指令:

    sudo service lightdm stop,

    装好驱动之后,可以重新打开: sudo service lightdm start

  2. 安装显卡驱动的过程是个烦琐容易出错的过程,就算是按照教程来做也很难一次成功,所以如果失败了,就删除刚刚安装的驱动重新来过,多尝试.
  3. 网上的教程有很多,大都是大同小异,所以上面的过程仅仅是参考,有些步骤或许是多余的

CUDA在Ubuntu的安装

CUDA安装之前的准备
  1. 确认你有一个支持CUDA的GPU.

    $ lspci | grep -i nvidia

    如果它在http://developer.nvidia.com/cuda-gpus列表里,则说明配置有支持GPU的CUDA,可继续第2步;若没有显示出我们的GPU信息,有可能是GPU没有插好或者没有更新PCI hardware database.

  2. 确认你有一个支持的Linux版本

    $ uname -m && cat /etc/*release

    如果得到类似于下面的输出,则可进行第3步;

     x86_64
     Red Hat Enterprise Linux Workstation release 6.0 (Santiago)
    

    上面显示的Red Hat系统,如果是Ubuntu系统,则显示Ubuntu的信息;此步骤一般不会出现问题。

  3. 确认系统安装了gcc

    gcc --version

    若正常输出,则进行下一步; 否则,安装gcc,若gcc版本低于CUDA需求的版本,则在/etc/apt/source.list添加以下内容:

     deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
     deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
     deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
     deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
     deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
     deb http://mirrors.aliyun.com/ubuntu/ xenial universe
     deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
     deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
     deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
     deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
     deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
     deb http://archive.canonical.com/ubuntu xenial partner
     deb-src http://archive.canonical.com/ubuntu xenial partner
     deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
     deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
     deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
     deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
    
  4. 确认系统安装了Kernel Headers和Development Packages.

    $ sudo apt-get install linux-headers-$(uname -r)

  5. 下载合适的CUDA版本

    这个要注意,版本的选择很重要.

    • 如果打算安装Tensorflow < 1.5,请选择CUDA8.0,下载地址;
    • 如果选择安装安装Tensorflow >= 1.5,请选择安装CUDA9.0,下载地址.

    因为最新的tensorflow是1.7,所以我们下载cuda9.0.

    进入到官网,选择配置如下图:

    下载下面的三个文件和Installer Checksums(<下面的file>):

    $ md5sum <file>

  6. 解决安装冲突

    如果是新系统或者之前没有安装过CUDA,则忽略此步骤;

    否则,参阅下面表格:

    若和以前的版本存在冲突,则

    • run $ sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
    • RPM/Deb $ sudo apt-get --purge remove <package_name>
CUDA的安装
$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb

# 另外两个.deb文件可选择性安装

$ sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub

$ sudo apt-get update

$ sudo apt-get install cuda
CUDA安装之后的路径设置及验证CUDA是否安装成功
  • 把路径加入Path变量:

    $ export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}

  • 验证是否安装成功:

    1. 安装例子

      $ cuda-install-samples-9.1.sh <dir>

    2. 编译

       cd NVIDIA_CUDA-9.1_Samples
       make
      
    3. 运行

       cd 
       ./deveice
      

      若出现以下界面,则表示安装成功。

到此,我们的CUDA安装成功,重头戏已经完成。

两条查询指令:

$ cat /proc/driver/nvidia/version #驱动信息
$ nvidia-smi #GPU信息

cuDNN在Ubuntu的安装

  1. 下载CUDA对应版本的cuDNN, CUDA9.0-cuDNN7.0,下载时需要注册;
  2. 选择了如下图的版本,下载Ubuntu16.04对应的三个.deb文件.

  3. 安装cuDNN

     sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
     sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb
     sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb
    
  4. 安装成功的确认

     $cp -r /usr/src/cudnn_samples_v7/ ./
     $ cd $HOME/cudnn_samples_v7/mnistCUDNN
     $make clean && make
     $ ./mnistCUDNN
    

    若出现Test passed!,则表示安装成功。

到此,cuDNN也安装好了。

Tensorflow在Ubuntu的安装

安装 ibcupti-dev library
$ sudo apt-get install cuda-command-line-tools
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}/usr/local/cuda/extras/CUPTI/lib64
安装pip
$ sudo apt-get install python-pip python-dev   # for Python 2.7
$ sudo apt-get install python3-pip python3-dev # for Python 3.n
安装Tensorflow
$ pip install tensorflow      # Python 2.7; CPU support (no GPU support)
$ pip3 install tensorflow     # Python 3.n; CPU support (no GPU support)
$ pip install tensorflow-gpu  # Python 2.7;  GPU support
$ pip3 install tensorflow-gpu # Python 3.n; GPU support 
若上一步安装失败了,或者安装特别慢,请选择以下安装方式:
$ sudo pip  install --upgrade tfBinaryURL   # Python 2.7
$ sudo pip3 install --upgrade tfBinaryURL   # Python 3.n 

tfBinaryURL见链接

确认Tensorflow是否安装成功

执行下面的程序

# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

若输出Hello, TensorFlow!, 则表示安装成功。

卸载Tensorflow
$ sudo pip uninstall tensorflow  # for Python 2.7
$ sudo pip3 uninstall tensorflow # for Python 3.n