学习数据集训练时,电脑没有GPU,所以当时训练时用的是CPU,也没有意识到两者之间在训练数据集有什么差别,直到在一次训练过程中,着重看了一下训练过程,才发现,训练时间是真的差距大。

这两个具体有什么差别呢?

一、GPU和CPU是什么?

CPU:中央处理器(英文Central Processing Unit)是一台计算机的运算核心和控制核心。CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。

CPU

GPU:英文全称Graphic Processing Unit,中文翻译为“图形处理器”。一个专门的图形核心处理器。GPU是显示卡的“大脑”,决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。

GPU


显卡

二、GPU与CPU有什么区别?

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。主要区别如下。

CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

于是CPU和GPU就呈现出非常不同的架构。

其中上图中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。

GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。

CPU 基于低延时的设计:

CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。

当今的CPU可以达到64bit 双精度。执行双精度浮点源算的加法和乘法只需要1~3个时钟周期。CPU的时钟周期的频率是非常高的,达到1.532~3gigahertz(千兆HZ, 10的9次方).大的缓存也可以降低延时。保存很多的数据放在缓存里面,当需要访问的这些数据,只要在之前访问过的,如今直接在缓存里面取即可。

复杂的逻辑控制单元。当程序含有多个分支的时候,它通过提供分支预测的能力来降低延时。数据转发。当一些指令依赖前面的指令结果时,数据转发的逻辑控制单元决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续的指令。这些动作需要很多的对比电路单元和转发电路单元。

GPU是基于大的吞吐量设计。

GPU的特点是有很多的ALU和很少的cache. 缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。

GPU的控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。

GPU的虽然有dram延时,却有非常多的ALU和非常多的thread. 为啦平衡内存延时的问题,我们可以中充分利用多的ALU的特性达到一个非常大的吞吐量的效果。尽可能多的分配多的Threads.通常来看GPU ALU会有非常重的pipeline就是因为这样。所以与CPU擅长逻辑控制,串行的运算。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。

上面说的有点专业化,接下来就简单说一下,他们两个到底差在哪?

CPU(Central Processing Unit)是电脑最主要的部件,他的主要功能是解释计算机指令以及处理计算机软件中的数据,说白了就是做指挥工作,统筹各方面。CPU相当于整个电脑的心脏,而GPU相当于显卡的心脏。

普通的处理器CPU差不多双核心四线程,目前市面上最高端的桌面处理器i9-7980XE(RMB1.5万)不过十八核心三十六线程。GPU则不同,就拿普通的2000块的游戏显卡RX 480来说,RX480的GPU芯片计算单元划分为36个CU计算核心,每个CU核心又包含了64个流处理器计算核心,所以总共就是36X64=2304个流处理器计算核心。

CPU相对于GPU就像老教授和小学生,拿i9-7980XE和RX480举个例子,出一套小学数学试卷,老教授刚做一道题,两千多名学生一人一题早就交卷子了。如果套高数卷子,老教授做完学生们一道也不会做。

三、训练神经网络GPU优于CPU

很多个简单的工作,交给GPU显然更适合。

其实在早期,神经网络都是用CPU训练的。即使现在,像TensorFlow这样的流行框架也支持在CPU上运行。那么,既然CPU和GPU都可以训练神经网络,为什么一般用GPU训练神经网络?很简单,因为GPU比CPU快很多。比如,Victor Dibia(IBM研究院Research Staff Member)基于Tensorflow框架训练了一个实时检测手部的网络。

训练这样一个神经网络要花多久?CPU上大约要12天,而GPU上则是5小时。(我们这里不讨论具体的型号,关键是两者的比例。CPU和GPU的差距太大了)。

而且,实际上这个神经网络的训练时间已经通过迁移学习大大缩短了。迁移学习指直接拿训练好的图像分类的模型来用,只是重新训练最后一层或几层网络以检测手部,所以能快很多。那如果从头开始训练的话(有的时候没有现成的模型可供迁移),可能要几周甚至几个月。这还是GPU的情况。

按照上面的比例,换算成CPU,那基本上就太慢太慢,慢到不现实的程度。GPU之所以比CPU快好多,主要是因为,从运算的角度来看,神经网络主要是由大量的浮点矩阵构成的。而现代的神经网络,可能有几千到几百万的浮点矩阵(所谓深度学习),因此需要很大的内存带宽来访问这些海量的浮点矩阵。而GPU的内存带宽比CPU高很多。比如Intel的Core i9-7980XE内存带宽约为57GB/s,而NVIDIA的Tesla P100带宽高达900GB/s。

使用神经网络训练,一个最大的问题就是训练速度的问题,特别是对于深度学习而言,过多的参数会消耗很多的时间,在神经网络训练过程中,运算最多的是关于矩阵的运算,这个时候就正好用到了GPU,GPU本来是用来处理图形的,但是因为其处理矩阵计算的高效性就运用到了深度学习之中。

