大家好,我是呼噜噜。之前小牛学过一点深度学习的知识,做了几个项目,发现CPU来训练就很慢,但是后来用装有GPU的电脑来训练,就明显快的飞起,感觉很神奇。 此时心里有个疑问,CPU造价那么昂贵,性能比起内存、机械硬盘、固态硬盘,快的不是一个数量级的,这个GPU竟然比CPU还要厉害?
让我们一起进入计算机的世界,一起来看看GPU和CPU!
CPU,中央处理器(Central Processing Unit)是一台计算机的运算核心和控制核心。CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。
GPU,图形处理器(Graphic Processing Unit)。一个专门的图形核心处理器。GPU是显示卡的“大脑”,决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。
计算机对图像进行实时渲染, 一般需要经过图形流水线的过程:顶点处理->图元处理->栅格化->片段处理->像素操作, 期间需要大量的计算,比如 640×480的分辨率的屏幕,为了显示游戏画面,大概有30万个像素需要渲染 ,为了让人眼看到画面动起来,其不像电影一样只需要24帧,至少需要60帧, 即每秒我们需要完成1800 万次单个像素的渲染,每个像素都需要经过图形流水线过程,需要耗费大量资源
随着图像处理对于计算机来说越来越重要,CPU越来越不从心了。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。
另一方面,当芯片的集成度增加后,漏电流也随之增大,但时钟频率的提高有限,而且晶体管的线宽很快就会到达物理极限,因此芯片的性能很难靠减小晶体管线宽来提高。所以工程师们开始想办法在设计上做文章:由于图像渲染的流程是固定的,通过硬件来解决这个问题,那就设计一个不需要考虑CPU的流水线停顿、乱序执行、 分支预测、内存管理、IO等等的各类问题的芯片 ,这其实就是GPU。
我们重点再介绍一下CPU并行,即并行计算
并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来共同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。
并行计算可分为时间上的并行和空间上的并行
我们来看看,现代的 GPU 为了图形渲染、深度学习上有相较于CPU更强大的性能,做出来哪些设计上的优化:
我们再看看下面的CPU和GPU的架构图,想必会有所得
从架构图我们就能很明显的看出,GPU的构成相对简单,GPU采用流式并行计算模式,每一个计算单元可以单独负责一个像素点,每个像素点不依赖旁边像素点的数据,所以每个计算单元都是独立并行的,不需要控制器额外干涉。CPU的核数一般2,4,8核;但是GPU可以达到上千核 拥有数量非常多的计算单元和超长的流水线,计算能力非常强悍,特别适合处理大规模并发计算
我们需要知道GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。
小结一下
虽然GPU是为了图像处理而生的,随着时代的发展,现在GPU不仅可以在图像处理领域大显身手,它还被用来深度学习、科学计算、密码破解、数值分析,海量数据处理,金融分析等需要大规模并行计算的领域。
本篇文章到这里就结束啦,很感谢靓仔你能看到最后,如果觉得文章对你有帮助,别忘记关注我!
计算机内功、JAVA源码、职业成长、项目实战、面试相关资料等更多精彩文章在公众号「小牛呼噜噜」