FPGA,GPU和CPU在高性能计算领域的应用及展望课程:系统及可编程芯片设计专业:微电子学与固体电子学姓名:学号:任课老师:系统及可编程芯片设计1FPGA,GPU和CPU在高性能计算领域的应用及展望目前FPGA对于浮点数的运算速度已经达到1TFLOP(每秒万亿次浮点运算),同时GPU和多核CPU通过利用最新的IC设计技术也大大提高了其运算能力。本文将对比三种结构对于高性能计算的发展趋势,同时也会介绍在特定运算环境下三种结构的持续性能。1.高性能计算中FPGA,GPU和CPU的简介近年来,传统用于图像处理的GPU逐渐被发掘用来进行高性能计算,并且达到了相当好的效果,在单精度浮点运算中的速度达到5TFLOPs,在双精度浮点运算中的速度可以达到1TFLOPs。如今性能最好的GPU处理器(比如NVidea的TeslaK20和K40)与一些其他的多核处理器(比如IntelXeonPhi处理器以及IBM和Inter的一些处理器)相比表现出了非常好的计算性能。FPGA传统上是应用于单精度的定点运算,不过现在也可以浮点数进行高性能的计算,单精度浮点数的运算峰值已经超过1TFLOPs。但是运算的峰值并不能代表在特定环境下器件的持续工作性能,比如在计算2级的FFT时,Inter的80-teraflop持续工作性能只能达到其峰值性能的2.73%(20GFLOPs)。FPGA工作在一个较低的频率下,运算峰值较低,但是可以通过硬件优化来实现对特定应用的更好的运行效率,即持续性能能达到更接近峰值运算性能的值,同时与GPU和CPU相比FPGA的功率效率更高。一个特定的应用在不同的平台上运算是不一样的,对于运算结果的评估可以基于以下几点:性能、功耗、功率效率、运行效率、成本以及其他。在本文中,我们分析每个期间在峰值性能以及能耗方面的发展趋势,并对三者在一些科学应用的持续性能进行对比,找出对于某一特定应用的最佳运算平台。2.峰值计算性能发展趋势2.1GPUGPU最初被设计用来进行图像处理并在该方面显示出了强大的优势,近10年来GPU逐渐被应用到通用计算领域,一般称为GPGPU。基于其强大的并行计算能力,在一些其他的计算分析方面其性能早已可与多核CPU相媲美。观察多代GPU的发展,我们发现其峰值性能并不是简单的线性增长,单精度浮点运算和双精度浮点运算都是这样。我们没有办法去简单的描述GPU的全面的发展,因为各种GPU的结构非常多,所以在此只挑出在某个年份的最佳性系统及可编程芯片设计1能的一些GPU进行分析。结果如图1所示[1]。图1GPU的峰值性能观察图1可知,每一代GPU之间的性能提升超过1TFLOP,同时右图中可知在某些年份工艺技术没有提升,但是性能提升了,说明性能的增长不仅与新的制造工艺有关也与结构的优化有关。单精度和双精度的性能差距由最初的相差10倍降到了最新一代的只差4倍左右。关于能耗方面,GPU的功率效率(峰值性能与热设计功耗(TDP)的比值)也是在稳定则增长,单精度的功率效率由最初的0.5GFLOPs/W增加到了GFLOPs/W,双精度的功率效率由0.5GFLOPs/W增加到了6GFLOPs/W。这意味着GPU以一个增长的功率效率提供着一个惊人的运算性能。GPU的外部存储带宽也非常高,Geforce6800的带宽为35GBytes/s,K20,K20X和K40的带宽分别为208,250和288GBytes/s。.2.2多核CPU通用CPU的峰值运算性能在近年来也获得了显著提升,图2中显示了部分Intel的著名CPU的峰值运算性能。Intel最近推出的XeonPHI7120P处理器的峰值运算性能可以达到单精度2416GFLOPs,双精度1208GFLOPs,Intel处理器计算性能的提升靠的是增加CPU的核数,这些处理器的功率效率和GPU相比较低。最初65nm技术的CPU的功率效率为0.1GFLOPs/W,目前22nm技术下的CPU的功率效率已经增加到单精度9GFLOPs/W,双精度4.5GFLOPs/W。在Intel的这些处理器中,2008年出的一款多核处理器在3.16GHz频率1.07V电压下,峰值运算速度可以达到单精度1TFLOP。CPU或者多核CPU的存储器带宽也很高。比如XeonPHI7120P的带宽为352GBytes/s,比最近出的GPU稍系统及可编程芯片设计1微高一些。图2CPU的峰值性能2.3FPGAFPGA的峰值运算性能由它所包含的乘法器和LUT的资源决定,观察Xilinx公司的一些产品发现乘法器和LUT的资源并不是线性增长的(如图3所示)。最新的Virtex7系列FPGA中XC7VX980T含有3600个18*18的乘法器和612000个LUT,XC7V2000T含有2160个乘法器和1221600个LUT。图3Xilinx的不同FPGA包含的乘法器如果要分析FPGA的峰值运算性能,我们需要考虑三种情况:只有加法器,只有乘法器,有乘法器和加法器。加法器可以只通过LUT就可以实现,而乘法器的实现则需要DSP和LUT的不同组合(组合结构为M0,M1,M2)。乘加运算真是这些乘法器和加法器的一一组合。表1介绍了浮点运算中的不同资源组合系统及可编程芯片设计1情况。表1浮点运算所占用的资源和频率下面我们主要观察两款FPGA的峰值运算性能,它们是Xilinx公司的XC7VX980T和XC7V2000T。两款产品对于不同的应用所占用的资源是不同的,结果如图4,图5所示。如果只考虑加法器,最好的单精度峰值运算性能为1.4TFLOPs;如果只考虑乘法器,最好的单精度峰值运算性能为1TFLOPs。加法器和乘法器资源的组合中,能获得的最佳峰值运算性能为1.6TFLOPs。在这种情况下,我们可以看到XC7V2000T比XC7VX980T更适合浮点数运算,即使它的DSP资源只有XC7VX980T的60%。图4两款产品单精度浮点运算占用不同资源的峰值性能对于双精度的峰值运算,只含有加法器运算的最佳的峰值运算性能出现在XC7V2000TFPGA中,为671GFLOPs;只含有乘法器运算的最佳峰值运算性能降为168GFLOPs;加法器和乘法器的组合运算的最佳运算性能为302GFLOPs,由XC7VX980T获得。FPGA的功率效率超过10GFLOPs/W,一般来说是比CPU和GPU要高的,而且随着技术的发展FPGA的功率效率也会继续不断提升。比如Altera的一款能达到5TFLOPs的高性能FPGA就应用了Intel的14nmTri-Gate,功率效率达到系统及可编程芯片设计1100GFLOPs。图5两款产品双精度浮点运算占用不同资源的峰值性能2.4峰值计算性能的趋势为了更好的理解GPU,CPU,FPGA的相对发展,下面选取他们中在某些年最佳的性能的产品参数进行比较,包含单精度和双精度的运算,结果如图6,图7所示。在单精度的浮点运算中,GPU的性能一直是遥遥领先。在2011年FPGA和CPU的性能都有很大提升,而在2013年CPU的性能仍然在提升,而FPGA相对于GPU的性能下降了。在2013年之前,FPGA的性能一直优于CPU,但在2013年,出现了多核CPU比如IntelPhi,因此情况改变了。图6与GPU相比CPU和FPGA的单精度峰值运算性能对于双精度浮点运算,可以看到GPU的性能除了在前几年表现的差强人意,在2011年之后则一直领跑后两者。同时在2011年之后CPU的性能也超过了FPGA,而且在2013年CPU和GPU的性能也已经很接近了,大概只相差5%。系统及可编程芯片设计1图7与GPU相比CPU和FPGA的双精度峰值运算性能3.特定环境下持续性能对比峰值性能只是提供了一个理论上的对比,持续性能和功率效率在特定的应用上会有很大不同。因为这些处理器有着不同的结构,比如存储器的结构、外部存储器带宽以及互联网络,这些特点都和特定的应用有关。在这一章节,我们将对特定应用环境下的不同处理器性能进行对比。3.1矩阵运算矩阵运算与运算的精度以及通信模式有很大关系。TeslaK20XGPU在计算密集型矩阵乘法时的性能为单精度3TFLOPs,双精度1TFLOP,大概为其峰值性能的70%。Intel的XeonPhi7120P的性能为单精度2.2TFLOPs,双精度1TFLOPs,为其峰值性能的92%。功率效率分别为GPU的单精度12GFLOPs、双精度5GFLOPs,CPU单精度4.2GFLOPs、双精度3.6GFLOPs。在[2]中作者对比了i7-960CPU,GTX480GPU和Virtex-6FPGA在运行密集型矩阵乘法时的结果,结果显示GPU的持续性能为541GFLOPs,比FPGA快3倍、比CPU快6倍。对于功率效率,FPGA和GPU相差无几,同比CPU的功率效率好3倍。3.2FFT7级4096个点的单精度浮点FFT运算在28nm的FPGA上的速度为500GFLOPs,功率效率为10GFLOPs,但是对于一个单一的FFT运算FPGA仅能达到100GFLOPs。一款GTXTitanGPU进行FFT计算时性能达到了单精度450GFLOPs、双精度220GFLOPs,分别为其峰值性能的10%和17%。多核CPU也获得了类似的结果,不过单精度的性能效率更高。系统及可编程芯片设计13.3蒙特卡洛算法基于蒙特卡洛算法的问题在科学算法中很常见,如在金融行业的某些计算。蒙特卡洛算法的一个重要单元就是随机数的产生。FPGA每秒获取的随机数大概是GPU的15倍,是CPU的60倍。在[3]中作者对比了Virex-4FPGA、NVidia8800GTXGPU和一个2.8MHzXeonCPU在计算一种类蒙特卡洛算法的性能。结果显示FPGA比基本的CPU性能好一个量级,与相同的GPU相比速度也要快3倍。在功耗方面的对比为:FPGA的能量利用率是CPU的336倍,是GPU的16倍。在[4]中作者对比了i7-960CPU,GTX480GPU和Virtex-6FPGA在Black-Scholes期权模型的运算性能,结果显示在速度方面GPU比FPGA快1.4倍,比CPU快22倍;在能量利用率方面GPU比FPGA高1.3倍,比CPU高40倍。3.4组合逻辑问题FPGA在计算组合逻辑问题时有很大的优势,比如编解码问题、优化算法问题以及散列法。FPGA的优势同样体现在计算有限状态机问题上,有限状态机包含压缩和细胞自动机模型,在这种情况下的运算量能达到万兆/s。这种计算性能在除FPGA外的其他处理上是不能达到的。将TeslaC2090GPU、ZYNQXC7Z020FPGA以及XeonCPU分别处理编解码算法,对比结果为GPU的吞吐率是CPU的13倍,FPGA对于8KB和16KB的明文块的吞吐率是GPU的6-9倍。这种优势是由于FPGA的流计算能力。对于更大的明文块,FPGA和GPU表现出相似的性能。4.总结作为通用的高性能计算处理器,GPU的性能无疑是最优秀的。然而对于某种特定的应用,三种处理器体现出了不同的优势。另外考虑到可重构的因素,FPGA的优势又会进一步提升。所以对于未来高性能计算的发展可能会趋向于多核,并且会集合目前FPGA、GPU的各种优势,使其既能发挥高速的计算也能实现全部或者部分的可重构。5.参考文献[1]VestiasM,NetoH.Trendsofcpu,gpuandfpgaforhigh-performancecomputing[C]//201424thInternationalConferenceonFieldProgrammableLogicandApplications(FPL).IEEE,2014:1-6.系统及可编程芯片设计1[2]ChungES,MilderPA,HoeJC,etal.Single-chipheterogeneouscomputing:Doesthefutureincludecustomlogic,FPGAs,andGPGPUs?[C]//Proceedingsofthe201043rdAnnualIEEE/ACMInternati