配置深度学习主机与环境(TensorFlow+1080Ti):
(一)硬件选购与主机组装
(二)Win10&Ubuntu双系统与显卡驱动安装
(三)CUDA与CUDNN安装
(四)基于Anaconda的TensorFlow安装
0. 概念介绍
CUDA(Compute Unified Device Architecture 统一计算设备架构)
CUDA(Compute Unified Device Architecture),是英伟达公司推出的一种基于新的并行编程模型和指令集架构的通用计算架构,它能利用英伟达GPU的并行计算引擎,比CPU更高效的解决许多复杂计算任务。
使用CUDA的好处就是透明。根据摩尔定律GPU的晶体管数量不断增多,硬件结构必然是不断的在发展变化,没有必要每次都为不同的硬件结构重新编码,而CUDA就是提供了一种可扩展的编程模型,使得已经写好的CUDA代码可以在任意数量核心的GPU上运行。
CUDA最主要的包含两个方面:一个是ISA指令集架构;第二硬件计算引擎;实际上是硬件和指令集。 也就是说我们可以把CUDA看做是与X86或者cell类似的架构,但是是基于是GPU,而不是传统的CPU。
cuDNN(NVIDIA CUDA® Deep Neural Network library)
The NVIDIA CUDA® Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, pooling, normalization, and activation layers. cuDNN is part of the NVIDIA Deep Learning SDK.
Deep learning researchers and framework developers worldwide rely on cuDNN for high-performance GPU acceleration. It allows them to focus on training neural networks and developing software applications rather than spending time on low-level GPU performance tuning. cuDNN accelerates widely used deep learning frameworks, including Caffe, Caffe2, TensorFlow, Theano, Torch, and Microsoft Cognitive Toolkit.
1. 安装显卡驱动
在安装CUDA和cuDNN之前,需要确保显卡驱动已经安装好,其安装情况可以在 设置-软件更新-附加驱动 中查看:
更多关于显卡(文中使用1080Ti)安装的步骤,可以参考系列文章的第二篇:
配置深度学习主机与环境(TensorFlow+1080Ti):(二)Win10&Ubuntu双系统与显卡驱动安装
2. 安装CUDA
- 查阅 NVIDIA CUDA Installation Guide for Linux
英伟达CUDA安装指南(Linux)对于后续的学习与工作大有裨益,包含了CUDA的详尽安装说明。当然如果你不想阅读英文,只想尽快安装CUDA,可以参照后续步骤。
- 下载 CUDA Toolkit 安装包:
- 推荐使用第一个runfile (local) 安装选项;
- 网上不少教程中写有需要降低gcc版本,实测,无需降级,因此可以忽略;
- 下载第一个 Base Installer 即可。
-
安装CUDA8.0
- 打开终端,输入:
sudo sh cuda_8.0.61_375.26_linux.run
,在下载选项中,也有说明如何安装;
- 如果出现大段废话,可以使用
Ctrl+C
跳过; -
进入具体的安装选项:
- 注意第二个选项
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
须选择否,因为在之前已经安装好了显卡驱动,无需重新安装。
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
(y)es/(n)o/(q)uit: n
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-8.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/dexter ]:
- 添加环境变量:
- 在终端中输入:
gedit ~/.bashrc
- 在打开的文件中写入:
export PATH="$PATH:/usr/local/cuda-8.0/bin"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64"
- 保存并关闭文件, 在终端中输入:
source ~/.bashrc
使环境更改生效。
- 在终端中输入
nvidia-smi
,可以查询显卡状态。
- CUDA Samples 测试
运行 CUDA Samples 检测 CUDA 是否顺利安装: - 打开终端,切换到位置:
~/ NVIDIA_CUDA-8.0_Samples
- 输入:
make
- 编译时间较长。若没有报错,则将新编译为二进制文件,默认存放在
~/NVIDIA_CUDA-7.5_Samples/bin
中。 - 打开终端,切换到位置:
~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
- 终端输入:
./deviceQuery
,如果显示类似下图,则说明CUDA安装且配置成功!
3. 安装cuDNN
- 下载cuDNN,下载之前需要注册Nvidia开发者帐号,按要求注册即可。
-
莫名其妙在我的笔记本上无法登录...在主机的Ubuntu中可以顺利登录...此条纯属吐槽,封IP真是够了...
- 登录后显示有多个版本可供选择,建议使用 cuDNN v5.1 for CUDA 8.0,因为作者最开始尝鲜选择 cuDNN v6.0 for CUDA 8.0 最后安装失败,应该是支持还不到位。然后又删掉cuDNN,再重新安装(中间删掉重新安装cuDNN已经安装好的Anaconda不影响,但是最好重新安装TensorFlow)。
- 具体报错为:
ImportError: libcudnn.so.5: cannot open shared object file: No such file or director
在安装cuDNN中,可以看到安装文件的版本为libcudnn.so.6,所以很明显是v6版本不支持导致的错误(参见本文最后一张图,是安装cuDNN v6时的截图,其中包含libcudnn.so.6文件)。
-
stcokoverflow 中也出现了相关问题:
ImportError: libcudnn when running a TensorFlow program
-
选择 cuDNN v5.1 for CUDA 8.0 中的 cuDNN v5.1 Library for Linux 下载:
在包含安装文件的文件夹,右键,打开终端,输入如下命令行:
tar xvzf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64
sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*
相当于解压缩+复制粘贴,手动复制粘贴也是没问题的。到此cuDNN安装完毕。