当前位置: 首页 > 科技观察

关于GPU的场景和局限

时间:2023-03-15 10:34:30 科技观察

GPU作为协处理器,传统用途主要是处理图像并行计算任务;计算机系统面临的计算任务具有复杂且不同的性能要求,当CPU不能满足特定的处理任务时,就需要有针对性的协处理器来辅助计算。GPU是为图像计算定制的并行处理器,具有高并行度、高吞吐量和高延迟容忍度。本文选自《软件算法生态视角下的GPU发展与局限》,重点介绍GPU原理、GPU场景、局限性等,具体内容如下:1、什么是GPU?2、为什么需要GPU等协处理器?3.GPU还能做什么?4.GPU不适合做什么?五、GPU市场概况GPU简介GPU最初的设计针对图像计算的特点进行了优化,因此它也可以兼职一些接近图像计算的大规模并行标准浮点计算任务特点,如科学计算和数值模拟。但是,大规模并行计算并不是一个笼统的概念,而是一个很大的范畴,根据计算性能需求可以细分为六个维度。因此,GPU绝不是解决大规模并行计算问题的万能药,不能很好地支持与图形计算特性差异较大的并行计算任务。1.1什么是GPU?GPU的其他名称包括显示核心、视觉处理器和显示芯片。顾名思义,GPU的主要应用场景是处理图像显示计算。计算机图像显示过程如图所示。在这个过程中,CPU决定显示内容,GPU决定显示质量。GPU等执行特定功能的辅助CPU统称为“协处理器”。“协处理器”一词表明GPU在计算机系统中处于从属地位。GPU芯片按照与CPU的关系可分为独立GPU和集成GPU。独立GPU通常具有更高的图形处理能力,但也存在成本更高、功耗更大、发热量更大等问题。近年来,集成GPU在笔记本电脑和智能手机等移动计算平台上大行其道。例如,高通的智能手机芯片通常会通过SoC(SystemonChip,片上系统)技术将一个CPU与功能较弱的GPU和其他协处理器组合在一起。集成GPU的图形计算性能相对弱于独立GPU,但功耗和成本针对移动计算平台的需求进行了优化,将长期占据移动计算市场。1.2为什么需要GPU等协处理器?在计算机系统中,之所以会出现GPU等协处理器,是因为没有一种芯片设计方案能够满足所有不同类型计算任务所需的全部性能指标:计算精度;计算并行性;计算延迟;计算吞吐量;并行进程之间的交互复杂度;计算实时性要求;鱼和熊掌不可兼得;在计算机芯片设计中,受限于资源有限,无法同时满足以上六项指标。图中的雷达图比较了CPU的设计偏差(蓝线)和图形计算的要求(红线)。越靠近外圈,要求/性能就越高,比如计算延迟低,计算吞吐量高。我们可以发现CPU设计的一些偏好,比如并行进程的交互能力强,图形计算不需要低计算延迟;但图形计算所需要的高计算并行度和高计算吞吐量,是CPU无法提供的。将CPU应用到图形处理上,会造成部分性能被浪费,而其他性能CPU则达不到要求(雷达图上红线与蓝线的显着差异);这提供了一个GPU,它针对图形技术优化了芯片性能指标。处理器生存空间。在通用计算系统体系中,其他类型的协处理器,如DSP、FPGA、BP等协处理器,由于其处理的具体计算任务在计算指标雷达图和CPU等协处理器中,都是独立存在的。设备差异太大。一个协处理器行业是否有足够的市场空间,主要看它所针对的计算任务在性能雷达图中是否独树一帜(否则会被CPU等“兼职”),是否有足够大的市场需求对于这样的计算任务。1.3GPU还能做什么?GPU厂商根据图形处理的性能需求,将资源分配强化到两个具体指标:计算并行度和计算吞吐量。除了图形计算,一些计算任务的性能雷达图都在GPU的性能范围内或者相差不太远(见图),比如数值模拟、金融计算、搜索引擎、数据挖掘等。因为鉴于GPU在特殊计算任务中扩展应用的前景,主流GPU厂商纷纷推出软硬件结合的并行编程解决方案。例如Nvidia推出了闭源的CUDA并行计算平台,而AMD则推出了基于开放的OpenCL标准的Stream技术。这类技术在软件中提供了一个自定义的编译器,将计算任务分解成尽可能独立并行执行的小组件(称为“线程”);在硬件上对GPU进行小幅修改,并略微改善其延迟。/并行交互等传统弱势表现。虽然GPU的并行计算能力与金融数据处理需求有一定匹配(图4中红线和蓝线类似),但金融核心账本计算需要远超通用计算的精度平台。GPU内部的二进制计算单元不能保证账本的准确性;金融业的核心会计业务长期以来依赖于配备小数计算单元的IBMPower系列高端处理器。如果将GPU改造为配备十进制硬件计算单元,则无法满足图形计算的需要。这个案例充分说明并不是所有的并行计算任务都一定适合GPU计算,而是需要根据实际情况进行区分。1.4GPU不适合做什么?GPU是大规模并行计算芯片的一个子类;但是,它不能解决所有的大规模并行计算任务。大规模并行计算芯片大致可分为两大组成部分:1)并行计算单元,数量从几个到数千个不等,完成“线程”计算;2)NoC(NetworkonChip,片上通信网络),负责计算单元之间的数据传输;针对不同的计算需求场景,大规模并行计算芯片的设计一般有两个方向:1)处理单元优化:包括增加或减少处理器单元数量或改变处理器单元内部结构等;2)NoC网络优化:改变网络拓扑、网络路由算法、优化网络控制机制等;这两个方向的优化需要共享芯片上有限的资源;strengthenperformanceinonedirection/increaseresourcesinasitedirection分配往往意味着牺牲另一个方向的性能。多核CPU、GPU、FPGA是常见的并行计算架构,其资源分配趋势如图所示。GPU将主要资源分配给常见的图形计算单元,如浮点数的乘法和加法,并采用最简单的片上网络拓扑结构:树状NoC网络,在基本计算单元之间传递数据,如图所示在图中;这种片上网络的优缺点是:优点1:资源消耗极小;缺点1:数据通过读写片内存储传输,速度慢;劣势2:根节点容易因为通信拥塞成为瓶颈,如图中红线和蓝线表示计算节点A向B传输数据,C向D传输数据。两个传输过程汇聚在根节点和二级共享节点。当片内数据传输频繁时,树形拓扑NoC容易发生拥塞。GPU之所以采用树形拓扑,大概是因为它的“主业”——图形计算只是在少数情况下需要计算节点之间进行复杂的数据通信,所以使用树形拓扑以外的方案纯属浪费.然而,树形拓扑限制了相当多类型的大规模并行计算任务在GPU上执行。也就是说,以下并行计算任务并不是GPU扩展的强项:分支多、判断多的并行计算任务,典型的是人机交互、计算机与环境交互中的逻辑判断计算等任务;并行计算中具有较多串行元件和反馈算法的并行计算任务,典型例子如控制系统计算任务;具有网络结构的数据流的并行计算。典型案例是FFT(傅里叶分析)计算任务。CUDA中经过优化的FFT可以提供比CPU快10倍左右的速度,但是当FFT长度超过一定的阈值时,GPU的性能就会下降(来源:NV官网)。DSP芯片往往会针对FFT的算法特性提供定制优化,GPU没有问题。因此,在手机SoC中,往往采用DSP而非GPU来处理FFT等大规模并行计算。