GPU的功能和架构GPU基本介绍GPU概念简介GPU 图形处理器graphics processing unit又称显示核心、视觉处理器、显示芯片是一种专门在个人电脑、工作站、游戏机和一些移动设备如平板电脑、智能手机等上做图像和图形相关运算工作的微处理器。GPU的诞生NVIDIA公司在1999年8月31日发布GeForce 256图形处理芯片时首先提出GPU的概念。GPU之所以被称为图形处理器最主要的原因是因为它可以进行几乎全部与计算机图形有关的数据运算而这些在过去是CPU的专利。目前计算机图形学正处于前所未有的发展时期。近年来GPU技术以令人惊异的速度在发展。渲染速率每6个月就翻一番。性能自99年多年来提高了上千倍与此同时不仅性能得到了提高计算质量和图形编程的灵活性也逐渐得以改善GPU宏观物理形态由于纳米工艺的引入GPU可以将数以亿记的晶体管和电子器件集成在一个小小的芯片内。从宏观物理结构上看现代大多数桌面级GPU跟硬币同数量级大小。当GPU结合散热风扇、PCI插槽、HDMI接口等部件之后就组成了显卡。显卡不能独立工作需要装载在主板上结合CPU、内存、显存、显示器等硬件设备组成完整的PC机。GPU的功能图形绘制GPU最传统、最基础、最核心的功能。为大多数PC桌面、移动设备、图形工作站提供图形处理和绘制功能。物理模拟GPU硬件集成的物理引擎PhysX、Havok为游戏、电影、教育、科学模拟等领域提供了成百上千倍性能的物理模拟使得以前需要长时间计算的物理模拟得以实时呈现。海量计算计算着色器及流输出的出现为各种可以并行计算的海量需求得以实现例如CUDA。AI运算近年来人工智能的崛起推动了GPU集成了AI Core运算单元反哺AI运算能力的提升给各行各业带来了计算能力的提升。其它计算音视频编解码、加解密、科学计算、离线渲染等都离不开现代GPU的并行计算能力和海量吞吐能力。GPU历代架构发展Fermi费米架构包含GTX4、GTX5两个系列Kepler开普勒架构 GTX6系列Maxwell麦克斯韦架构 GTX9系列和GTX750Pascal帕斯卡架构GTX10系列Turing图灵架构 RTX20系和GTX16系列Ampere安培架构 RTX30系列Adm安达架构 RTX40系列GPU与CPU的区别绿色方框computational units(可计算单元) 或称之为computational cores(计算核心)橙色方框memories内存黄色方框control units控制单元Computational Units(cores)的区别CPU的Computational units计算能力强、数量少GPU的Computational units计算能力弱、数量多CPU的优势在于核心的处理能力、计算能力强拥有out-of-order exectutions乱序执行功能 GPU的优势在于大规模并行处理数据的能力采用SIMD编程方式各个Core的计算 操作在相同的时间内进行(MAD与FMA) MAD指令实际是计算A*BC的值GPU的core只能做一些最简单的浮点运算,例如 multiply-add(MAD)或者 fused multiply-add(FMA)指令核心区别MAD与FMA的不同目的都是求解A*BCMemory的区别CPU的memory系统一般基于DRAM其内存系统中的cache可减少CPU访问DRAM的时间 GPU中的内存DRAM被称为全局内存或者GMEM其内存大小比CPU的DRAM小的多GPU左上角的小 橙色块是GPU的cache段GPU与CPU缓存机制不同在4.3中说明GPU底层架构在特定的应用场 合多个core之间是不需要的通讯的 例如在图像缩放中core与core之间不需要任何协作他们的任务是完全独立因此简单的并行操作即可。但也存在许多场合需要多个core之间相互通讯协作例如数组求和问题 。GPU数组求和问题长度为8的数组两两并行求和计算只需要3次就可以计算出结果顺序计算则需要8次。如果按照两两并行相加的算法N个数字相加那么仅需要log2Nlog_2Nlog2​N次就可以完成计算。GPU只需四个core就可以完成长度为8的数组求和算法。多个core之间需共享一段内存空间进行读/写操作以此完成数据交互。多个core之间协作方法将各类GPU的core分类为多个组形成多个流处理器(Streaming Multiprocessors )简称为SMs。GPU总体架构(以图灵架构为例)绿色的块即为SM(一组core的集合)SM(以图灵架构为例)其存在不同类型 的CORE。主要分为INT32,FP32TENSOR CORES等。FP32 Cores执行单进度浮点运算FP64 Cores执行双进度 浮点运算Integer Cores执行整数操作Tensor Cores执行张量积算加速常见 的深度学习操作GPU的缓存机制及多个core之间的通信协作在四个SM块的底部有一个L1 Cache允许各个Core访问在L1 Cache中每个SM都有一块专用的共享内存。L1 cache大小有限速度非常快比访问GMEM快得多。L1 Cache拥有两个功能一个是用于SM上Core之间相互共享内存另一个则是普通的cache功能。当Core需要协同工作编译器编译后的指令会将部分结果储存在共享内存中以便于不同的core获取到对应数据。当用做普通cache功能的时候当core需要访问GMEM数据的时候首先会在L1中查找如果没找到则回去L2 cache中寻找 如果L2 cache也没有 则会从GMEM中获取数据L1访问最快 L2 其次GMEM最慢。GPU未来硬件升级更多运算单元更多存储空间更高并发更高带宽更低延时che中寻找 如果L2 cache也没有 则会从GMEM**中获取数据L1访问最快 L2 其次GMEM最慢。GPU未来硬件升级更多运算单元更多存储空间更高并发更高带宽更低延时… …