1-CPU-GPU异构计算开篇

CPU-GPU异构计算解决的问题与原因

先说结论:解决的是深度学习模型训练在CPU上耗时长的问题,提升深度学习模型的训练效率。

原因(论据):

第一个条件:

深度学习(机器学习的一种)带来了越来越多的商业价值,例如:

广告系统:向特定人推荐更加符合其的需求的广告,提升转化率。

计算机视觉:从视频图像中提取特定信息,在安防等领域实现自动化监控。

还有最近微软-openAI实验室的CHATGPT应用等等。

故深度学习的广泛商业价值导致了对深度学习模型的训练需求越来越多,

第二个条件:

对于深度学习模型的实现来说,深度学习涉及很多向量或多矩阵运算,此类运算的特点为逻辑简单,运算量大,可并行,对于计算核数较少的CPU来说,由于其巨大的运算量,导致训练模型耗时较长,而GPU由于其众多的核数(例如NVIDIA的A30计算卡CUDA核心数3584个),大大加快了此类模型训练的效率,降低时长。

而CPU适合做通用计算,例如复杂的逻辑处理(逻辑跳转,TODO确定:专用的运算处理器等),将这两个硬件结合起来,让CPU负责通用的逻辑部分,让GPU负责大规模的重复计算,从而提升整体的运行效率。

问:

1 为何CPU相较GPU不适合大批量简单运算

答:因为CPU的ALU单元比GPU少,而真正执行计算的为计算机的ALU单元。

什么是ALU单元:arithmetic and logic unit。是能实现多组算术运算和逻辑运算的组合逻辑电路。

2 既然GPU的ALU单元比CPU多,那为何GPU不能替代CPU

答:GPU的控制单元(Control Unit)与Cache对比CPU非常薄弱,导致GPU只适合执行对特定组织的数据的特定的计算,而对所有组织类型的数据,所有类型的计算,其效率会非常低,故GPU无法替代CPU。

进一步的解释:不管CPU还是GPU,其工作都是输入数据->计算->输出数据的循环,

GPU控制器比CPU少且简单,并且GPU缓存比CPU少,如下图所示:


由于GPU控制器比CPU少且简单,导致:

对于CPU而言,其可以处理完A数据,跳转到B数据,继续处理B数据,这导致其可以应付所有数据处理逻辑。

对于GPU而言,由于控制器少,其必须要求一堆数据同时准备好,然后扔到多个核里面统一处理。

PLUS:由于控制器少,并且没有分支预测功能,故其访问内存延迟较高。

由于GPU缓存比CPU少,导致:

对于CPU而言,由于其Cache较大,较丰富,叠加控制器的分支预测功能,导致其访问内存较快。

对于GPU而言,由于其Cache较小,且没有分支预测功能,且有严格的内存对齐要求,导致其访问内存较慢。

得出结论:故如果用GPU替代CPU,那么多的分支跳转逻辑,会让GPU拿不到数据,空余算力,执行程序较慢。

具体详细的解释,可以看这篇问答:为什么GPU不能替代CPU-知乎的回答 

名词解释:

控制单元(Control Unit):负责程序的流程管理。正如工厂的物流分配部门,控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)三个部件组成,对协调整个电脑有序工作极为重要(摘自-百度百科)。

Cache:由于CPU计算非常快,而内存读取与写入比较慢,这导致内存的读写速度制约了CPU的运算速度(内存墙),故在CPU的计算单元与内存之间,增加了一层用于解决内存读取速度慢的Cache,就是这个。

参考目录

深度学习的商业价值

计算机视觉的商业价值

第5章 机器学习基础(3/3)-GPU加速

GPU异构计算和CUDA程序简介

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容