深度学习硬件基础:CPU与GPU

不太懂硬件,关于CPU的知识还是在大学计算机中学的,没有太多的理解。这篇文章是找了很多文章进行的整理,逻辑性可能不是很强.随着在深度学习上学习和研究的深入,我也将记录更多笔记。

CPU和GPU

1. CPU

1. 1 CPU定义——少量复杂运算

CPU:叫做中央处理器(central processing unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。[^3]

可以形象的理解为有25%的ALU(运算单元)、有25%的Control(控制单元)、50%的Cache(缓存单元)

1.2 CPU组成

CPU主要包括:

  • 运算器(ALU,Arithmetic and Logic Unit)
  • 控制器(CU,Control Unit)
  • 缓存(Cache):包括若干个寄存器和高速缓冲存储器及实现它们之间联系的数据、控制及状态的总线。
    从上面的叙述我们可以看出,CPU主要包含运算逻辑器件、寄存器部件以及控制部件等。[^4]

1.3 CPU执行流程:

取指令阶段

  • cpu从程序计数器取得指令

指令译码阶段

  • 通过指令总线将指令送到译码器

执行指令阶段

  • 将译码之后的指令交给时序发生器和操作控制器
  • 运算对数器对数据进行计算

访存数据阶段

  • 通过数据总线将数据保存至数据缓存器

结果回传阶段

  • 主要写到CPU的内部寄存器之中

2. GPU

2.1 GPU定义——大量简单运算

GPU:叫做图形处理器。图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。【^5】

可以形象的理解为90%的ALU(运算单元),5%的Control(控制单元)、5%的Cache(缓存单元)

2.2 GPU组成


3. CPU与GPU不同

3.1 CPU和GP体系结构的不同:

  GPU 设计目的和 CPU 截然不同。CPU,如 Intel i5 或 i7 处理器,其内核数量较少,专为通用计算而设计,因此具有复杂的控制单元;而 GPU,是一种特殊类型的处理器,具有数百或数千个内核,经过优化,可并行运行大量计算,主要用来处理计算性强而逻辑性不强的计算任务,GPU 中可利用的处理单元可以更多的作为执行单元。因此,相较于 CPU,GPU 在具备大量重复数据集运算和频繁内存访问等特点的应用场景中具有无可比拟的优势。

  由于图形渲染任务具有高度的并行性,因此 GPU 可以仅仅通过增加并行处理单元和存储器控制单元便可有效的提高处理能力和存储器带宽。虽然 GPU 在游戏中以 3D 渲染而闻名,但它们对运行分析、深度学习和机器学习算法尤其有用。GPU 能够让某些计算比传统 CPU 上运行相同的计算速度快 10 倍至 100 倍。

  GPU 是并行编程模型,和 CPU 的串行编程模型完全不同,导致很多 CPU 上优秀的算法都无法直接映射到 GPU 上,并且 GPU 的结构相当于共享存储式多处理结构,因此在 GPU 上设计的并行程序与 CPU 上的串行程序具有很大的差异。GPU 主要采用立方环境的材质贴图、硬体 T&L(Transform and Lightning)、顶点混合、凹凸的映射贴图和纹理压缩、双重纹理四像素 256 位的渲染引擎等重要技术。

  • CPU 串行运算
  • GPU并行运算

3.2 CPU显存与CPU主存的区别

一般来说,CPU 和主存之间的带宽只有数十 GB/s。例如:Intel Xeon E5-2699 v3,内存带宽达到 68GB/s((2133 * 64 / 8)*4 MB/s)。

而 GPU 的高速缓存虽然较小,高速缓存与显存(上图中的 Memory)之间的带宽可以达到数百 GB/s,比如 P40 的显存带宽为 346GB/s,远远大于 CPU 的内存带宽。但是,相对于 GPU 的计算能力,显存仍然是性能瓶颈的所在。


4.单机多卡并行

4.1 多卡扩展

  • 一台机器上可以安装多个GPU(1-16)
  • 在训练和预测的时候,我们将一个小批量计算切分到多个GPU上来达到加速目的
  • 常用的切分方案:
    • 数据并行
    • 模型并行
    • 通道并行(数据+模型并行)

4.2 数据并行与模型并行

  数据并行,即每个计算单元都保留一份完整的模型拷贝,分别训练不同的数据,经过一个Iteration或若干个Iteration后,把各个计算单元的模型做一次同步。这是最常见的深度学习训练方式,好处在于逻辑简单、代码实现方便。

  1. 读取一个数据块
  2. 拿回参数
  3. 计算梯度
  4. 发出梯度
  5. 更新梯度

  模型并行,即各个计算单元存储同一层模型数据的不同部分,训练相同的数据。相对于数据并行,因为各个运算单元每训练完一层神经网络,就必须要同步一次,频繁的同步通信导致系统不能充分地利用硬件的运算能力,所以更为少见。但是在一些业务场景下,Softmax层需要分类的类别可能会有很多,导致Softmax层太大,单个计算单元无法存储,这个时候,需要把模型切割成若干部分,存储在不同的运算单元。模型并行常见于NLU、推荐、金融等领域。

4.3 数据并行VS模型并行

  • 数据并行:将小批量数据分成n块,每个GPU拿到完成参数计算一块数据的梯度
    • 通常性能更好
  • 模型并行:将模型分成n块,每个GPU拿到一块模型计算其前向和反向的结果
    • 通常用于模型大到单个GPU中放不下的情况

参考目录

[1] CPU和GPU到底有什么区别?

[2] CPU 与 GPU 对比:两者有什么区别?

[3] CPU百度百科

[4] 从CPU、GPU再到TPU,Google的AI芯片是如何一步步进化过来的?

[5] gpu百度百科

[6] https://zh-v2.d2l.ai/chapter_deep-learning-computation/use-gpu.html

[7] 数据并行:单机多卡提高效率

[8] 模型并行

  • 10
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

留小星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值