Ubuntu16.04下GPU环境的搭建


前言

Ubuntu下的GPU环境搭建包括显卡驱动的安装,CUDA的安装以及cudnn的安装配置,下面我将具体介绍N卡的GPU环境配置。

1. 显卡驱动的安装

1.1 官网下载安装

对于N(Nvidia)卡的驱动安装,我们可以在官网搜索最新的适配的驱动,然后手动安装:

  • Step1 进入官网显卡驱动页面搜索合适的显卡驱动并下载:

    1548679790126

    • Step2 添加当前显卡驱动进入黑名单:

      1
      2
      3
      4
      5
      6
      7
      sudo vim /etc/modprobe.d/blacklist.conf 

      blacklist nouveau
      blacklist lbm-nouveau
      options nouveau modeset=0
      alias nouveau off
      alias lbm-nouveau off
    • Step3 禁止nouveau:

      1
      2
      echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
      sudo update-initramfs -u
    • Step4 重启

      1
      sudo reboot
    • Step5 进入字符模式:

      1
      ctrl + alt + F1
    • Step6 输入用户名密码之后,关闭x server:

      1
      2
      sudo service lightdm stop 
      sudo init 3
    • Step7 切换至下载路径,一般默认/home/用户名/Downloads/,执行:

      1
      2
      3
      cd nvidia目录
      chmod 777 NVIDIA-Linux-x86_64-版本号.run
      sudo sh NVIDIA-Linux-x86_64-版本号.run --no-opengl-files
    • Step8 重启电脑

      1
      reboot

1.2 系统自动更新下载

Ubuntu16.04系统自带两个显卡驱动,一个是默认的nouveau驱动,另一个是Nvidia-384显卡驱动,我们可以进入设置-软件与更新-附加驱动可以看到:

1548681018673

选择NVIDIA相应驱动,然后点击Revert即可安装,重启可生效。当然,我们还可以通过命令行安装,如:

1
sudo apt-get install nvidia-384

这两种方式本质都是一样的,都是基于已有软件源进行安装的,为了安装更新的驱动版本,可以更新软件源:

1
2
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

建议在设置中设置默认下载源为中国的软件源。

1.3踩坑指南

  • N卡驱动安装生效需要在BIOS设置Secure Bootfalse

  • 如果安装失败,且无法进入桌面,可以先进入tty界面(ctrl+alt+F1),卸载N卡驱动:

    1
    sudo apt-get remove --purge nvidia*

    如果是通过runfile安装的,则在安装目录执行:

    1
    sh ./NVIDIA-Linux-x86_64-版本号.run --uninstall
  • 输入nvidia-smi或者nvidia-settings,如果有打印信息,则说明安装成功:

    1548682031861

    1548682052228

2.CUDA的安装配置

CUDA是为N卡准备的GPU运算加速库,可以方便我们的GPU计算,一般都自带一个比较旧的显卡驱动,可能跟系统不适配,所以最好不选择安装其自带的显卡驱动,另外,CUDA和显卡驱动也有适配关系:

20181229015209262

2.1 官网下载安装

CUDA官网提供了CUDA的下载安装文件,选择我们想要的版本进行安装即可:

1548681862651

下载提供的所有文件,然后依次安装即可,同样是在下载路径执行:

1
2
3
sudo chmod 777 cuda*.run
sudo sh ./cuda文件1.run
sudo sh ./cuda文件2.run

安装过程注意:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
在安装cuda过程中首先会遇到一大串协议,直接Ctrl+C停止,并输入accept即可跳过
安装过程出现的选项选择方式如下:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n

Do you want to install the OpenGL libraries?
(y)es/(n)o/(q)uit [ default is yes ]: y

Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]:

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y

Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location [ default is /home/dell ]:

最后我们需要配置环境,由于比较懒,直接命令行执行,以cuda8.0为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if [ 0 -eq $(cat /etc/profile | grep -c 'export PATH=/usr/local/cuda-8.0/bin:/usr/local/cuda/bin:$PATH') ] ;then
echo 'export PATH=/usr/local/cuda-8.0/bin:/usr/local/cuda/bin:$PATH' >> /etc/profile
fi

if [ 0 -eq $(cat /etc/profile | grep -c 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda/lib64') ] ;then
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> /etc/profile
fi

if [ 0 -eq $(cat /etc/ld.so.conf.d/cuda.conf | grep -c '/usr/local/cuda-8.0/lib64') ] ;then
echo '/usr/local/cuda-8.0/lib64' >> /etc/ld.so.conf.d/cuda.conf
fi

if [ 0 -eq $(cat /etc/ld.so.conf.d/cuda.conf | grep -c '/usr/local/cuda/lib64') ] ;then
echo '/usr/local/cuda/lib64' >> /etc/ld.so.conf.d/cuda.conf
fi

if [ 0 -eq $(cat ~/.bash_profile | grep -c 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda/lib64') ] ;then
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bash_profile
fi

sudo ldconfig
source /etc/profile
source ~/.bash_profile

终端执行nvcc -V,如果显示cuda信息,则环境配置成功,否则重启电脑重试。

2.2 Conda安装

如果你使用的是anaconda包管理器,可以直接安装下载cuda,可以提前设置下载源:

1
2
3
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

由于conda的环境管理机制,我们在下载安装很多深度框架(tensorflow-gpu)的同时会自动安装cuda和cudnn:

1548683120751

2.3 卸载

对于cuda8.0直接执行:

1
2
3
4
5
6
7
8
sudo /usr/local/cuda/bin/uninstall_cuda_8.0.pl
sudo rm -rf /usr/local/cuda*/
sudo rm -rf /etc/ld.so.conf.d/cuda.conf
sudo sed -i 'cuda-8.0/d' /etc/profile
sudo sed -i 'cuda-8.0/d' ~/.bash_profile
sudo ldconfig
source /etc/profile
source ~/.bash_profile

3.cudnn的安装配置

3.1 官网下载安装

进入cudnn官网注册登录,选择合适的cudnn版本:

1548683283036

下载得到的是一个压缩包,在下载路径执行(我下的对应版本是cuda8.0, cudnn7.1,若使用可自行修改数字):

1
2
3
4
5
6
7
8
tar -xzvf cudnn-8.0-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo rm -rf /usr/local/cuda/lib64/libcudnn.so.7 /usr/local/cuda/lib64/libcudnn.so
sudo cp cuda/lib64/lib* /usr/local/cuda/lib64/
sudo rm -rf /usr/local/cuda/lib64/libcudnn.so.7 /usr/local/cuda/lib64/libcudnn.so
sudo ln -s /usr/local/cuda/lib64/libcudnn.so.7.1.3 /usr/local/cuda/lib64/libcudnn.so.7
sudo ln -s /usr/local/cuda/lib64/libcudnn.so.7 /usr/local/cuda/lib64/libcudnn.so
sudo rm -rf cuda/

3.2 Conda安装

见2.2节

3.3卸载

1
2
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!