您好, 访客   登录/注册

探究FPGA的峰值浮点运算性能

来源:用户上传      作者: Michael Parker

  由于DSP、GPU和FPGA具有性能和功效优势,一般用作CPU的加速器。考虑到计算体系结构的多样性,设计人员需要一种统一的方法来对比性能和功效。通用的方法是测量每秒浮点运算次数(FLOP),按照IEEE 754标准,FLOP被定义为单精度(32位)或者双精度(64位)加法或者乘法。所有常用函数和运算功能如快速傅里叶变换(FFT)和矩阵运算等都需要加法器和乘法器,所有这些体系结构中加法器和乘法器之比一般都是1:1。
  FPGA浮点运算性能表现强劲
  业内一般采用峰值FLOPS来对比DSP、GPU和FPGA的性能。在最大工作频率下,可通过加法器和乘法器求和积来确定峰值FLOPS比。这代表了计算的理论极限,虽然在实际中很难获得,但这确是实用性的对比指标。
  在DSP方面,德州仪器的TMS320C667x DSP包括了8个DSP内核,每一内核含有两个处理子系统,每一子系统包括4个单精度浮点加法器和4个单精度浮点乘法器,总共有64个加法器和64个乘法器。处理器最快能够以1.25GHz频率运行,测算峰值性能达到160 GFLOP。
  市场上功能最强大的一种GPU是Nvidia公司的Tesla K20。这一GPU基于CUDA(计算统一设备架构)内核,每一内核都有一个浮点乘法器和加法器。在单精度浮点配置时,每个时钟周期能够执行一次。每个流处理器(SMX)引擎中有192个CUDA内核。K20实际上含有15个SMX,正常情况下能够使用其中的13个,这就总共有2496个CUDA内核。每一时钟周期执行2 FLOP,最大运行频率是706MHz,这样其峰值单精度浮点性能达到了3520 GFLOP。
  而从FPGA的表现来看,Altera在其FPGA中提供硬核浮点引擎。在整个可编程逻辑结构中,嵌入的硬核DsP模块含有一个单精度浮点乘法器和加法器。Altera的中端Arria10系列AX066 FPGA器件有1678个DSP模块,每个模块能够在每一时钟周期中执行2 FLOP,因此每一时钟周期达到3376FLOP。在额定速率为450MHz(这是对于浮点模式而言,定点模式会更高)时,则达到了1520GFLOP。以相似的方式进行计算,Altera的高端Stratix10FPGA由于提高了时钟速率,而且器件规模更大,有更多的DSP资源,因而性能高达10000 GFLOP,即10TeraFLOP。
  从以上可以看出,具有不同体系结构的器件的峰值浮点计算的能力是不同的。
  确定FPGA浮点运算性能面临挑战
  采用FPGA逻辑资源来实现浮点功能,可实现任意精度,不会受到业界标准单精度和双精度的限制,Altera可提供几种不同级别的浮点精度。但是,并不太容易确定使用了FPGA可编程逻辑的峰值浮点性能。Altera FPGA的峰值浮点速率只是基于硬核浮点引擎的性能,假设浮点功能并没有使用可编程逻辑资源,而是其他的设计功能使用了可编程逻辑资源,例如I/O接口、存储器接口以及其他功能等。
  某些因素导致很难精确计算出FPGA的浮点性能。虽然通过查询FPGA供应商浮点知识产权(IP)用户指南能够确定构建一个单精度浮点乘法器和加法器所需的逻辑量,但用户指南并没有提供关键信息,而这是布线资源所需要的。实现浮点运算时需要大规模循环移位寄存器,它会占用非常多的可编程逻辑互联资源。而所有FPGA支持逻辑的互联数是一定的,与典型定点FPGA设计应用有关。然而,与大部分定点运算相比,浮点运算并不需要这么多的互联。当建立一个浮点函数的实例化时,会占用逻辑单元中公共区域的布线资源。但是,大量的密集浮点运算会导致布线拥塞,导致设计时钟速率和逻辑利用率大幅度下降。Altera对此开发了一种专用综合技术,即“融合数据通路”,在一定程度上减轻了这种影响,能支持在逻辑架构中实现大规模的浮点设计,单精度采用定点27×27乘法器,双精度采用54×54乘法器。
  此外,FPGA的逻辑资源并不能被完全使用到浮点运算中。在某一设计占用了大部分逻辑资源的情形下,时钟速率即fMAX能够实现的时序收敛范围就缩小了,最终有可能根本实现不了时序收敛。通常来说,70%~90%的逻辑资源可以被使用,在浮点运算密集型应用情况下应只占用最低比例的逻辑资源。应构建基准测试浮点运算
  出于以上原因,几乎不可能计算出FPGA实际的浮点运算性能。绝佳方法是构建基准测试浮点运算,这包括时序收敛。抑或FPGA供应商提供这类设计,以对估算FPGA的性能提供帮助。
  Altera提供28nm FPGA基准测试设计,覆盖了基本以及复杂浮点设计。公开的结果显示,采用28nmFPGA,FFT等简单算法能够实现数百GFLOP,QR和Cholesky分解等复杂算法则达到100 GFLOP以上。
  第三方技术分析公司Berkeley设计技术有限公司在Altera的28nm FPGA上进行了复杂高性能浮点DsP设计独立分析。使用OpenCL在Altera 28nmStratix V FPGA可实现很多浮点基准测试设计,通过申请即可获得这些设计。这些设计目前正在移植到Arria 10FPGA上,由于采用了硬核浮点DSP模块体系结构,因此能够极大地提高性能。
  对于缺少硬核浮点DSP的FPGA,使用供应商计算的理论GFLOP数据是不太可靠的。基于逻辑实现的FPGA浮点性能如果宣称高于500 GFLOP,都应该对其保持高度怀疑。供应商应提供具有逻辑、存储器以及其他资源和时钟速率的FPGA编译报告。更进一步,任何公司宣称实现了某种性能,都应提供编译后的设计文件,以支持结果重现。不恰当的GFLOP值不应被认可
  强调一下,虽然可采用FPGA的可编程逻辑资源实现浮点功能,但实际性能和吞吐量的不确定性导致了一些不实的市场宣传,在选择FPGA时,不能只看厂商自己给出的GFLOP值。
  在大部分计算机体系结构中,浮点乘法器和加法器采用1:1是有原因的。使用乘法器的应用包括矩阵乘法、FFT、高阶数学函数,例如平方根、三角函数等,以及所有需要进行大量线性代数运算的设计。任何实用的浮点应用都需要大量的浮点乘法器,这也是为何计算机体系结构提供同样数量的乘法器和加法器的实际原因。虽然只使用浮点加法器(没有乘法器)也能宣称实现较高的比率,但这类设计并没有实际意义。
  有经验的FPGA设计人员都知道,随着所使用的逻辑资源百分比的增加,设计fMAX会下降。一般而言,使用80%以上的逻辑会导致时序收敛的时钟速率大幅度下降。而且,其他功能还需要很多逻辑,这进一步减少了浮点计算能够使用的逻辑资源。
  此外,对FPGA系列的不同选择也会产生很大影响。如果所选择的FPGA器件成本高昂,一般会用于ASIC原型开发应用。其时钟速率和触发率都较低,因较高的时钟速率和触发率会极大地增加功耗,超出了器件的VCC电流和功耗能力。而使用针对DSP应用进行优化的FPGA系列则能够极大地减少GFLOP值。
  简而言之,含有诸多假设条件的浮点运算测试并不是业界认可的基准测试方法,因此不应使用这一方法获得的数据来对比其他半导体供应商产品所宣称的峰值浮点性能,峰值GFLOP指标应代表某一器件能够实现的性能。当然,还是要有一些降额考虑,因不可能让所有浮点运算以100%的占空比来进行。
转载注明来源:https://www.xzbu.com/8/view-6826917.htm