《一个图像复原实例入门深度学习&TensorFlow—第八篇》使用GPU加速

本文详细介绍了如何在Windows 7环境下配置TensorFlow-GPU1.9.0,CUDA9.0和cudnn7.2.1,以实现深度学习的GPU加速。内容包括GPU与CPU的区别,CUDA和相关工具的介绍,以及各个组件的安装步骤和注意事项。通过配置,可以将原本需要45分钟的计算任务缩短至9分钟。
摘要由CSDN通过智能技术生成

使用GPU加速:win7 配置tensorflow-gpu1.9.0 CUDA9.0 cudnn7.2.1

1. 什么是CPU、GPU、CUDA、CUDA Toolkit、cudnn、tensorflow-gpu?

1.1 CPU和GPU

GPU:是图像处理单元(Graphics Processing Unit),如果说CPU是电脑的心脏那么GPU就是我们常说的显卡的心脏,CPU决定了电脑的档次和大部分性能,GPU决定了该显卡的档次和大部分性能。**CPU擅长逻辑控制,串行的运算,GPU擅长大规模并发计算。**下面这个视频可以让你更好的理解CPU和GPU:
https://v.youku.com/v_show/id_XNjY3MTY4NjAw.html
你可能会想,CPU太菜了吧!NO,CPU可强了,GPU的行为基本上是靠CPU调动的,GPU就是并行处理能力强大,但是CPU很多功能GPU都没有。 比如指令流水化, 多进程管理之类的。 GPU没有多少自主处理指令的能力, 基本是指令靠CPU计算靠GPU。GPU工作原理是CPU处理指令,遇到需要GPU的地方(比如图像渲染),则会在显存中开辟一个小空间,然后把这个任务分成很多小任务给GPU来并行的计算。

GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。 
出处:https://www.cnblogs.com/chakyu/p/7405186.html

中和CPU和GPU的优势,我们就能实现计算加速了。
这里写图片描述

1.2 CUDA、CUDA Toolkit、cudnn、tensorflow-gpu

GPU一开始是用于处理图像数据的,而图像的变换显示需要大量的矩阵操作,出于这一特点,NVIDIA(英伟达)的研究者们发现GPU稍作改动就可以快速处理很多科学计算的问题,于是就出现了CUDA(Compute Unified Device Architecture,统一计算设备架构)这一编程模型,目的是在应用程序中充分利用CPU和GPU各自的优点,用于图像计算以外的目的。传统的GPU架构需要按一个标准的流水线编程,要经过vertex processor,fragment processor和pixel operation,这会使编程变得困难和不容易控制。早期的GPGPU(General Purpose Computing on GPU通用计算为目的的GPU)也需要按照那样的标准的流水线编程,对于我们来说CUDA的出现,才标志着真正意义上GPU通用计算的到来!CUDA使用 C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去学习特定的显示芯片的指令或是特殊的结构。
不行啊,能不能友好一点,我们做深度学习的,不想过多的关注环境配置的问题,你既然是个加速工具,直接让我下载下来用不就行了吗?于是就出现了CUDA Toolkit,cudnn,tensorflow-gpu。CUDA Toolkit是为创建高性能GPU加速器应用程序提供开发环境的工具包。cuDNN(CUDA Deep Neural Network library),是NVIDIA打造的针对深度神经网络的加速库(同样的GPU、同样的框架(CUDA)、同样的网络、同样的数据,有cudnn运行会更快,相当于可以自动优化深度学习算法)。tensorflow-gpu,是Google深度学习框架tensorflow的gpu版本,Google与NVIDIA合作,gpu版的tensorflow可以方便的使用GPU进行计算加速,中间的大部分繁琐的配置过程由CUDA Toolkit,cudnn完成。特别的,对于单个使用单个GPU加速的情况,我们只需下载安装,CUDA Toolkit,cudnn,tensorflow-gpu,然后我们的程序不做任何改动就可以直接完成由GPU加速运行!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值