图形处理器
图像和图形相关工作的微处理器
图形处理器(Graphics Processing Unit,GPU)又称显示核心、视觉处理器、显示芯片,是一种浮点性能强大的通用并行处理器件。
英伟达公司在1999年8月发布了 GeForce256图形处理芯片,首先提出GPU的概念。Geforce256的核心技术有硬件级的几何与光照转换引擎纹理压缩、凹凸映射、双重纹理等。同时期的OpenGL和DirectX 7也提供了硬件顶点变化的编程接口。随后GPU进入高速发展时期。在2009年后才在手机等手持移动设备中崭露头角。同时,由于图形渲染的高度并行性,GPU没有CPU庞大的控制单元,而是通过增加执行单元和存储器控制单元的方式来提高并行处理的性能以及存储带宽。因此,GPU的数据处理能力远远超过了一般的通用处理器。
现代图形处理器已具有高度的并行计算能力和极高的传输带宽,从单纯的图形渲染加速器发展为通用的高性能并行计算芯片,广泛地应用在游戏、虚拟现实、科学计算、人工智慧和机器人等众多领域。
发展历程
本文以图形处理器发展过程中不同类型为线索介绍GPU的发展历程。
图形显示
图形处理设备最早可以追溯到二十世纪七十年代。富士通株式会社公司生产的视频转换器和Namco游戏公司生产的专用图形处理设备被广泛应用到街机游戏机,拉开了图形处理设备发展的序幕。八十年代,日本电气公司是最早利用大规模集成芯片技术生产出图形处理设备的企业,并降低了图形处理设备的设计生产成本。随后,Williams Electronics公司生产的图形处理芯片可以快速处理16色位图。Commodore Amiga公司生产的图形处芯片不仅实现了对位图的加速处理,还可以实现线条绘制和面积填充等图形功能,但是它需要利用自己专门的指令集。德州仪器也开发出第一款集成了片上图形芯片的微处理器。之后两年中,Sharp公司和富士通株式会社公司生产的图形处理芯片分别可以支持16位和24位的调色板。Namco和Taito株式会社游戏公司在1988年开发出了第一款专用的3D多边形处理卡,并用于他们的街机系统中。
2D、3D图形加速
九十年代,2D图形加速已经成为图形处理芯片的重要特性之一。随着生产制造工艺的发展,图形处理芯片的集成度也得到逐步提升。为了更好的满足2D图形处理任务的应用需求,出现了专门的图形编程接口API,其中以微软的WinG和Direct Draw为典型代表。这个时期,3D图形的应用也得到逐步增长,催生了具有3D图形处理能力的图形处理设备的产生。为了开发个人计算机的CAD市场,1994年matrox公司推出MatroxIm pression。它是第一个PC机上的3D图形加速器。而在PC机上3D图形芯片的真正突破是1996年Interactve公司推出的Voo-doo芯片,开创了PC机可以代替昂贵的图形工作站的新时代。富士通株式会社公司在1997年发布了个人电脑所用的第一款3D几何处理器。同年,Mitsubishi公司生产了一款全功能的图形处理芯片,支持图形的变换和光照功能。1999年英伟达发布了世界上首款集成了变换、光照、三角形构成、裁剪、纹理和染色引擎的图形处理器GeForce 256,开启了真正意义上的GPU研制历程。
统一渲染
进入到二十一世纪,GPU进入了快速发展阶段。2001年,英伟达推出了第一款具有可编程渲染功能的GPU,即GeForce3,它可以实现对像素和几何顶点的可编程处理。但是,由于像素和几何顶点处理的频率不一样,GeForce3中设计了不同的染单元,对它们进行分别处理。2003年开始,英伟达和ATI发布的新产品都同时具备了可编程顶点处理和可编程像素处理器,具备了良好的可编程性。从此,开发人员可以根据自己的需求灵活的控制渲染过程,编程时无需再过度关注于GPU的其他硬件特性,重点关注可编程性即可。从此,GPU又多了一个可编程的属性,也叫做可编程图形处理单元。2006年,NVIDIA公司推出了GeForce 8800 GTX,它首次使用统一的渲染部件代替了各种可编程部件,同时解决了可编程GPU片上的负载均衡问题成为当今通用图形处理器的雏形,另外GeForce 8800 GTX不仅支持OpenGL和DirectX 10还推出了CUDA编程模型,使得程序员对GPGPU的使用更加方便简单。
通用计算
2007年英伟达公司推出了全新的CUDA架构(Compute Unified Device Architecture,统一计算设备架构)改变了GPU的发展轨迹,使GPU不再受编程模型和开发方式的限制,从单一的图形渲染领域走向了通用计算领域,并且凭借其强大的计算能力在通用计算领域占据了重要地位。2008年,NVIDIA推出了基于GT200结构的GPU。GT200体系结构在G80体系结构的基础上进行相应改进了,主要表现在加入了对共享存储器的原子操作和双精度浮点运算的支持,放宽了对存储器的对齐访问。2009年,AMD计划推出了它的GPU—Firestream9270,其特点是具有更高的主频,存储为GDDR5,并且支持OpenCL。但同时功耗大幅增加,已经接近英伟达 GT200系列GPU的功耗水平。与此同时,NVIDIA在同年11月份,对外发布了其第三代统一体系结构的产品Fermi,加入了更多的SM数目和寄存器器、共享存储器等硬件资源,线程块调度机制也得到了进一步的优化,GPGPU的通用计算能力得到了显著提升。GPGPU的发展从此进入了快车道。2011年TESLA的GPU计算卡发布,标志着NVIDIA将正式用于计算的GPU产品线独立出来,凭借着架构上的优势,GPU在通用计算及超级计算机领域,逐渐取代CPU成为主角。2018年,英伟达 发布了最新的Turing架构,其集实时光线追踪、AI、模拟和光栅化于一身,为计算机图形带来了根本性变革,让实时光线追踪首次成为现实。
近些年,随着制造工艺的进步以及编程。模型的优化,使得GPU并行计算功能越来越强大,GPU也从最初的专用图形加速器发展成为现在的通用加速器,广泛应用于众多领域,包括高性能计算、图像处理、深度学习、计算机视觉和数据分析等领域。
硬件架构
GPU体系架构主要由两部分组成,分别是SPA流处理器阵列(Scalable Streaming Processor Array)和存储器系统,这两部分之间是由一个片上互联网络连接起来的。SPA和存储器系统都可以独立的进行扩展。本文以英伟达在2022年发布的全新的Ada Lovelace架构(以下简称“Ada架构”)为例介绍GPU的硬件架构。
AD102核心
Ada架构目前最完整、规模最大的芯片被称为AD102。完整版本的AD102芯片拥有12个GPC(Graphics Processing Clusters,图形处理器集群),每个GPC拥有6个TCP(Texture Processin gClusters,纹理处理集群),每个TPC拥有2个SM(Streaming Multiprocessors,流式多处理器)和1个Poly Morph引擎,因此1个AD102总计拥有72个TPC、144个SM。存储部分采用的是384bit的GDDR6X控制器,一共布置了12个显存控制器,每个显存控制器可以控制32bit位宽。英伟达特别提示,考虑到FP64相关代码比如张量(Tensor)代码的运行,英伟达还为AD102增加了288个FP64单元,每个SM核心2个。
SM单元
AD102的每个SM单元包含128个CUDA内核,1个ADA第三代RT核心以及4个ADA第4代张量核心、4个纹理单元、256KB寄存器、128KB的L1/共享内存,和之前的产品一样,L1/共享内存也可以根据使用情况进行配置。每个SM拥有128KB的L1CPU缓存,AD102总计拥有18432KB的L1缓存。Ada架构在缓存部分的变化主要体现在L2缓存。AD102目前拥有98304KB的L2缓存,也就是96MB,相比之前GA102的6144KB也就是6MB,大约是后者的16倍。巨大的缓存为所有GPU相关操作,如光线追踪、路径追踪等复杂的操作都带来益处。
光线追踪模块
传统的实时3D图形计算采用的是光栅化的方式,但由于光栅化计算并不是对物体和光线进行了真正的交互处理,所以存在非常多的局限性,如果依旧在光栅化的条件下解决这些问题需要高昂的代价。在这种情况下,通过引入光线追踪,让光线在3D场景中通过碰撞和反射、折射来生成真正的数据和信息,就不失为一个很好的解决手段了。在没有专用的加速硬件时,光线追踪的计算需要由SM单元进行一次又一次的循环计算才能完成,而RT核心(即专门用于光线追踪计算的光追核心)则可以将光线追踪计算中最复杂的循环部分被大幅度加速,其效率相较SM单元提升了数倍乃至数百倍之多。具体到Ada架构中,其RT核心能够以高达每秒10 Giga Rays 的速度对光线和声音在3D环境中的传播进行加速计算。
在光线追踪计算中,光线投射到物体表面,会先查询开发人员是否标注了“不透明”状态,如果有,则将这些计算合并到光线追踪后续计算中。然而,如果没有标注,那么RT核心就会要求着色器检查到底是透明还是不透明,这将占据SM的线程并产生性能需求,甚至会产生多次调用。在Ada架构中,英伟达设计了一个名为Opacity Micromap(不透明微图单元)来进行透明状态类似的检查。Opacity Micromap在运行中会首先生成一个由微小三角形组成的网格,然后用这个网格来标记物体透明或不透明。具体来说,RT核心会直接判断光线和Opacity Micromap三角形的交点,这个交叉点的重心坐标可以用于确定当前三角形覆盖的区域是透明、不透明或者未知。在RT核心中拥有Opacity Micromap后,遍历性能在拥有alpha通道的几何图形中,性能提高了一倍。
Displaced Micro-Mesh Engine是第3代RT核心的又一个重要功能,可以称其为置换微网络引擎(DMME)。在DMME出现之前,系统需要调用RT模块针对目标物体的每一个三角形进行光线追踪交叉测试,但是在DMME出现之后,系统只需要把任务交给DMME,DMME根据基底三角地(简略模型)和位移图的相关参数,自动生成DMM并完成光线追踪的三角形交叉计算,然后将数据返回给系统,这样就大大降低了系统的压力,提升了效率。在DMME出现后,可以利用空间一致性进行数据压缩,并且会根据其结构和LOD(Level Of Detail)情况(或者不同的动画细节等级)进行高效率渲染。在光线追踪计算时,DMME会避免BVH的大量时间和空间成本;在光栅化计算时,DMME将会根据LOD情况进行渲染,给出正确精度的结果数据。
在Ada架构中,英伟达设计了一种新的调度系统,被称为Shader Execution Reordering(着色器执行重排序,SER)来解决执行分歧和数据分歧等问题。SER的作用是当分歧发生时,它可以重新调度着色器的工作排序,从而避免部分着色器在等待中浪费算力和电能,以获得更好的效率和性能。
第四代张量核心
Ada架构中的第四代张量核心(Tensor Core)的作用是用于加速矩阵乘法累加(MMA)计算,这类张量计算在高性能计算机和AI计算中广泛存在。在第四代张量核心中,英伟达新增计算格式FP8和Transformer Engine。其中FP8支持更高效率的数据管理,Transformer Engine不仅可以通过自动分析计算结果输出值的信息,判断接下来的神经网络计算内容和所需要的精度,还可以自动转换现有数据至更高效的数据格式并将其送入计算引擎。这些优势大幅度提升Transformer模型计算的效能。在Transformer Engine和FP8数据格式的加速下,可以在人工智能的大型语言模型训练上提供9倍的训练加速和30倍的推理加速。
编解码器
Ada架构中的第8代NVENC硬件编码器整合了对AV1视频编码格式的支持,此前Ampere只支持AV1的解码,而不含编码。新的AV1编码器在效率上比H.264编码器提高了40%。 在解码功能方面,Ada架构的NVDEC解码器支持MPEG2、VC-1、H.264(AVCHD)、H.265(HEVC)、VP8、VP9和AV1等视频格式的解码,还支持8K@60Hz视频的解码。另外,英伟达还加入了AI功能以方便视频制作。
工作原理
GPU是组成计算机硬件系统的重要一环,主要负责计算机显示图像输出。本章节重点介绍的是GPU在3D图形渲染中的工作流程。GPU通过与CPU的精密配合,绘制出一幅幅精美的画面,工作流程主要包括几何处理,光栅化,像素渲染,ROP输出这四个步骤。本文就通过对这四个步骤的详细阐述来展示GPU是如何进行3D渲染工作的。
整个流程的第一步是几何处理,它的作用是把抽象的数学公式转化为电脑屏幕里的形象轮廓。通过这些数学公式可以将程序员脑海中的复杂图像,在一个三维坐标系中展现出来,把物体表面一些重要的关键点在通过数学公式映射在坐标系中,并通过一定的规则将这些离散的坐标点连起来,这样就形成了一个在虚拟空间中的物体几何轮廓,最后在通过对相应坐标点的位置变换,从而实现物体运动的表现。这些处于虚拟空间中的坐标点我们称之为多边形顶点,而GPU的工作就是将代码中所描述的顶点参数映射到虚拟空间的坐标系中。
经过几何处理的步骤后,模型的轮廓就可以确定了。之后需要根据程序要求,对模型进行更加精细化的处理,如曲面细分Tesselation,就是利用GPU硬件加速,将现有3D模型的三角形拆分得更细小、更细致,也就是大大增加三角形数量,使得渲染对象的表面和边缘更平滑、更精细。但是由于电脑屏幕显示的均是二维图像信息,因而接下来的步骤就是如何将复杂的三维世界物体模型映射到二维平面中表达出来,这就是GPU中另一个单元Rasterizer所要完成的工作。
Rasterizer光栅化是通过透视原理将分布散三维空间的立体坐标信息映射到二维平面直角坐标系中。由于电脑所使用的显示器是一个二维平面结构,无法直接展示出三维空间的全部信息,所以需要通过透视原理将三维空间中的景深信息表达出来,这也就是我们所说的图像立体感。同时为了实现物体信息的像素化,Rasterizer这个步骤也是必不可少的。Rasterizer通过一系列的数学变换将三维坐标转换为平面二维坐标,这个过程中图像原本的Z轴坐标信息将会被单独提取出来存放入Z-Buffer中,作为景深值。
经过光栅化操作后物体的轮廓信息就已经被定格在平面像素中,那么接下来的工作就是将物体的颜色信息填充到图像中,这个部分的工作又称为材质操作,而这一过程将由GPU中的PixlShader完成,它将赋予图像鲜活的生命力。材质操作就是GPU给物体填色的过程,但是由于硬件限制,实际操作中无法象现实生活中那样直观地操作,需要借助代码去完成,而GPU的工作就是将代码转换为人们能够识别的颜色信息,继而填充在图像上,最终呈现在显示屏上。然而3D图像生成过程到这里还没有结束。为了解决图像展现在屏幕上会非常的死板的问题,需要将真实世界的光影信息添加到物体上,将物体的实时动态效果展示出来,从而满足人们越来越高的视觉要求,这项任务将由PixelShader来完成。PixelShader的主要工作就是还原物体被光线照射之后所呈现出来的色彩信息,这些色彩信息GPU都将在像素上进行操作,所以也就是对像素的色彩进行修改。
图像经过上述一系列操作之后,只需进行最后的整合,就可以输出在显示器上了。ROP的作用在于拾取渲染好的像素,以及调用Z-buffer上的信息,结合模型的透明度信息决定哪些面是被遮挡住的,被遮挡的部分将被隐藏,不予显示。完成后,图像将被存入帧缓存,在合适的时机输出到屏幕。ROP是前面所有工作的整合器,它的效率直与显卡的工作效率紧密相关。从最初的数学公式到最终呈现在显示器上的图像,显卡的工作到这里就结束了。整个过程在一秒钟内一般要重复完成75次。ROP单元是整个GPU工作流程中最为重要的一环,性能将直接影响到整个GPU的实际表现、工作效率的高低将直接影响到整个流程的效率。
关键技术
并行计算技术
GPU并行计算技术就是利用GPU的计算单元来完成和加速并行计算任务的技术 ,而非传统的基于CPU完成计算任务。因为GPU相比CPU具有更多的计算单元,这使得GPU比CPU更适合进行并行计算任务,获得更高的运行效率。在CUDA计算架构推出后,开发者可以使用类c语言来为GPU编写程序 ,从而大大降低了GPU的使用门槛,这极大地推动了基于GPU的并行计算技术在模式识别、图形语音、自然语言等人工智能领域多个方向上的发展。
渲染架构技术
现代图形处理器主要有两种渲染架构:即时渲染架构和分块渲染架构。桌面图形处理器一般采用即时渲染架构,它指的是完全按照应用程序指定的物体顺序,即时绘制物体,每个提交的渲染任务都会立刻开始执行,渲染期没有任何延迟,所以驱动程序直接,渲染效率高,在没有带宽限制的情况下性能好,但是由于渲染物体位置的无关性,导致高速缓存的丢失率提高,对带宽要求比较高。嵌入式图形处理器显卡内存容量比较有限,需要与系统及芯片上的其他处理器共用系统内存,如果像传统的桌面图形处理器那样,一次性将整个屏幕内容绘制出来,由于三维场景的复杂性,着色缓存和深度缓存会被更新多次,所以需要多次读写系统内存,因此性能和功耗都会很差。所以目前嵌人式图形处理器大多采用分块渲染架构。
显存带宽压缩技术
随着GPU计算性能的不断提升,显存带宽与CPU计算性能的差距越来越大,GPU对显存带宽的需求不断提高。为了提升GPU的性能,节省显卡内存带宽的压缩技术显得格外重要。GPU对显存带宽需求主要来自两方面,其一,纹理采样;其二,深度和颜色缓存的读写。目前,比较常用的纹理压缩技术有 S3TC、ETC、ASTC等。这些压缩技术满足纹理压缩的需求。它们的特点是固定压缩率、有损、压缩时间比解压时间长、解压的硬件实现简单等。
GPU虚拟化技术
GPU虚拟化技术分为设备仿真、设备直连、API重定向、全虚拟化和硬件虚拟化。这四种方式从不同角度提供了GPU虚拟化的解决方案,设备仿真用软件模拟GPU,设备直连则允许虚拟机直接使用GPU,后三者则分别从API接口、虚拟层驱动、GPU硬件入手实现虚拟化。其中,设备仿真是在没有真实硬件的环境下虚拟出GPU,但虚拟出的GPU性能面临巨大的挑战,实用价值较低,因而常用于GPU架构研究,主要用于科研人员进行GPU硬件结构仿真。随着云计算理论和研究的不断发展,GPU虚拟化在深度学习、人工智慧等领域的重要性不断增强,特别是英伟达、超威半导体公司等GPU厂商进军虚拟机后,GPU虚拟化技术获得长足发展。
特色功能
光线追踪
光线追踪采用全局光照模型,通过物理原理对光线和物质之间的交互行为进行建模,不仅考虑直接光照的效果,也考虑物体间相互光照影响,比传统的光栅化渲染效果更加立体,色彩更柔和更逼真,通常用于离线渲染处理。在基于GPU的光线追踪上,每个GPU硬件线程同一时刻负责一条光线的处理因此,一个单指令多线程处理器同一时刻处理32条光线。每个线程处理过程都遵循基于栈的遍历算法。例如,2018年英伟达发布的RTX2080GPU,采用Turing架构,在GPU中集成了68个独立的RTCore,用于光线追踪,光线处理能力达到了10Giga/S,1080P@60Hz需要处理的光线约为6Giga/S,实测基于光线追踪的应用其帧率大致在50FPS左右,基于RTX2080的光线追踪达到了可用的程度,光线追踪对于反射和阴影有着更逼真的处理效果,尽管目前仍然是采用光线追踪和传统光栅图形处理相结合的方式来进行图形渲染,但其效果已经远超传统光栅图形处理,对于游戏、电影等追求逼真光影效果的应用,光线追踪能提供电影级画质的实时渲染,带来视觉效果上质的飞跃。除了游戏、电影方面的应用,产品设计师和建筑师也可以享受到光线追踪带来的好处,借助光线追踪工具和高性能GPU,可以实时生成逼真的产品模型,提高设计迭代速度。
DLSS
英伟达 DLSS的设计初衷就以GPU内置的专用核心(Tensor Core)为基础,通过使用超级采样、实时反馈和AI技术来克服传统的分辨率缩放技术带来的图像质量严重降低的限制,以实现与原始分辨率基本相当的图像质量,并且还能够显著提升游戏帧率表现。相比NIS、FSR等技术,DLSS可以提供更好的图像质量细节、更稳定的画质表现以及更清晰的图像边缘质量。由于DLSS总是在基于AI的神经网络上不断学习,再加上机制中存在的前后帧联动输入分析,这让它可以生成媲美甚至超过原生图像的高质量画面。而传统分辨率缩放技术则更简单粗暴地使用削减分辨率的方法进行渲染,再利用相对固定的算法,使用很少的图形信息采样进行渲染补足,以牺牲图形质量的方式换取游戏性能的提升。最大的问题就在于物体细节严重衰退和渲染输出图形的不稳定性。
FSR
FSR全称为AMD FidelityFX Super 分辨率,也就是AMD FidelityFX超级分辨率,主要作用是在相同分辨率和画质设置下提升游戏帧率,改善玩家的游戏体验 。换而言之,在相同画质和分辨率设置下,FSR可让游戏帧率得到50%甚至100%的提升,让原本在该设置下根本不能玩的游戏变得可以玩,让原本不是太流畅的游戏体验达到60fps+的效果。FSR1.0和2.0都会以降低渲染分辨率的方式来显著提高性能,然后将较低的分辨率输入图像缩放到目标分辨率再进行输出。不过FSR 1.0和2.0的区别在于算法不同,FSR1.0采用的是空间算法,而FSR 2.0则采用的是时间算法。FSR 1.0的空间算法使用的是当前帧的数据来创建缩放输出图像,并依赖于合并到游戏渲染管道中的单独反锯齿。而FSR 2.0的时间算法使用的是渲染管道中的深度缓冲、运动矢量缓冲和色彩缓冲,并利用来自过去帧的信息来创建质量更高的输出图像,并且FSR 2.0还包括优化的高质量抗锯齿。由于上述这些不同之处,在所有质量模式预设和屏幕分辨率下,FSR 2.0提供的图像质量理论上要比FSR 1.0更加出色。
分类
GPU与CPU对比
CPU称为中央处理器,作为计算机系统的运算和控制核心,主要完成处理指令、执行操作、控制时间、处理数据,着重是面向数据的处理。GPU称为图像处理器,是一种专门图像运算工作的微处理器,又称显示核心、视觉处理器、显示芯片,主要面向2D、3D的图形处理与HPC(高性能计算)。
两者的硬件架构有着本源的区别,如下图所示,CPU具备完善的Control、DRAM、缓存、及ALU;而GPU省略掉了Control和大量的Cache,设计更多的ALU计算单元。硬件设计上,冯诺依曼架构的CPU包含控制器单元(Control)、运算器单元(计算逻辑单元ALU)及高速缓冲存储器Cache、主存储器DRAM;CPU更利于先后顺序的串行处理。而GPU芯片硬件架构设计,没有控制器单元,节省出更大的空间设计成更多的小且高效的计算逻辑单元(ALU),每列计算单元分配一份高速缓冲存储器,这种架构使得GPU能够同时处理多任务而实现高性能的并行计算。且和CPU相比,GPU的计算能力和存储带宽也具有明显的优势。
同时,两者的关系也密不可分。GPU缺少控制单元,不能脱离CPU而独立工作,必须由CPU进行控制调用才能工作;为了满足大规模并行处理的业务需求,产生了具备CPU通用计算处理能力的GPU,称为GPGPU,主要是具备GPU的并行计算工作能力,同时具备协助CPU通用计算运算的能力。
应用领域
电力系统
近年来,图形处理器GPU作为一种具有高内存带宽和强浮点计算能力的新型并行处理器,逐渐被应用于大规模电力系统分析的加速计算中,在潮流计算、状态估计、静态安全分析、电磁暂态仿真和用电负荷预测等应用场合已经有显著的加速表现,使单一模块的计算耗时降低到60ms以下。下面简单介绍GPU技术在电力系统中的应用现状。
数据管理
GPU在空间数据库、关系数据库、数据流、数据挖掘及信息检索等数据密集、计算密集型应用中获得了广泛的关注。通过GPU可以加速某些性能瓶颈点,从而提高整个系统的效率。
自然语言处理
近年来,GPU在自然语言处理领域的应用非常广泛,在加速语言模型的训练方法、文本挖掘、文本分类、术语抽取等方向均有丰富的科研实践成果。例如目前已实现了基于GPU的条件随机场模型用于数据分类。该方法基于数据划分的思想,将大规模的数据划分为适合GPU并行执行的数据块,数据预处理由CPU执行,包括生成特征集和判断数据是否需要被划分。将计算密集的部分移植到GPU完成,再将结果回传到主机CPU完成后续的工作。
代数运算及流体模拟
应用GPU进行代数运算的研究起步较早,例如早期就有学者曾利用多纹理技术实现矩阵运算操作。随着GPU硬件可编程功能的发展,实现了在顶点级建立一个代数运算的框架系统。其中包括向量运算和矩阵乘法运算等。而随后像素可编程功能的出现加速推动了这一领域的研究。GPU还被应用于加速流体运动问题方面的研究,其目的是通过利用优越的计算性能来提高流体模拟的实时性。已有学者实现了利用基于像素编程的多重网格算法求解包括流体力学问题、热传导问题等在内的边界值问题。不过到目前为止这方面的研究大多数还只是集中在二维域中。
人工智能
AI技术的发展与应用,初始阶段均以GPU支撑AI的计算能力需求,AI初创公司都是在GPU上做软件算法,然后集成到现成的服务器做落地应用;实力雄厚的AI科技公司,会潜心专注自己的AI芯片设计研发,以通过芯片硬件实现AI计算力的显著提升(利用MAC“乘加计算”加速阵列对CNN“神经网络”中最主要的卷积运算进行加速)。AI算法的炼提升,是人类智力运动的共同结果,差异化将会拉平,而硬件层面的芯片产品竞争将会加剧,伴随着GPU与CPU逐步走向统一计算架构的趋势,最终AI芯片的XPU也将会与GPU逐渐相融合。
3D渲染
GPU是相对于中央处理器单元的一个概念,GPU的出现主要是帮助CPU分担三维处理的负担,然而近年来兴起的GPU渲染在一些特殊应用场景其实有很大的发挥潜力与应用价值,如《阿凡达》就是运用了GPU渲染技术实现特殊视觉效果。通过开启GPU渲染加速,可以提升图形加载速度,降低CPU处理器的负担,使系统运行更加流畅,一些专业的图形建模和设计类显卡如Quadro系列显卡,不仅仅在时间上更胜一筹,也可以在渲染前给出出色的渲染效果图,这点对于使用者也可以节省更多时间。从实际应用上来看,GPU渲染效果最显著的是时间上的优势,其处理速度基本上可以比CPU单独渲染提高数十倍不止。
超声成像
近些年来,GPU高度的可并行性和强大的数值计算能力使其成为实现医学超声先进成像方法的有力工具之一。在目前的研究中,GPU主要被应用于超声弹性成像中计算量最大的环节—位移估计和超声超高速成像。将GPU应用于超声超高速成像,重点在于线程的任务分配和数据存储策略的优化。通常的做法是分配GPU中的一条线程负责一个像素点的计算,一个线程块负责一个通道的数据处理;数据存储策略方面,受制于GPU中共享存储器和寄存器大小的限制,大量的数据主要存储于全局存储器中,共享存储器和寄存器只用于存放少量的需要重复计算和读写的数据。
性能指标
GPU的性能指标主要包含架构、核心频率、CUDA核心数等方面,这些指标都会在不同程度上影响GPU的理论和实际性能。
目录
概述
发展历程
图形显示
2D、3D图形加速
统一渲染
通用计算
硬件架构
AD102核心
SM单元
光线追踪模块
第四代张量核心
编解码器
工作原理
关键技术
并行计算技术
渲染架构技术
显存带宽压缩技术
GPU虚拟化技术
特色功能
光线追踪
DLSS
FSR
分类
GPU与CPU对比
应用领域
电力系统
数据管理
自然语言处理
代数运算及流体模拟
人工智能
3D渲染
超声成像
性能指标
参考资料