NVIDIA显卡配置
driver、cuda、cudnn、tensorflow安装详细记录
Posted by Tian on July 4, 2018
一、安装driver、cuda
1、 确保机器有支持cuda的GPU
1
2
3
4
| lspci | grep -i nvidia
## output
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1c03 (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 10f1 (rev a1)
|
如果没有输出,执行下面命令更新PCI硬件database,再执行上面命令。
支持cuda的GPU列表见这个链接。
2、确保机器有支持的Linux版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| uname -m && cat /etc/*release
## output
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
|
根据输出选择cuda。
3、确保机器安装了gcc
1
2
3
4
5
6
| gcc --version
## output
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
报错的话说明没装gcc,安装gcc就好。
4、确保机器有正确的Kernel Headers并安装了Development Packages
安装驱动的时候需要正确的Kernel Headers和Development Packages。
Runfile安装文件不会去验证package;Deb安装文件会验证,如果没有安装的话Deb会尝试安装。然而,它会安装最新的packages,可能和你正在使用的kernel不符。因此,最好在安装cuda驱动,或者任何时候改变kernel版本之前,手动确保正确版本的kernel header和development package。
查看当前kernel版本:
1
2
3
| uname -r
## output
4.13.0-45-generic
|
如果系统更新了kernel版本,执行下面的命令确保正确的kernel header和development package被安装,否则,驱动可能不工作
1
| sudo apt-get install linux-headers-$(uname -r)
|
5、选择安装方式
官方有两种安装cuda的方式,一种是用对应系统的包管理器(对Ubuntu系统来讲就是Deb包),另一种是用runfile包,可能的话推荐用包管理器安装,这样方便管理和安装依赖。
6、下载NVIDIA CUDA Toolkit
在NVIDIA官网下载cuda。
因为TensorFlow1.8指定了cuda版本为9.0,cudnn版本为v7.0,否则要自己编译安装,为了方便,我们用TF1.8指定的版本。
MD5认证
MD5 checksum 在这里。
7、解决冲突
在安装cuda之前,应该卸载掉之前安装的cuda。
卸载Toolkit runfile installation:
1
| sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
|
卸载Driver runfile installation:
1
| sudo /usr/bin/nvidia-uninstall
|
卸载Deb installation:
1
2
3
4
| sudo yum remove <package_name> # Redhat/CentOS
sudo dnf remove <package_name> # Fedora
sudo zypper remove <package_name> # OpenSUSE/SLES
sudo apt-get --purge remove <package_name> # Ubuntu
|
8、安装driver、cuda
1
2
3
4
| sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb # Install repository meta-data
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub # Installing the CUDA public GPG key
sudo apt-get update # Update the Apt repository cache
sudo apt-get install cuda # Install CUDA
|
下载页面也有提示,按照提示做就行了。
9、安装后步骤
(1)必做
1
2
3
4
5
6
7
8
| export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}} # 添加环境变量到.bashrc
# 如果用runfile安装,还需要添加LD_LIBRARY_PATH
## 64位系统
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
## 32位系统
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
|
(2)建议
1
2
3
4
5
6
| cuda-install-samples-9.0.sh <dir> # Install Writable Samples
cat /proc/driver/nvidia/version # Verify the Driver Version
cd <dir> && make -j8# Compiling the Examples
./deviceQuery # Running the Binaries
./bandwidthTest
## output 显卡信息和最后'Result = PASS'说明测试通过
|
(3)其他
1
2
3
4
| ## 如果安装出现循环登录或者黑屏,可以尝试CTRL+ALT+F1下卸载NVIDIA驱动
sudo apt-get remove --purge nvidia-*
sudo apt-get autoremove
echo "nouveau" | sudo tee -a /etc/modules
|
10、参考
cuda安装官方文档
博客
二、安装cudnn
(1)下载cudnn7.0
下载地址:cudnn下载官网
(2)安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # 方法一:(推荐)
tar -xzvf cudnn-9.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 /usr/local/cuda/lib64/libcudnn*## 若sudo ldconfig提示不是符号链接,可用以下示例方法解决
sudo ldconfig -v | grep cudnn
sudo ln -sf /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so.7 /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so
sudo ln -sf /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so.7.0.5 /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so.7# 方法二:
sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb # Install the runtime library
sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb # Install the developer library
sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb # Install the code samples and the cuDNN Library User Guide
# Verifying
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
# output Test passed!
|
(3)参考
cudnn安装官方文档
三、安装tensorflow
(1)miniconda
下载地址:conda官网
(2)libcupti-dev 库
1
2
| sudo apt-get install cuda-command-line-tools
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}/usr/local/cuda/extras/CUPTI/lib64
|
(3)NVIDIA TensorRT 3.0(可选)
1
2
3
4
| wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvinfer-runtime-trt-repo-ubuntu1404-3.0.4-ga-cuda9.0_1.0-1_amd64.deb
sudo dpkg -i nvinfer-runtime-trt-repo-ubuntu1404-3.0.4-ga-cuda9.0_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get install -y --allow-downgrades libnvinfer-dev libcudnn7-dev=7.0.5.15-1+cuda9.0 libcudnn7=7.0.5.15-1+cuda9.0
|
重要提示:为了兼容预编译的 tensorflow-gpu
软件包,请使用 TensorRT 的 Ubuntu 14.04 软件包(如上所示),即使要安装到 Ubuntu 16.04 系统中也不例外。
要从源代码编译 TensorFlow-TensorRT 集成模块(而不是使用预编译的二进制文件),请参阅模块文档。要详细了解 TensorRT 安装说明,请参阅 NVIDIA 的 TensorRT 文档。
为避免在以后的系统升级过程中出现 cuDNN 版本冲突,您可以将 cuDNN 版本保持为 7.0.5:
1
| sudo apt-mark hold libcudnn7 libcudnn7-dev
|
日后要允许进行升级,您可以取消这一保持行为:
1
| sudo apt-mark unhold libcudnn7 libcudnn7-dev
|
如果您已安装前述软件包的旧版本,请升级到指定版本。如果升级不可行,您仍然可以运行支持 GPU 的 TensorFlow,但前提是您从源代码安装 TensorFlow。
(4)TensorFlow
1
2
3
4
| conda create -n tensorflow pip python=2.7 # or python=3.3, etc.
source activate tensorflow(tensorflow)$ # Your prompt should change (tensorflow)$ pip install --ignore-installed --upgrade tfBinaryURL
|
其中 *tfBinaryURL*
是 TensorFlow Python 软件包的网址。例如,以下命令将针对 Python 3.4 安装仅支持 CPU 的 TensorFlow 版本:
1
| (tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl
|
(5)验证
1
2
3
4
5
| # Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
|
如果系统输出以下内容,说明您可以开始编写 TensorFlow 程序了:
如果系统输出一条错误消息而不是问候语,请参阅常见的安装问题。
(6)参考
tensorflow官网