在互联网行业,随着信息化的普及,数据量的暴增使得人们对存储空间又有了新要求,同时, 机器学习 、人工智能、 无人驾驶 、工业仿真等领域的崛起,使得通用CPU在处理海量计算、海量数据/图片时遇到越来越多的性能瓶颈,如并行度不高、带宽不够、时延高等。
为了应对计算多元化的需求,越来越多的场景开始引入GPU、FPGA等硬件进行加速,异构计算应运而生。异构计算(He te rogeneous Compu TI ng),主要指不同类型的指令集和体系架构的计算单元组成的系统的计算方式。
20世纪80年代,异构计算技术就已经诞生了。所谓的异构,就是CPU、DSP、GPU、ASIC、协处理器、FPGA等各种计算单元、使用不同的类型指令集、不同的体系架构的计算单元,组成一个混合的系统,执行计算的特殊方式,就叫做“异构计算”。
特别是在人工智能领域,异构计算大有可为。众所周知, AI 意味着对计算力的超高要求,目前以GPU为代表的异构计算已成为加速 AI 创新的新一代计算架构。
我们为什么需要异构计算?
谈到计算,我们通常会想到CPU,但是CPU属于通用计算,受制于摩尔定律,随着计算多元化的发展,特别是应用类型的多样化,导致CPU在处理某些计算类型方面出现“力不从心”的情况。引入特定的单元让计算系统变成混合结构成为了必然,每一种不同类型的计算单元都可以执行自己最山擅长的任务。
CPU虽然运算不行,但是擅长管理和调度,比如读取数据,管理文件,人机交互等,例程多,辅助工具也很多;GPU管理更弱,运算更强,但由于是多进程并发,更适合整块数据进行流处理的算法;FPGA能管理能运算,但是开发周期长,复杂算法开发难度大。适合流处理算法,不管是整块数据进还是一个一个进。还有实时性来说,FPGA是最高的。
当人工智能等海量计算力诉求到来之后,GPU、FPGA配合CPU进行计算也就“水到渠成”了。
异构计算的两大派别——GPU和FPGA
我们最熟悉的异构计算平台就是“CPU+GPU”以及“CPU+FPGA” 架构。这些典型异构计算架构最大的优点是具有比传统CPU并行计算更高效率和低延迟的计算性能,尤其是业界对计算性能需求水涨船高的情况下,异构计算变得愈发重要,整个计算行业生态无一不在此发力。
众所周知,相比CPU,GPU和FPGA拥有太多的优势,GPU有更高的并行度、更高的单机计算峰值、更高的计算效率;而FPGA的优势则主要体现在它拥有更高的每瓦性能、非规整数据计算更高的性能、更高的硬件加速性能、更低的设备互联延迟。
目前异构计算使用最多的是利用GPU来加速。主流GPU都采用了统一架构单元,凭借强大的可编程流处理器阵容,GPU在单精度浮点运算方面将CPU远远甩在身后。各个GPU厂家都推出了适用于通用计算的GPU,GPGPU(General Perpose GPU)。一时间,整个业界都在谈论GPU计算。
除了GPU,FPGA成为近年半导体产业的热点。FPGA作为一种高性能、低功耗的可编程芯片,可以根据客户定制来做针对性的算法设计。所以在处理海量数据的时候,FPGA 相比于CPU 和GPU,优势在于:FPGA计算效率更高,FPGA更接近IO。
PGA不采用指令和软件,是软硬件合一的器件。对FPGA进行编程要使用硬件描述语言,硬件描述语言描述的逻辑可以直接被编译为 晶体管 电路的组合。所以FPGA实际上直接用 晶体管 电路实现用户的算法,没有通过指令系统的翻译。
当然除了GPU和FPGA,ASIC也是目前计算芯片的一种选择。ASIC是一种专用芯片,与传统的通用芯片有一定的差异,是为了某种特定的需求而专门定制的芯片。ASIC芯片的计算能力和计算效率都可以根据算法需要进行定制,所以ASIC与通用芯片相比,具有以下几个方面的优越性:体积小、功耗低、计算性能高、计算效率高、芯片出货量越大成本越低。但是缺点也很明显:算法是固定的,一旦算法变化就可能无法使用。
目前人工智能属于大爆发时期,大量的算法不断涌出,远没有到算法平稳期,ASIC专用芯片如何做到适应各种算法是个最大的问题。
不同处理器芯片在构建异构计算方面有着自己的鲜明特点。CPU、GPU领域存在大量的开源软件和应用软件,任何新的技术首先会用CPU实现算法,因此CPU编程的资源丰富而且容易获得,开发成本低而开发周期。FPGA的实现采用Verilog/VHDL等底层硬件描述语言实现,需要开发者对FPGA的芯片特性有较为深入的了解,但其高并行性的特性往往可以使业务性能得到量级的提升;同时FPGA是动态可重配的,当在数据中心部署之后,可以根据业务形态来配置不同的逻辑实现不同的硬件加速功能。
ASIC芯片可以获得最优的性能,即面积利用率高、速度快、功耗低;但是AISC开发风险极大,需要有足够大的市场来保证成本价格,而且从研发到市场的时间周期很长,不适合例如 深度学习 CNN等算法正在快速迭代的领域。
结语
当前计算多元化趋势不可阻挡,单一的CPU已经无法计算力的需求。在这种情况下,以GPU和FPGA为代表的异构计算大行其道。特别是人工智能、大数据、物联网等新技术的推动,应用类型呈现多样化,其对计算的需求也呈现差异化的特点。不管是“CPU+GPU”还是“CPU+FPGA” ,都是为了更好地服务个性化的计算需求。
可以预见的是随着计算产业的演进,异构计算具有广泛的发展空间,我们也会看到越来越多的异构计算架构在承载应用方面发挥越来越重要的作用。