fpga全称是field programmable gate array:可编程逻辑门阵列。它有一下几个的特点:硬件层面上,其内部集成大量的数字电路基本门电路和存储器,用户可以通过烧入配置文件来定义这些它们之间的连线,从而达到定制电路的目的;逻辑层面上,它不依赖于冯诺依曼结构,一个计算得到的结果可以被直接馈送到下一个无需在主存储器临时保存,因此不仅存储器带宽需求比使用gpu 或者cpu实现时低得多,而且还具有流水处理和响应迅速的特点。
一、fpga异构计算应用于工业互联网:
现代工业互联网产生了大量的数据,海量的数据分析工作离不开机器学习和人工智能。依靠传统的x86架构的cpu处理数据已经难以为继。gpu虽然在训练计算模型方面有很大的优势,但在现实使用中,95%的需求都是数据推断。fpga凭借技术优势,是现有条件下最好的数据推断加速卡。 fpga在工业互联网实时计算加速中有下列优势:
(1)灵活性:
fpga芯片上的编程可以随时更改,复用。fpga虽然是对硬件进行编程,但是fpga上的程序是很容易进行替换和升级的。当业务需要快速迭代和不断纠错时,fpga芯片上的业务也能一起升级,而asic芯片一旦生产就无法改变功能,这是fpga加速相对asic芯片的最大优点。
(2)低功耗:
相对于gpu,cpu计算的高功耗,fpga的计算能源消耗很小,高端fpga功耗仅为50w左右。在相同条件下,每w浮点运算算力达到了接近50gflops,远超gpu和cpu的表现。
(3)开发相对快速:
相对于其它定制硬件系统,fpga系统可以很方便的设计,仿真和测试。现在有很多fpga已经开始支持直接导入opencl和hsl,开发难度大大降低,可以快速编制片上算法投入生产和使用。例如xlinx的revision架构,可以把一个通过caffe设计好的深度学习模型直接搬到fpga上使用,开发者无需知晓hdl语言和fpga上的电路排列方法。
(4)低时延:
物联网应用对时延有天然的敏感性,比如自动驾驶。由于fpga具有存储内置的特性,相比于外置存储的gpu和cpu,减少了存储交互时间,在推断运算时,能够提供极低的时延。
(5)低成本和可拆分性:
用于边缘计算时,成本和功耗非常重要。gpu在设备端往往显得过重而且无法拆分。而fpga现在有很多低成本低功耗的选择,一两百元的廉价芯片可以很好的满足安防摄像头做一些简单的识别算法。
二、fpga芯片部署到工业互联网领域:
工业互联网领域可以在很多方面使用fpga进行推断工作的加速。比如直接在工业互联网终端侧的做边缘的图像识别推断。还有如果需要上传图像数据,使用fpga在边缘端加速图像压缩工作。
车联网领域应用,车辆上大量的传感器和摄像头会产生海量的数据。海量的数据会带来大量的计算压力,使用fpga芯片在边缘段对海量数据进行预处理,提炼出有价值的数据上传到数据中心平台进行分析和进一步处理。
在工业生产中,可以将fpga部署到边缘段。利用预先编制好的算法实时监测工业生产设备的状态和运行情况;当监测到工况出现变化时,及时提醒用户或者改变生产设备设置来提高工作效率或避免事故发生。如果使用x86服务器,需要占用大量的空间和资源才能达到相当的运算能力。
三、fpga异构计算的技术验证方案:
(1)硬件资源准备:
服务器*1 cpu: intel xeon e5-2620v3
mem:64g gpu:geforce titan x.
fpga平台*1 xilinx zynq ultrascale mpsoc zu9
(2)测试环境需求:
revision软件平台,主要用于翻译caffe的深度学习模型直接生成fpga硬件代码。
real intent的acent lint静态设计规则检查模块。主要用来完成静态的设计规则检查并提供代码修正参考及报告;可生成代码违反信息报告;主要文档形式是代码规则检查报告,违反报告等。
静态时序分析。主要完成对综合后或布局布线后的网表时序进行对比分析,得出时序是否收敛的结论,并提供时序改进的参考。
inext加速及原型验证平台。硬件加速仿真平台主要完成fpga/soc设计的硬件实物仿真,并能满足复杂硬件设计对高测试覆盖率的要求。
dialite fpga硬件在线调试工具。法国temento公司的dialite系列产品通过jtag接口获取fpga内部信号,其采用软硬件协同调试fpga,把fpga内部信号的可见性提高了数十倍,从而可以快速定位和纠正错误。
美国synapticad公司的testbencher pro是专门用于高度自动化的生成目标测试激励的产品,能够大大加快验证效率,有效保证fpga设计的可靠性。
(3)测试数据样例:
深度学习模型 cnn 算法中著名的图片分类模型—— alexnet 模型,提供 fpga 云服务器的应用之一:图片分类应用。alexnet 模型是著名的卷积神经网络模型,获得了 2012 年 imagenet 图片分类比赛冠军。在我们的实现中,alexnet 模型的 5 层卷积层是在 fpga 上实现的加速,3 层全连接层的计算依然保留在 cpu 上以适应不同的分类模型。因此,我们的实现具有相当程度的灵活性。
(4)测试方法:
将预先准备的demo现在服务器上的cpu跑一个基准分数,再用gpu跑一个对比分数。然后用revision工具将demo中的模型写成fpga硬件码,写入fpga中,跑出一个初始分数作为基准分数。重复上述步骤5次,取平均后作为基准测试结果。
然后按照下图的测试流程仔细检查生成的hdl语言仿真结果,确保自动生成的代码在fpga平台上具有良好的可用性并修正其中的电路错误。通过各个环节完备的测试,修改自动生成的代码获得更好的测试结果。
通过几次代码调整后,使用fpga再跑5次alexnet测试cnn模型,对比改进后的代码效率相比自动生成代码的提升。