找回密码
 立即注册
查看: 156|回复: 0

一文带你解读:异构计算和GPU布局

[复制链接]
发表于 2024-7-15 17:43 | 显示全部楼层 |阅读模式
一、什么是异构计算?
深度学习训练和推理的过程中,会涉及到大量的向量(vector),矩阵(matrix)和张量(tensor)操作,凡是需要大量的浮点计算,包罗高精度(在训练的时候)和低精度(在推理和部署的时候)。
GPU, 作为一种可编程的加速器,最初设计是用来进行图形措置和衬着功能,但是从2007年开始,英伟达(NVIDIA)公司提出了第一个可编程通用计算平台(GPU),同时提出了CUDA框架,从此开启了GPU用于通用计算的新纪元。
此后,不行胜数的科研人员和开发者,对各种分歧类型的算法用CUDA进行(部门)改写,从而达到几倍到数百倍的加速效果。
尤其是在机器学习,出格是深度学习的浪潮到临后,GPU加速已经是各类东西实现的基本底层构架之一。
二、GPU是什么?
GPU,就如名字所包含的内容,原本开发的目的是为了进行计算机图形衬着,而减少对于CPU的负载。
由于图像的原始特性,也就是像素间的独立性,所以GPU在设计的时候就遵从了“单指令流大都据流(SIMD)”架构,使得同一个指令(比如图像的某种变换),可以同时在多一个像素点长进行计算,从而得到斗劲大的吞吐量,才能使得计算机可以实时衬着斗劲复杂的2D/3D场景。
在最初的应用场景里,GPU并不是作为一种通用计算平台呈现的,直到2007年摆布,一家伟大的公司将GPU带到通用计算的世界里,使得其可以在相对斗劲友好的编程环境(CUDA/OpenCL)里加速通用法式成了可能。
从此之后,GPU通用计算,也就是GPU就成了学界和工业界都频繁使用的技术,在深度学习爆发的年代里,GPU成了敦促这股浪潮非常重要的力量。
三、GPU架构是什么?
GPU,图形显示芯片作为分歧于CPU的设计逻辑和应用场景,有着非常分歧的架构,给大师简单介绍GPU究竟是如何架构,此中的计算核心有哪些特性。
我们可以通俗理解为GPU架构。
首先,GPU有几个分歧的CPU 特性:
1、计算核心:图中的CPU,i7-5960,Intel的第五代Broadwell架构,此中包罗了8个CPU核心(撑持16线程),也就是理论上可以有16个分歧的运算同时进行。
除了8个核心计算单元,大部门的芯单方面积是被3级缓存,内存和控制电路占据了。同样的,来自Nvidia的GTX980GPU,在差不多的芯单方面积上,大部门是计算单元,16个SM,也就是流措置单元,每个流措置单元中包含着128个CUDA计算核心,所以总共来说,有2048个GPU运算单元,相应地这颗GPU理论上可以在一个时钟周期内可以进行2048次单精度运算。



2、计算核心频率:
时钟频率,代表每一秒钟内能进行同步脉冲次数,也是从一个侧面反映一个计算元件的工作速度。下图中对比了个别早期产物,比如Intel的x5650和几款Nvidia的GPU。
可以看出核心频率而言,CPU要远高于GPU。
对于CPU而言,在不考虑能源消耗和制程工艺限制的情况下,追求更高的主频。
但,在GPU的设计中,采用了多核心设计,即使是提高一些频率,其实对于总体性能影像不会出格大。
当然,此中还有能耗方面的考虑,避免发烧过高,也进行了权衡。
还有一个可能的原因是,在一个流措置器中的每个核心(CUDA核心)的运行共享非常有限的缓存和寄存器,由于共享内存也是有性能极限的,所以即使每个GPU核心频率提高,如果被缓存等拖累也是无法展现出高性能的。



3、内存架构:
GPU的多层内存架构包罗全局内存(也就是凡是意义上大部门斗劲存眷的内存,在若干到16GB之间,截至到当前最新),2级缓存,和芯片上的存储(包罗寄存器,和1级缓存共用的共享内存,只读/纹理缓存和常量缓存)。
凡是来说,最高速的共享内存/缓存和寄存器都长短常有限的,比如在Tesla的K20中,只有48K的缓存可以作为共享内存或者1级缓存使用,所以在很多用GPU加速算法实现的过程中,有效地操作这些高速缓存是使得性能提升的非常重要的方面。



四、为什么要使用GPU?
对于并行计算来说,可以非常粗略地分为:

  • 并行指令:也就是多个指令可以同时分配到分歧的计算核心上同时进行,而他们的操作是分歧的,而且他们之间彼此独立,不需要额外的同步和信息共享。
  • 并行数据流:如果数据本身存在的天然的独立性,比如图像中的每一个像素,那么在对这个图像做措置的过程中,同一个指令可以同时感化于每一个像素。在这种情况下,对于完整图像的操作可以并行化。理论上,如果内存不是问题,而且计算单元的数量大于整个图像中总像素点的话,这个操作可以在一个时钟周期内完成。
GPU整体的架构而言,某种意义上是同时撑持以上两种并行模式。
在同一个流措置器中,采用了“单一指令并行数据流的模式”,而在多个流措置器中,同一时间可以派发分歧的指令。
从这一点出发,GPU芯片算是一个非常灵活的架构。一个芯片中,流措置器的个数和此中包含的CUDA核心的数量也是一种面向应用设计时候找到的一个平衡点。
基于深度学习中大部门的操作的天然并行性(大量的矩阵操作),GPU在当下还是一种非常适合的计算平台。一个非常典型的例子就是常见的矩阵相乘(如下图),要计算Z = X×Y,通过并行计算,X和Y中的行向量和列向量的逐元素相乘就可以同时进行,只要得到成果后再进行累加,而且累加的过程中也是可以进行并行化,使得效率有非常大的提高。Nvidia也是制定和开发了一套底层类库,CUBlas便利开发者。熟悉的几大框架(e.g. Tensorflow, PyTorch等)也是遵循和使用了这些并行类库,所以才使得训练和部署性能有了非常多的提高。
五、GPU主要性能指标
GPU的性能主要由以下三个参数构成:

  • 计算能力。凡是关心的是32位浮点计算能力。16位浮点训练也开始风行,如果只做预测的话也可以用8位整数。
  • 内存大小。当模型越大,或者训练时的批量越大时,所需要的GPU内存就越多。
  • 内存带宽。只有当内存带宽足够时才能充实阐扬计算能力。
对于大部门用户来说,只要考虑计算能力就可以了。GPU内存尽量不小于4GB。但如果GPU要同时显示图形界面,那么保举的内存大小至少为6GB。内存带宽凡是相对固定,选择空间较小。
下图描绘了GTX 900和1000系列里各个型号的32位浮点计算能力和价格的对比。此中价格为Wikipedia的建议价格。



可以从图中读出两点信息:

  • 在同一个系列里面,价格和性能大体上成正比。但后发布的型号性价比更高,例如980 TI和1080 TI。
  • GTX 1000系列比900系列在性价比上超出跨越2倍摆布。
如果大师继续斗劲GTX较早的系列,也可以发现类似的规律。据此,保举大师在能力范围内尽可能买较新的GPU。
对于RTX系列,新增了Tensor Cores单元及撑持FP16,使得显卡的可选择范围更加多元。
本文来自《未来现相》原创。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 10:13 , Processed in 0.102601 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表