配置深度学习主机与环境(TensorFlow+1080Ti) | 第三章 CUDA与CUDNN安装

01 概念介绍

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(https://developer.nvidia.com/deep-learning-software). 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(http://caffe.berkeleyvision.org/), Caffe2(https://caffe2.ai/), TensorFlow(https://www.tensorflow.org/), Theano(http://deeplearning.net/software/theano/), Torch(http://torch.ch/), and Microsoft Cognitive Toolkit(https://www.microsoft.com/en-us/cognitive-toolkit/).

cuDNN Accelerated Frameworks

02

安装显卡驱动

在安装CUDA和cuDNN之前,需要确保显卡驱动已经安装好,其安装情况可以在 设置-软件更新-附加驱动 中查看:

设置-软件更新-附加驱动

更多关于显卡(文中使用1080Ti)安装的步骤,可以参考系列文章的第二篇:

配置深度学习主机与环境(TensorFlow+1080Ti):(二)Win10&Ubuntu双系统与显卡驱动安装

03

安装CUDA

1、查阅 NVIDIA CUDA Installation Guide for Linux

英伟达CUDA安装指南(Linux)(http://10.254.1.82/cache/13/03/nvidia.com/ecc6662f545298ca0c880c74dad092df/CUDA_Installation_Guide_Linux.pdf?autho=1488263945_400e879a62681edc11f46d33e8611979&file=CUDA_Installation_Guide_Linux.pdf)

对于后续的学习与工作大有裨益,包含了CUDA的详尽安装说明。当然如果你不想阅读英文,只想尽快安装CUDA,可以参照后续步骤。

2、下载 CUDA Toolkit (https://developer.nvidia.com/cuda-downloads)安装包:

安装包下载选项

推荐使用第一个runfile (local) 安装选项;

网上不少教程中写有需要降低gcc版本,实测,无需降级,因此可以忽略;

下载第一个 Base Installer 即可。

3、安装CUDA 8.0

安装指南

打开终端,输入:sudo sh cuda_8.0.61_375.26_linux.run,在下载选项中,也有说明如何安装;

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 ]:

添加环境变量:

在终端中输入nvidia-smi,可以查询显卡状态。

查询显卡状态

在打开的文件中写入:

export PATH="$PATH:/usr/local/cuda-8.0/bin" export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64"

保存并关闭文件, 在终端中输入:

source ~/.bashrc

使环境更改生效。

4、在终端中输入nvidia-smi,可以查询显卡状态。

查询显卡状态

5、CUDA Samples 测试

运行 CUDA Samples 检测 CUDA 是否顺利安装:

打开终端,切换到位置:~/ NVIDIA_CUDA-8.0_Samples

输入:make

CUDA Samples 测试

编译时间较长。若没有报错,则将新编译为二进制文件,默认存放在 ~/NVIDIA_CUDA-7.5_Samples/bin 中。

打开终端,切换到位置:~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release

终端输入:./deviceQuery,如果显示类似下图,则说明CUDA安装且配置成功!

CUDA安装且配置成功!

04

安装cuDNN

1、下载cuDNN,下载之前需要注册Nvidia开发者帐号,按要求注册即可。

2、莫名其妙在我的笔记本上无法登录...在主机的Ubuntu中可以顺利登录...此条纯属吐槽,封IP真是够了...

IP blocked

3、登录后显示有多个版本可供选择,建议使用 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

Error

在安装cuDNN中,可以看到安装文件的版本为libcudnn.so.6,所以很明显是v6版本不支持导致的错误(参见本文最后一张图,是安装cuDNN v6时的截图,其中包含libcudnn.so.6文件)。

stcokoverflow 中也出现了相关问题: ImportError: libcudnn when running a TensorFlow program(https://stackoverflow.com/questions/41991101/importerror-libcudnn-when-running-a-tensorflow-program)

ImportError: libcudnn when running a TensorFlow program

选择 cuDNN v5.1 for CUDA 8.0 中的 cuDNN v5.1 Library for Linux 下载:

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安装完毕。

cuDNN安装完毕(v6仅作示范,后面删除换为了v5)

05

参考资料

1、知乎:Ubuntu 16.04.2 + GTX1080 + Python3 TensorFlow 配置(https://zhuanlan.zhihu.com/p/25429108)

2、Ubuntu 14.04 上安装 CUDA 7.5/8.0 超详细教程(http://blog.csdn.net/masa_fish/article/details/51882183)

3、超详细配置Caffe(gpu版本+ubuntu16.04)考虑各种问题(http://blog.csdn.net/a_z666666/article/details/72853346)

4、我爱自然语言处理:深度学习主机环境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow(http://www.52nlp.cn/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E4%B8%BB%E6%9C%BA%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE-ubuntu16-04-geforce-gtx1080-tensorflow)

5、Ubuntu 16.04安装配置TensorFlow GPU版本(http://www.linuxidc.com/Linux/2016-11/137561.htm)

6、ubuntu16.04下安装TensorFlow(GPU加速)(http://blog.csdn.net/bbzz2/article/details/54141215)

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

业界 | 谷歌正式发布TensorFlow 1.5:终于支持CUDA 9和cuDNN 7

3336
来自专栏机器学习算法工程师

快来操纵你的GPU| CUDA编程入门极简教程

2006年,NVIDIA公司发布了CUDA(http://docs.nvidia.com/cuda/),CUDA是建立在NVIDIA的CPUs上的一个通用并行计...

6554
来自专栏Hadoop实操

如何在CDSW中使用GPU运行深度学习

1852
来自专栏沈唁志

文本处理,第2部分:OH,倒排索引

这是我的文本处理系列的第二部分。在这篇博客中,我们将研究如何将文本文档存储在可以通过查询轻松检索的表单中。我将使用流行的开源Apache Lucene索引进行说...

1564
来自专栏吉浦迅科技

DAY5:阅读 CUDA C编程接口之CUDA C runtime

1274
来自专栏AI科技大本营的专栏

TensorFlow tfjs 0.10.3 发布

TensorFlow tfjs 0.10.3 近日正式发布,新版本主要有以下改进内容,AI科技大本营对其编译如下。 ▌资源

1202
来自专栏Deep learning进阶路

caffe随记(七)---训练和测试自己的图片

前面也介绍了tools工具,今天来试着自己跑一下图像分类的实例 1、下载数据 我没有用imagenet的数据,因为太大了不想下,而且反正也只是当作例程跑一下而...

2140
来自专栏吉浦迅科技

DAY46:阅读Surface Reference API

reads the CUDA array bound to the one-dimensional surface reference surfRef usin...

1015
来自专栏用户画像

3.2.3页面置换算法

进程运行时,若其访问的页面不在内存而徐将其调入,但内存已无空闲时间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区。 而选择调入页面的算法就称为页面置...

2002
来自专栏每日一篇技术文章

Metal_入门01_为什么要学习它

Metal 系列教程 Metal_入门01_为什么要学习它 Metal_入门02_带你走流程

1162

扫码关注云+社区