本文给大家介绍下如何对FPGA+CPU平台进行性能估计,目的是帮助大家在选择FPGA+CPU系统平台时,掌握一种系统性能评估方法。
1、介绍
在
自动驾驶领域,需要对传感器的数据作大量的基于深度内神经网络的复杂运算,GPU和FPGA被不约而同地用来作为对CPU的一种加速器被使用。这样做不仅可以提高计算性能,并且可以大幅度地降低能耗。FPGA+CPU架构的平台凭借其灵活,高效率,低能耗等特点,正越来越多地被一大批拥有技术实力的公司使用,比如Waymo,百度,福特,通用等。这时我们就需要对FPGA+CPU平台的性能进行估计,看下是否满足相关性能需求。本文将以Xilinx推出的Zynq UltraScale+ MPSoC为例,来阐述其性能评估方法。
MPSOC包括PL和PS两个部分,PL是指的是FPGA可编程部分,PS指的是CPU部分,MPSOC的性能是两部分之和,因此我们需要分别进行评估相关性能。
2、如何计算FPGA PL的性能
2.1 FPGA性能难以计算
在介绍如何计算FPGA的性能之前,我们来了解一下目前主流的FPGA的硬件。以Xilinx的Zynq UltraScale+ MPSoC为例,其PL包含可编程资源 Logic blocks, RAM, DSP slices等。而要得到最终的FPGA 性能值,由于以下几点原因而变得困难。
- 不太容易知道需要多少个logic cell和DSP slice才能构造成一个加法器。这个数量是FPGA IP core供应商决定的,用户难以知晓
- 通常FPGA用来实现和Application processor通讯的I/O设备需要占用一定数量的Logic cell,导致FPGA 资源不可能全部被利用到构造加法器
- 浮点运算会导致设计的clock无法达到100%的设计指标,相对于设计的clock频率指标,只能达到在80%左右
- 温度影响也要求系统的clock必须作出调整而不能以一个固定的值来计算
2.2 一种PFGA性能计算方法
目前通常使用的方法是参考系统的每秒浮点运算操作(floating-point operations per second ),简称FLOPS。因为浮点运算用到的所有的高阶函数,比如除法,平方,三角函数等,都能归结为加法,乘法运算,且常用的傅里叶变换,矩阵操作也都可以用加法器(adder)和乘法器(multipliers)的组合来实现,所以FLOPS和加法器/乘法器的数量在衡量其运算性能上是直接关联的。
为了计算FPGA的最大运算能力,我们可以通过利用单精度(Single-Precision)数据加法器数量的方法来求出一个系统的FLOPS。较乘法器而言,加法器利用到的系统资源少,求出的系统FLOPS的值就会接近最大值。
假设所有的运算都是并行的, FPGA中的LC逻辑和DSP48都可以构成加法器,这两部分是叠加的,因此我们可以得到下面的FLOPS计算公式:
FPGA PL FLOPS = ( Clock1 x LC basedAdder#) + ( Clock2 x DSP48 based Adder#)
根据以上公式,下面我们以Xilinx的Zynq UltraScale+ MPSoC的ZU19EG为例,来求其FLOPS。
2.3 FPGA的总资源
由图二,Zynq UltraScale+拥有的资源列表,我们可以看到ZU19EG有1,143,450个Logic cell, 1,968个DSP slices。
图二:Xilinx Zynq UltraScale+资源列表
2.4 PL加法器数量的计算
IP Core的实现方式由算法供应商决定,在这里仅以Xilinx提供的基于Kintex-7上的加法器IP Core用到的资源作为参考,误差应该在可接受范围。如图三,可以得知:
- 1个基于DSP48E的加法器需要2个DSP slices和289 LUT-FF pairs组成
- 1个基于Logic cell 的加法器需要517 Logic Cells组成
图三 Kintex-7上支持单精度的FPGA IP资源消耗
支持单精度的FPGA特征
由于实现FPGA相关的I/O输入输出,必须占用掉一定数量的Logic Cell,这里我们假设用掉14000个(预估的一个值)Logic Cell。也即:Logic Cell 剩下总数 = 1143450 - 14000 = 1129450,由于要计算出最大值,我们需要假设尽可能多的使用所有资源,这样可以得出:
- DSP48 based adder amount = 1968 / 2 =984 (个)
- LC based Adder amount = (1129450 -984*289) / 517 = 1634(个)
2.5 加法器的Clock
我们可以得知:
- 基于DSP48 的加法器的clock范围在:600 Mhz(slow) - 891Mhz (fastest)
- 基于Logic cell的加法器的clock范围在:667 Mhz(slow) - 891Mhz (fastest)
图四 DSP slice 频率参数
时钟频率根据不同的温度条件,Fmax(FPGA跑的最大时钟频率)的值需要相应调整。比如:
- 当温度条件在0-100度时,给加法器设置的clock可以设置较高为891Mhz
- 当温度条件在-40-100度时,给加法器设置的clock需要调整为600Mhz/667Mhz
为了计算最大运算能力,我们采用0-100度的条件下的clock频率,也就是891MHz。
图五 PL部分算力计算
这样我们可以得出Zynq UltraScale+ MPSoC的ZU19EG的PL的运算能力为:2331 GFLPOS (~2 TFLOPS)
总结: ~2T FLOPS某种程度上反映了FPGA Zynq UltraScale+ ZU19EG PL的处理能力。
类似方法,我们可以算出ZU2EG如下性能数据:
我们先根据图二算出基于DSP48和LC的加法器数量。
- DSP48 based adder amount = 240 / 2 = 120(个)
- LC based Adder amount = (103320 - 14000- 120*289) / 517 = 105(个)
这样我们可以得出Zynq UltraScale+ MPSoC的ZU2EG的PL的运算能力为:199 GFLPOS (~0.2 TFLOPS)类似方法,我们再算下ZU4EG如下性能数据:
我们先先根据图二算出基于DSP48和LC的加法器数量。
- DSP48 based adder amount = 728 / 2 = 364(个)
- LC based Adder amount = (192150 - 14000- 364 *289) / 517 = 141(个)
这样我们可以得出Zynq UltraScale+ MPSoC的ZU2EG的PL的运算能力为:449 GFLPOS (~0.45 TFLOPS)