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

干货 | 深度学习之GPU

[复制链接]
发表于 2022-11-19 16:07 | 显示全部楼层 |阅读模式
目录

  • 深度学习之GPU
  • GPU与GPU简介
  • CPU介绍
  • GPU介绍
  • CPU与GPU的区别
  • GPU在深度学习大放异彩的关键 – CUDA
  • GPU的体系结构
  • GPU的物理体系结构
  • GPU的逻辑体系结构
  • GPU的实战
  • CUDA编程实战
  • 基于GPU的加速
  • 参考资料

深度学习之GPU
作为近年来最火热的行业——人工智能,在烧钱方面同样不遑多让。众所周知,人工智能的训练和推理都需要海量的高性能计算,做深度学习的朋友都知道,现今深度学习领域的SOTA模型往往需要巨大的显存空间,这直接导致了深度学习的研究者们需要配置更强劲的 GPU 设备,否则就会分分钟面临显存与算力不足的窘境。


A100 80GB相对于A100 40G来说在GPU芯片上没变化,依然是A100核心,6912个CUDA核心,加速频率1.41GHz,FP32性能19.5TFLOPS,FP64性能9.7TFLOPS,INT8性能624TOPS,TDP 400W。变化的主要是显存,之前是40GB,HBM2规格的,带宽1.6TB/s,现在升级到了80GB,显存类型也变成了更先进的HBM2e,频率从2.4Gbps提升到3.2Gbps,使得带宽从1.6TB/s提升到2TB/s。

GPU与GPU简介
GPU有一定的能力,但是能力范围有限,而且他挑活,相对于CPU的任劳任怨,他只想做能出成绩的,对于其他一概不理。延伸来说吧,还有一些人是SBPU,啥叫SBPU呢,就是能力也不咋地,抢别人的功劳一流,但是自己屁也做不出来,靠着不光彩的手段和龌龊的计量,占据别人的功劳为己用,然后狂吹PPT。

CPU介绍
2.1 CPU介绍



中央处理器(CPU),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。中央处理器主要包括两个部分,即控制器、运算器,其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。电子计算机三大核心部件就是CPU、内部存储器、输入/输出设备。中央处理器的功效主要为处理指令、执行操作、控制时间、处理数据。

GPU介绍
2.2 GPU介绍


图形处理器(英语:graphics processing unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。GPU的生产商主要有NVIDIA和ATI。

CPU与GPU的区别


首先,针对GPU 和 CPU的各自特点进行分析,阐述下GPU相对于CPU为何在并行计算上具备优势。

1.任务模式
CPU 由专为顺序串行处理而优化的几个核心组成
GPU 则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。同时CPU相当的一部分时间在执行外设的中断、进程的切换等任务,而GPU有更多的时间并行计算。

2.功能定位
GPU在渲染画面时需要同时渲染数以百万记的顶点或三角形,故GPU的设计是可以充分支持并行计算。
CPU不但要承担计算任务还有承担逻辑控制等任务。

3.系统集成
GPU作为一类外插设备,在尺寸、功率、散热、兼容性等方面的限制远远小于CPU,这样可以让GPU有较大的显存和带宽。

GPU在深度学习大放异彩的关键 – CUDA
GPU已经存在了很长时间,那么为何最近几年才开始大放异彩呢。个人认为主要原因有以下两个:
最近几年神经网络深度学习对算力的要求不断攀升,特别是CV、NLP领域的大量超算操作。
以前NVIDIA等厂商没有提供GPU – 深度学习之间的桥梁,把GPU真正用到深度虚线上有很大的成本,直至CUDA的出现,顺利的打通了这个桥梁。给GPU的盛行,提供了坚实的基座。

GPU的体系结构
GPU的物理体系结构
仍然以英伟达的A100 GPU为例,从整体上来说A100具备6192个Core,所以大家可以这么理解,他是一个超级的CPU,可以并行执行6192个核心。如下图


GPU的基础单位是SM,实际上在 NVidia 的 GPU 里,最基本的处理单元是所谓的 SP(Streaming Processor),而一颗 NVidia 的 GPU 里,会有非常多的 SP 可以同时做计算;而数个 SP 会在附加一些其他单元,一起组成一个 SM(Streaming Multiprocessor)。几个 SM 则会在组成所谓的 TPC(Texture Processing Clusters)。
既然SM这么重要,那么我们就看看SM的硬件


SM的相关结构



GPU的逻辑体系结构
3.2 GPU的逻辑体系结构


如果把 CUDA 的 Grid - Block - Thread 架构对应到实际的硬件上的话,会类似对应成 GPU - Streaming Multiprocessor - Streaming Processor;一整个 Grid 会直接丢给 GPU 来执行,而 Block 大致就是对应到 SM,thread 则大致对应到 SP。当然,这个讲法并不是很精确,只是一个简单的比喻而已。
kernel:Thread执行的内容/代码/函数
Thread:执行kernel的最小单元,调度到CUDA Core中执行
Warp:GPU 有很多 Streaming Multiprocessors, 用来管理调度 Thread Block
Thread Block:多个Thread组合,被调度到SM中执行。一个SM可以同时执行多个Thread Block,但是一个Thread Block只能被调度到一个SM上。GPU 有很多 Streaming Multiprocessors, 用来管理调度 Thread Block。
Grid:多个Thread Block的组合,被调度到整个GPU中执行
同时,Thread、Thread Block和Grid由于所处层次不同,他们可以访问的存储资源也不同。如Thread只能访问自身的寄存器,Thread Block可以访问SM中的L1缓存,而Grid则可以访问L2缓存和更大的HBM显存。

GPU的实战





GPU的运行主要是四步:
从Host拷贝数据到Device
CPU发送数据处理执行给GPU;
把需要Device执行的kernel函数发射给Device
从Device拷贝计算结果到Host

CUDA编程实战
这里是如何体现出GPU的威力呢,举个例子:如果GPU中的每个核心都有唯一的ID,比如0号核心执行C[0] = A[0] + B[0],127号核心执行C[127] = A[127] + B[127]就好了。
int i = blockDim.x * blockIdx.x + threadIdx.x;主要是计算线程ID,那么关于线程的编码是如何呢,请看下面的简介。

基于GPU的加速
整个GPU的东西还是比较多的,这块我就先简单写下吧,后续会在开个专题,这里先简单列几条:
算子融合
空域滤波
High Level Graph Opt
CPU & GPU Filter

参考资料
https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-24 19:46 , Processed in 0.111292 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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