本文记录 Ubuntu 下部署 CUDA 环境的过程.
Ubuntu 16.04
GeForce GTX 1070
Nvidia Graphics Driver
CUDA 9.0
cuDNN 7.6.5
文章目录
1. 安装 Nvidia 显卡驱动
查看显卡型号
$ lspci | grep -i nvidia
或者
$ sudo lshw -numeric -C display
或者
$ ubuntu-drivers devices
1.1 选择驱动版本
Nvidia 显卡驱动和 CUDA Toolkit 版本需要适应. 如果显卡驱动版本过低, CUDA Toolkit 将不支持.
点击 CUDA Toolkit and Corresponding Driver Versions 查看最新 CUDA Toolkit 和 Nvidia Driver 对应关系表.
下表截止到 2021年 8 月 2 日. Last updated August 2, 2021.
CUDA Toolkit | Toolkit Driver Version | |
---|---|---|
Linux x86_64 Driver Version | Windows x86_64 Driver Version | |
CUDA 11.4 Update 1 | >=470.57.02 | >=471.41 |
CUDA 11.4.0 GA | >=470.42.01 | >=471.11 |
CUDA 11.3.1 Update 1 | >=465.19.01 | >=465.89 |
CUDA 11.3.0 GA | >=465.19.01 | >=465.89 |
CUDA 11.2.2 Update 2 | >=460.32.03 | >=461.33 |
CUDA 11.2.1 Update 1 | >=460.32.03 | >=461.09 |
CUDA 11.2.0 GA | >=460.27.03 | >=460.82 |
CUDA 11.1.1 Update 1 | >=455.32 | >=456.81 |
CUDA 11.1 GA | >=455.23 | >=456.38 |
CUDA 11.0.3 Update 1 | >= 450.51.06 | >= 451.82 |
CUDA 11.0.2 GA | >= 450.51.05 | >= 451.48 |
CUDA 11.0.1 RC | >= 450.36.06 | >= 451.22 |
CUDA 10.2.89 | >= 440.33 | >= 441.22 |
CUDA 10.1 (10.1.105 general release, and updates) | >= 418.39 | >= 418.96 |
CUDA 10.0.130 | >= 410.48 | >= 411.31 |
CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
1.1 在线安装 (apt-get)
在线安装有三种方式:
- 自动安装推荐驱动版本
- 选择指定的驱动版本(官方源)
- 选择指定的驱动版本(PPA: Graphics Drivers)
1.1.1 自动安装推荐驱动版本
查看推荐显卡驱动版本.
$ ubuntu-drivers devices | grep recommended
driver : nvidia-384 - distro non-free recommended
以下命令将自动安装上面查询的驱动版本 nvidia-384
.
$ sudo ubuntu-drivers autoinstall
1.1.2 选择指定的驱动版本(官方源)
最高的驱动版本为 384
. 可支持 CUDA 最高版本为 9.0
.
$ sudo apt-get install nvidia-384-dev nvidia-modprobe
1.1.3 选择指定的驱动版本(PPA: Graphics Drivers)
添加 PPA
$ sudo add-apt-repository ppa:graphics-drivers/ppa
更新
$ sudo apt-get update
最高的驱动版本为 430
. 可支持 CUDA 最高版本为 10.1
.
$ sudo apt-get install nvidia-430-dev nvidia-modprobe
1.1.4 卸载 apt-get 安装的驱动
$ sudo apt-get --purge remove nvidia*
1.2 离线安装(runfile)
1.2.1 下载驱动程序
点击 Drivers 搜索下载所有版本驱动,或者点击 Download 搜索下载最新版本驱动.
我的显卡为 GeForce GTX 1070
.
选择驱动版本 NVIDIA-Linux-x86_64-390.59.run
.
1.2.2 安装驱动程序
1. 禁用 nouveau 驱动
nouveau
为第三方开源显卡驱动。
打开配置文件,设置禁用。
$ sudo vim /etc/modprobe.d/blacklist.conf
在配置文件末尾添加两行。
blacklist nouveau
options nouveau modeset=0
然后执行
$ sudo update-initramfs -u
重新启动,并执行
$ lsmod | grep nouveau
如果没有屏幕输出,说明禁用 nouveau
成功。
2. 禁用X-Window服务
$ sudo service lightdm stop #这会关闭图形界面,但不用紧张
按Ctrl-Alt+F1
进入命令行界面,输入用户名和密码登录即可。
提示:在命令行输入:
sudo service lightdm start
,然后按 Ctrl+Alt+F7 即可恢复到图形界面。
3. 命令行安装驱动
给驱动程序run文件赋予执行权限:
$ sudo chmod +x NVIDIA-Linux-x86_64-390.59.run
执行run文件:
$ sudo ./NVIDIA-Linux-x86_64-390.59.run -no-opengl-files
-no-opengl-files
:表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为 ”login loop” 或者 ”stuck in login” .-no-x-check
:表示安装驱动时不检查X服务,非必需.-no-nouveau-check
:表示安装驱动时不检查nouveau
,非必需.-Z
,--disable-nouveau
:禁用nouveau
. 此参数非必需,因为之前已经手动禁用了nouveau
.-A
:查看更多高级选项.
必选参数解释:因为 NVIDIA 的驱动默认会安装 OpenGL,而 Ubuntu 的内核本身也有 OpenGL 且与 GUI 显示息息相关,一旦 NVIDIA 的驱动覆写了 OpenGL,在 GUI 需要动态链接 OpenGL 库的时候就引起问题.
之后,按照提示安装,成功后重启即可.
如果提示安装失败,不要急着重启电脑,重复以上步骤,多安装几次即可.
Driver测试:
$ nvidia-smi #若列出GPU的信息列表,表示驱动安装成功
$ nvidia-settings #若弹出设置对话框,亦表示驱动安装成功
2. 安装 CUDA 9.0
CUDA Toolkit Documentation v9.0.176
点击 CUDA Toolkit Downloads,打开最新 CUDA 下载页面.
点击 CUDA Toolkit Archive,打开全部 CUDA 下载页面.
点击 CUDA Toolkit 9.0 Downloads,打开 CUDA 9.0 下载页面.
2.1 deb 安装
下载 .deb 文件.
$ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
$ sudo apt update
$ sudo apt install cuda-9.0
安装补丁程序
$ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update_1.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604-9-0-176-local-patch-4_1.0-1_amd64.deb
添加环境变量
vim ~/.bashrc
加入下列内容
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
激活设置
source ~/.bashrc
验证安装
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
2.2 runfile 安装
下载 .run 文件.
sudo ./cuda_9.0.176_384.81_linux.run --no-opengl-libs
--no-opengl-libs
:表示只安装驱动文件,不安装OpenGL文件。必需参数,原因同上。注意:不是-no-opengl-files。--uninstall
(deprecated):用于卸载CUDA Driver(已废弃)。--toolkit
:表示只安装CUDA Toolkit,不安装Driver和Samples。--help
:查看更多高级选项。
阅读安装说明 Preface
回车键翻页,空格键快速翻页。
之后,按照提示安装即可。我依次选择了:
accept
#同意安装n
#不安装Driver,因为已安装最新驱动y
#安装CUDA Toolkit<Enter>
#安装到默认目录y
#创建安装目录的软链接n
#不复制Samples,因为在安装目录下有/samples
CUDA Sample测试:
编译并测试设备 deviceQuery:
$ cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
#编译并测试带宽 bandwidthTest:
$ cd ../bandwidthTest
$ sudo make
$ ./bandwidthTest
如果这两个测试的最后结果都是Result = PASS,说明CUDA安装成功啦。
安装 CUDA 9.0 官方补丁
$ sudo ./cuda_9.0.176.1_linux.run
$ sudo ./cuda_9.0.176.2_linux.run
$ sudo ./cuda_9.0.176.3_linux.run
$ sudo ./cuda_9.0.176.4_linux.run
3. 安装 cuDNN v7.6.5
在 NVIDIA Developer Program注册,并登录。
下载最新的 cuDNN Library
cuDNN v7.6.5 (November 5th, 2019), for CUDA 9.0, for Linux cudnn-9.0-linux-x64-v7.6.5.32.tgz
在下载目录下解压缩 cuDNN package
$ tar -xzvf cudnn-9.0-linux-x64-v7.6.5.32.tgz
将下列文件复制到 CUDA Toolkit 目录
$ 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 /usr/local/cuda/lib64/libcudnn*
设置环境变量,这一步非常重要,不能省略
打开~/.bashrc
vim ~/.bashrc
添加下列两行
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
保存关闭
使当前用户环境变量生效
source ~/.bashrc
完成.