FPGA硬件加速综述

FPGA硬件加速综述

背景

本科期间参加了不少竞赛,其中和FPGA相关的主要是集创赛以及Xilinx全球自适应计算大赛两个。虽然接触到的硬件类型五花八门(ZYNQ ZYNQ Ultrascale+ Alveo ACAP等),但是主要的学习都集中在深度学习尤其是目标检测和分类算法在FPGA上的部署。

概述

FPGA用于硬件加速主要有以下优势:

  • 可以通过优化提高并行度,减小推理的时延
  • 可以利用丰富的I/O做一些特殊的应用

劣势其实也是优势导致的:

  • 优化程度两极分化,需要很高的工程技术
  • FPGA在相同价位在绝对算力上无法和GPU、ASIC媲美
  • 在优化时可能会用到很多细节

两种开发模式

目前FPGA做加速主要有以硬件开发为主的较为底层的开发方式,和通过Xilinx的软件栈进行较高层次的开发方式。

偏硬件的开发方式其特点主要是可以配置的内容很多,当然需要很多知识和技能,需要大量时间完成,优化的上限很高。偏软件的开发方式可以通过工具完成自动化的设计,可配置的内容少,比较注重工具链的使用,最终的性能略差。

打个比方,就是软件能做到5-10年工程师的水平基本就是极限。

目前Xilinx这边的趋势是通过软件栈降低开发难度,从而让深度学习全栈的应用尽可能简单地在FPGA上以通用的形式部署。

偏硬件的开发方式综述

1.通过HLS写深度学习的预处理(通道变换、Resize和卷积核加速等)。但是外设驱动等需要通过硬件的方式(例如在Vivado里写或者添加IP核)。

2.由于硬件资源和网络的大小直接相关,在此开发方式往往会对网络进行压缩(量化、剪枝等)(例如PYNQ-Z2在 16bit浮点下最大的网络就是LeNet-5近似的)

3.Xilinx官方有提供很多的量化和网络压缩的例子,参考Xilinx的GitHub。

4.借助软核,完成片上系统的开发(SoC)。例如Arm、RISC-V、MicroBlaze等,通过Xilinx SDK进行开发。这也是近些年例如Arm杯、Digilent杯的内容(集创赛)。这种方式是在借助一定软件支撑下(SDK),完成硬件的设计和软件的驱动。

上述都需要很长的学习周期,需要比较好的Verilog基础和Debug能力。

偏软件的开发方式概述

这两年Xilinx举办了全球的自适应计算大赛,并且强烈推荐使用Vitis-AI进行开发。由于AI部署在FPGA的技术栈过于复杂,Xilinx通过借助已有的硬件设计(DPU)和软件库(Vitis的各种加速库)以及一些专用SDK(VVAS等)来降低开发的难度和门槛。但是我们还是从基础的Petalinux和PYNQ说起。

1.偏软件的开发的一个特点就是上系统(PetaLinux)。而这个需要ZYNQ架构的芯片来完成。需要注意系统运行在Arm核心上,因而会占用Arm的计算资源。需要注意,Arm核心在这里最好只进行一些简单的控制和逻辑判断,不要有计算密集的内容,否则最后的加速全被Arm核心拖了。

2.借助PYNQ完成开发的一大好处就是:不需要过分注意外设的驱动(例如USB、SD卡等)。主要考虑模型和前后处理如何加速实现。一种方式是基于HLS的设计,在PYNQ中加载参数。可以利用PYNQ的特点分次加载,从而能构建超过板卡资源本身的网络。另一种方式是基于DPU实现,通过Vitis-AI编译量化,并把编译好的模型加载到DDR里,并通过Python编程完成后处理。上述两种都可以嵌入自己实现的加速核。

3.较为新的开发方式,如KV260。KV260借助VVAS软件栈完成深度学习的一个视频流推理的过程,其主要基于gstreamer实现。下图就是SmartCam应用的组成。

请添加图片描述

可以看到Xilinx将绝大多数软硬件的驱动和整体推理的pipeline构建好了。开发者只需要考虑模型的训练、压缩和编译成xmodel。通过更改软件中的cpp文件实现功能上的更改。

4.使用VCK5000的开发方式:这种方式算是云服务的一种形态,即使用高性能卡完成高通量的处理。其内部的实现方式是通过NoC(network on chip)来实现多种加速单元的通信和数据交换,整体完成深度学习的推理流程

难度分级

请添加图片描述

推荐的学习资料:

请添加图片描述

一些建议

请添加图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

·空感自诩”

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值