CPU(中央处理器)和GPU(图像处理器)区别相关推荐

  1. CPU服务器和GPU服务器有什么区别?使用场景有什么不同?

    GPU服务器和CPU云服务器有什么区别?在使用场景上GPU更适用于人工智能.图形处理领域,CPU和GPU是两种不同的处理器,CPU倾向于程序控制.顺序执行,GPU受CPU控制,服务器百科分享GPU服务 ...

  2. 基本概念学习(8003)---CPU中央处理器

    中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).它的功能主要是解释计算机指令以 ...

  3. CPU总线 HT3.0/ QPI 区别

    Intel的QuickPath Interconnect技术缩写为QPI,译为快速通道互联.事实上它的官方名字叫做CSI,Common System Interface公共系统界面,用来实现芯片之间的 ...

  4. 一文读懂APU/BPU/CPU/DPU/VPU/GPU等处理器

    本文转载自EEFOCUS与非网一篇很不错的文章,来开启我们桐烨科技嵌入式AI平台(ARM+VPU)的开发之旅. 特别声明:本文转载EEFOCUS与非网:http://www.eefocus.com/m ...

  5. CPU渲染与GPU渲染的优劣,教你选择合适的渲染方式

    使用计算机进行渲染时,有两种流行的系统:基于中央处理单元 (CPU) 或基于图形处理单元 (GPU). CPU 渲染利用计算机的 CPU 来执行场景并将其渲染到接近完美.这也是执行渲染的更传统方式.然 ...

  6. 酷睿i7和i5对计算机专业要求,i5和i7有什么区别?电脑CPU i7和i5的区别分享

    在用户选择电脑的时候,通常都会比较看重CPU,大家都知道CPU中央处理器是影响电脑性能的核心硬件,这里大家见的比较多的有I5和I7处理器,很多用户在购买笔记本的时候总是不知道选择哪款好~I7的价格更贵 ...

  7. PyTorch 笔记(03)— Tensor 数据类型分类(默认数据类型、CPU tensor、GPU tensor、CPU 和 GPU 之间的转换、数据类型之间转换)

    1. Tensor 数据类型 Tensor 有不同的数据类型,如下表所示,每种类型都有 CPU 和 GPU 版本(HalfTensor)除外,默认的 tensor 是数据类型是 FloatTensor ...

  8. tensorflow 使用CPU而不使用GPU的问题解决

    tensorflow 使用CPU而不使用GPU的问题解决 参考文章: (1)tensorflow 使用CPU而不使用GPU的问题解决 (2)https://www.cnblogs.com/hutao7 ...

  9. 成功解决:Win系统下的Tensorflow使用CPU而不使用GPU运行加速

    成功解决:Win系统下的Tensorflow使用CPU而不使用GPU运行加速 目录 解决问题 解决思路 解决方法 解决问题 Win系统下的Tensorflow使用CPU而不使用GPU运行加速 解决思路 ...

  10. linux下cpu opencl加速,GPU挑战CPU!详解CUDA+OpenCL威力

    众所周知,GPU拥有数十倍于CPU的浮点运算能力,但如此强大的实力多数情况下只能用来玩游戏,岂不可惜?因此近年来业界都在致力于发掘GPU的潜能,让它能够在非3D.非图形领域大展拳脚. 1999年,首颗 ...

最新文章

  1. Pycharm连接git服务器的方法
  2. Spring AOP + AspectJ Annotation Example---reference
  3. AbstractReferenceCountedByteBuf源码分析
  4. SaltStack的salt-ssh使用及LAMP状态设计部署
  5. linux冷备机怎么切换,linux – 热备用主机vs冷备用主机?
  6. python-数据容器-有序容器与无序容器
  7. 总帐明细账对账不平数据库修改
  8. linux rpm安装mysql5.7.*密码策略,访问策略等常见问题
  9. [转载]python模块学习---HTMLParser(解析HTML文档元素)
  10. 查看C#Dll的一个 工具 ILSpy
  11. Jmeter ramp-up 参数含义 以及http请求测试流程零基础
  12. 【服务器数据恢复】异常断电导致ESXI系统无法连接存储的数据恢复
  13. 旷视科技面试——算法岗
  14. 编写一个程序。要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件“data.txt”中,然后再编写一个程序,从文件“data.txt”中读取这5个学生的成绩,计算并输出他们的平均数,然
  15. 2020支付行业七大预测:聚合支付牌照有望正式落地
  16. 基于android的美食食谱分享推荐系统app
  17. 锦州铁路高中2021高考成绩查询入口,锦州高考成绩查询系统
  18. Openstack celi
  19. Android面试题最全总结系列 (持续更新中...)
  20. 与人交往哪些心态不行

热门文章

  1. 【直线检测】基于LSD实现直线检测含Matlab源码
  2. (Cys-RGD)包被CdTe量子|3-巯基丙酸(MPA)包被近红外发光CdTe量子
  3. 代码规范 : 关于注释和日志
  4. linux桌面记事本,推荐6款简单实用的手机记事本APP,总有一款适合你的‖APP展览馆...
  5. 学习日记day22 平面设计 构图
  6. python常见算法实现_几种常见算法的Python实现
  7. 中国大学mooc慕课题库答案怎么查,这里全有了
  8. 1506.01186-Cyclical Learning Rates for Training Neural Networks
  9. 竞品分析 | 百词斩竞品分析报告
  10. 【基于51单片机驱动ST7789VW的TFT显示屏240x240