欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从CPU与GPU利用率,到GPU与CPU差别的思考

程序员文章站 2024-02-26 22:32:58
...

注:本版关于GPU的内容均是是经过实测数据提供,具有版权所有

简介: GPU与CPU貌似差别不大的两个东西,然而,从逻辑结构,到原理,到性能,到功能,再到在物理设备中扮演的角色来讲,压根就不是同一个东西,甚至可以说,完全不可以类比。

首先考虑GPU利用率:
因为要对GPU物理设备进行压力测试和功耗测试,那么就需要设定GPU利用率分别为25%,50%,75%,100%类似的参数,那么这样的利用率,又意味着什么东西的利用率呢?


为了了解GPU,那么先认识一下CPU利用率相关的内容。

CPU结构介绍

我们都知道,CPU是由运算器和控制器两部分组成。

运算器就是执行加减乘除运算的 与,或,非门,不管移交什么样的命令,到最后都是转换成了这样最朴素的运算操作。他所执行的所有命令,都是通过控制器,传送要执行命令的地址,从地址中取数据,

如下图,参考:http://blog.csdn.net/yang_yulei/article/details/22529437

从CPU与GPU利用率,到GPU与CPU差别的思考

CPU时钟周期和CPU利用率

这是整个CPU的处理指令过程,CPU还有一个始终周期,通常在几个时钟周期内,会完成这些操作,但遇到中断,等待,空载等情况发生的时候,其实时钟会进行空转,CPU的利用率,就是指,有多少时钟周期进行了指令执行,计算方式也是,从任务提交到任务当前执行时间,所使用了多少CPU的时钟进行任务计算,那CPU占用率就是指:

CPU占用率= 任务执行消耗的时钟周期/ 从任务提交到当前CPU总的时钟周期。

那么,单个CPU的占用率就是,对于该任务来讲,消耗的时钟周期占OS从该任务提交到目前时间时钟周期的比例。


GPU的利用率。

然而,对于GPU来讲,并不存在时钟周期这样的概念,那GPU的利用率从何而来。

GPU对任务的执行相当于cpu将任务移交给GPU,那GPU就对任务进行执行,不管任务量与任务规模,不具备调度或者其他的CPU特性具有的一些能力。打个比方,比如你有一个电灯,那打开或关闭,就只有两个状态,GPU对涉及的数据缓存在GPU内存中,并且对他们进行并行计算。

那它简单的并行计算能力是有了,然而,它并不具备CPU的很多高级特性,而这些高级特性决定了只有CPU是电脑的神经中枢,而GPU只能是一个计算元件而已。

可以进行一个简单的测试,就明白了GPU与CPU的能力差别有多大。

测试环境:

512G内存,20核,8张V100卡。centos7.3 系统,

GPU卡的单卡数据缓存空间为16G,我运行nbody程序,将计算数据量设定超过16G的时候,
所有的卡停止工作。 这就意味着,这些卡没有任何的数据缓存能力,调度能力,中断能力,等等。

为何会停止工作呢?因为对于CPU来讲,这些都是计算,重复的计算,并且数据量本身并没有达到16G,所以就全部调度到了GPU上面来执行,然而GPU会对数据迭代并缓存,会在几次迭代之后把缓存空间撑满,其实可以看到GPU并不是一次性达到超负荷的,而是停几秒,观测到GPU内存使用空间不断上升,而之后,GPU就停止工作了。

但CPU就不会出现,因为对于用户进程提供的内存空间,都是经过几级映射形成的虚拟空间,所以,几乎就是可以被用户进程认为是无限大的,可以随时进行切换,随时调度执行,让用户感知不到下层的一些变化。


因此,在简单的1+1计算方面,GPU通过几千个具有简单计算能力的核心,实现了许多基本逻辑的并行能力,而对于CPU这个大神,他就全身心的处理复杂的逻辑。打个比方,如果CPU是个教授,不仅会加减乘除,还会解方程,还可以积分微分,还会矩阵迭代等,然而CPU会处理复杂任务能力强,但成本高啊,雇佣一个教授总是处理并行计算中的1+1多不划算啊,把很多复杂的任务都分开来进行,有很多是并行进行1+1运算的,那就不如搞几十个小学生来计算1+1. 现在V00,等都向通用计算能力转型,也可以看到下学生也在向中学生发展。但是它本身的架构决定了它的应用场景,也处理复杂任务的限制。

下图是关于GPU卡不同型号对应不同的参数整理的表格。

GPU卡型号 CUDA核 GPU缓存(GB) 性能 SP(TFLOPS) 功耗W
K80 4992 24 5.6 250
K40 2880 12 4.29 235
M40 3072 12、24 7 250
M4 1024 4 2.2 50-75
M60 4096 16 9.7 225-300
P100 3584 16 9.3 250
P40 3840 24 12 250
P4 2560 8 5.5 50-75
V100 5120 16 14 250

上图可知,P100和V100在堆叠数千计的核的时候,功耗也上去了,正常情况下,一台服务器的功率不超过500W,其实500W已经属于很高了,250W是个什么概念呢,这么说吧,一台机器配有8张V100卡,那么整台机器全部卡在运行的时候,功耗数据就会达到3000W以上。3KW,兄弟,这可不是闹着玩的,就是这样一台机器,耗电达到了3KW,基本上供电都是很难满足的。
这也是P100向V100发展的时候,核心数量不再无限制的增多了,而转向tensor核的研发和应用。

其实想想看,nvidia做的这样一整套系统提供了这么高的计算能力,研发出来这么好的东西,最后P100和V100的何去何从,不知道到最后会不会死在了这个最基本的问题,供电能力上面。


从CPU与GPU利用率,到GPU与CPU差别的思考

相关标签: gpu