从CPU与GPU利用率,到GPU与CPU差别的思考
注:本版关于GPU的内容均是是经过实测数据提供,具有版权所有
简介: GPU与CPU貌似差别不大的两个东西,然而,从逻辑结构,到原理,到性能,到功能,再到在物理设备中扮演的角色来讲,压根就不是同一个东西,甚至可以说,完全不可以类比。
首先考虑GPU利用率:
因为要对GPU物理设备进行压力测试和功耗测试,那么就需要设定GPU利用率分别为25%,50%,75%,100%类似的参数,那么这样的利用率,又意味着什么东西的利用率呢?
为了了解GPU,那么先认识一下CPU利用率相关的内容。
CPU结构介绍
我们都知道,CPU是由运算器和控制器两部分组成。
运算器就是执行加减乘除运算的 与,或,非门,不管移交什么样的命令,到最后都是转换成了这样最朴素的运算操作。他所执行的所有命令,都是通过控制器,传送要执行命令的地址,从地址中取数据,
如下图,参考:http://blog.csdn.net/yang_yulei/article/details/22529437
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利用率较低,CPU利用率很低问题总结与分析。
1.PyTorchGPU利用率较低问题原因: 在服务器端或者本地pc端, 输入nvidia-smi 来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util),然 ...
- 深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析
在深度学习模型训练过程中,在服务器端或者本地pc端,输入nvidia-smi来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util),然后采用top来查看CPU ...
- GPU利用率与使用率
GPU利用率 广义的GPU利用是指对GPU利用率效率,包括GPU空间和时间上的利用效率. 狭义的GPU利用率是指GPU时间片上的利用率: GPU可用的物理资源有哪些? GPU可利用资源:SM (计算单 ...
- 聊聊GPU利用率那些事
引言 众所周知,GPU本身的计算能力是越来越强大,特别是新一代的NVIDIA AMPERE架构发布之后,又一次刷新了大家对AI算力的认知.目前,确实有不少大规模分布式训练对更大算力的渴求是极其强烈的, ...
- 电脑有GPU,安装tensorflow-GPU后运行代码,GPU利用率基本为0,而CPU利用流程占满了
注意:若程序刚开始运行以下代码时,结果显示无可用GPU,无其他毛病(如tensorflow版本和cuda,cudnn版本不对应,电脑无可用GPU等)前提下,应将程序关闭重启,之后再运行下面的代码,看结 ...
- tensorflow gpu利用率为0_训练效率低?GPU利用率上不去?快来看看别人家的tricks吧...
前言 首先,如果你现在已经很熟悉tf.data+estimator了,可以把文章x掉了╮( ̄▽ ̄"")╭ 但是!如果现在还是在进行session.run(..)的话!尤其是苦恼于G ...
- 跑python gpu利用率低_训练效率低?GPU利用率上不去?快来看看别人家的tricks吧~...
前言 首先,如果你现在已经很熟悉tf.data+estimator了,可以把文章x掉了╮( ̄▽ ̄"")╭ 但是!如果现在还是在进行session.run(..)的话!尤其是苦恼于G ...
- 多个cuda 被单进程沾满_报名 | 提高GPU利用率,听英伟达专家分享这个CUDA工具
随着 NVIDIA GPU 计算性能的不断提升,如何提升 GPU 利用率是开发者普遍关心的问题之一.从 Kepler 架构开始,NVIDIA GPU 支持多个 CUDA kernels 函数的并发执行 ...
- 训练效率低?GPU利用率上不去?快来看看别人家的tricks吧~
前言 首先,如果你现在已经很熟悉tf.data+estimator了,可以把文章x掉了╮( ̄▽ ̄"")╭ 但是!如果现在还是在进行session.run(..)的话!尤其是苦恼于G ...
最新文章
- 搞懂OpenLDAP
- 开年赢好运!程序员加油包等你免费拿
- thinkphp 第二节
- php调用不存在的方法,php如何调用不存在的方法
- (转)Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean
- redis数据批量导入导出
- java编程字_Java编程基本概念
- 多位院士、院士候选人入选,132人拟获表彰!
- 工作分析文献综述_北大教授分析了124 篇不合格硕士学位论文,发现了6个典型问题!...
- 吴征:只为寻找到杨澜
- ios uitableview 积累
- arduino编码器计数_【Arduino】旋转编码器的Arduino使用方法
- Swift -- AVPlayerViewController播放本地视频并且通知重复播放
- 实用金属材料手册_各种金属材料单位重量计算公式(汇总版)
- 【WINDOWS / DOS 批处理】添加注释
- Dorado 7 Ajax 交互处理
- 手机app通用模板蓝色系用户登录页面
- 安卓手机软件性能测试,手机性能评测软件
- C# 扫描枪扫描条形码与二维码
- js之捕捉冒泡和事件委托
热门文章
- js 判断某个条件和另一个条件相等时返回需要的数据
- csgo本地服务器修改武器伤害,CSGO武器伤害值计算告诉你是怎么死的
- 盗墓诡闻录服务器维护,幽行玄城摸金校尉职业厉不厉害 盗墓诡闻录摸金校尉技能解析...
- JPA的动态SQL IF判断
- ZZULIOJ.1108: 打印数字图形(函数专题)
- Unity 加载StreamingAssets 文件夹下批量图片
- echarts 图例文字添加背景
- 华为鸿蒙是系统还是处理器,华为将发布MatePad Pro:搭载鸿蒙系统,麒麟9000处理器...
- msf连接mysql数据库_msf链接数据库
- 当当api接口 Alex19970108016微信同步