【论文解读】Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks

Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks

论文地址:http://cadlab.cs.ucla.edu/~cong/slides/fpga2015_chen.pdf

尽管目前FPGA加速器已经展示了相比通用处理器更好的性能,加速器设计空间并没有很好发掘。一个严重的问题是,一个FPGA平台的计算吞吐并未很好匹配内存带宽。因此,已有的方案要么未充分利用逻辑资源,要么未充分利用内存带宽,都不能获得最佳性能。同时,深度学习应用不断增加的复杂度和可扩展性让这个问题更加严重。

1. 简介

* 量化分析可能解决方案的计算吞吐和所需内存带宽;

* 在计算资源和内存带宽限制下,我们用roofline模型识别所有可能的解决方案,讨论了不同层如何寻找最优解;

* 我们提出一种CNN加速器设计,对每层使用统一的循环展开因子;

* 实现了CNN加速器,获得61.62GFLOPS处理性能,是目前最优的;

2. 背景

2.1 CNN基础

在FPGA平台上有这样几个设计挑战阻碍了高效的CNN加速器设计:首先,片上数据只有很小一部分,故循环分块(loop tiling)是必要的,不合适的循环分块可能降低数据重用和数据并行处理效率。

其次,PE和缓冲区组织及其互联应仔细考虑,这样能高效处理片上数据。第三,PE的数据处理吞吐应该匹配FPGA平台的片外访存带宽。

**无关:**生成广播式连接;

**独立数据共享关系:**buffer和计算引擎直接连接;

**相关:**产生带多路开关的互联;

对图5中代码分析相关性,结论如下表:

循环流水线: 是HLS里一项重要优化技术,通过将不同循环层次操作执行交叠,可提高系统吞吐。可获得的吞吐受资源和数据相关性限制。loop-carried相关性会导致循环不能完全流水线。

经过循环展开和流水线优化的代码如图所示。

(注:后面4个条件是显然的,第一个是由于循环展开、流水线的要求而必须加以限制,为了获得高计算能力,必须付出增加硬件面积的代价)

给定特定分块尺寸组合(Tm, Tn, Tr, Tc),计算性能(或roofline模型中的计算上限)可以由公式(3)计算得到。从公式中看到,计算上限是Tm和Tn的函数。

**本地存储提升:**如果最内层循环的通信部分(图9循环变量为ti)与某个数组是无关的,那么该循环会有冗余内存操作。本地存储提升【13】可以用于降低冗余操作。

在图9中,最内层循环ti与output_fm是无关的,所以访问output_fm的操作可以提升到外层循环。注意到提升操作可以一直执行,直到与循环变量相关。

利用该技术,对output_fm的访存需求从

**为了数据重用而实行循环变换:**为了最大可能进行数据重用,我们使用基于多面体的优化框架来发现所有有效的循环变换。表3显示了循环层次和数组之间的数据共享关系。本地存储提升方法用到每个可能的循环调度中,尽可能减少总通信量。

里面变量较多,分别表示如公式(5)~(11)

在图8(b)中,带宽上限线和计算上限是由特定平台决定的。在带宽上限线左侧的点需要比平台能提供的访存带宽更高,因此不可实现,即图中虽然设计A取得了最高的计算性能,但平台内存带宽不能满足该设计的需求,所以平台上可以获得的性能落到A’ 位置。

设计一个支持不同展开系数的多个卷积层的硬件加速器将会非常有挑战性,因为需要设计复杂的硬件架构来支持重配置计算引擎和互联。

一种替代方案是所有层都用同一套展开系数。我们枚举了所有可行的解来选择最优的全局设计参数。使用统一展开系数易于设计实现,但对某些层是次优解。表4表明使用统一展开系数(64, 7),性能下降不超过5%。因此我们的实验选择了这个展开系数。

枚举空间大约98,000,使用普通笔记本大约10分钟就能完成。

4. 实现细节

本节描述我们解决方案的具体实现。

4.1. 系统概述

图10 显示了我们的实现概述。

二级循环展开(图2中的Tm和Tn)实现为并行执行计算引擎,使用了类似图7的树状结构。对于最优的跨层设计(Tm, Tn)=(64,7),单个引擎接收来自输入特征图的7个输入,以及7个来自权值的输入以及一个bias输入。64个复制的结构用来展开Tm。

(注:由于使用了64个相同的计算引擎,每个消耗35个dsp,有7个乘法器和7个加法器组成,每个加法器消耗2个dsp,每个乘法器消耗3个dsp)

4.3 存储子系统

片上缓冲区是基于双缓冲设计的,工作在乒乓模式来掩盖数据传输时间到计算时间中。它们一共有4组,两组用于输入特征图、权值,两组用于输出特征图。我们先介绍每个缓冲区的组织,随后介绍乒乓数据传输机制。

每个缓冲区包括几个独立的缓冲区bank,每个输入缓冲区的bank数目等于Tn(input_fm的分块尺寸)。输出缓冲区的bank数目等于Tm(output_fm的分块尺寸)。

双缓冲用于实现乒乓操作。为了简化讨论,我们使用图9的具体例子来展示乒乓操作机制。见图9中的代码。“off-load”操作只有在[N/Tn]次“load”操作后才会发生一次。但每个output_fm传输的数据量大于input_fm,比例大约为Tm/Tn = 64/7 = 9.1,为了提高带宽利用率,我们实现了两套独立通道,一个用于load操作,另一个用于off-load操作。

图12显示了计算和数据传输阶段的时序图。

两幅图中,我们设置两个参数,AXI总线到DRAM控制器的位宽,和DRAM控制器的外部带宽,在它们最高配置下单改变IP-AXI接口数目和每个IP的位宽。

在图13(a)中,增加IP-AXI接口位宽不影响带宽(400MB/s在100MHz频率下)。

在图13(b)中,更多IP接口加入AXI总线,它的带宽几乎线性增长,最高带宽大约4.5GB/s。

在我们CNN加速器设计中,最小带宽需要1.55GB/s。根据图13,4个IP接口足够用于这个设计。我们使用两个AXI-IP接口用于数据传输引擎0,两个用于数据传输引擎1,如图10所示。

5. 评估

本节首先介绍我们实验环境设置,然后提供了全面的实验结果。

5.1 实验设置

加速器设计用Vivado HLS(v2013.4)实现。该工具允许用C语言实现加速器,并导出RTL为一个Vivado IP核。CNN设计C代码通过增加HLS定义的编译向导实现并行化,并行化版本通过时序分析工具进行了验证。快速综合前仿真使用该工具的C仿真和C/RTL联合仿真完成。综合前资源 告用于设计空间探索和性能估计。导出的RTL使用Vivado v2013.4进行综合、实现。

我们的实现基于VC707板卡,有一片Xilinx FPGA芯片Virtex 7 485t。它的工作频率为100MHz,软件实现运行在Intel Xeon CPU E5-2430(@2.2GHz),15MB Cache。

5.2 实验结果

本小节我们先汇 资源占用,之后对比软件实现(CPU上)和我们的加速器实现(FPGA上)。最后,给出了我们的实现和已有FPGA实现的对比情况。

布局布线由Vivado工具集提供。之后,工具会汇 资源占用情况,如表6所示。可以看出我们的CNN加速器已经差不多完全利用了FPGA的硬件资源。

图14显示了我们板卡实现图。

之前的方法是用GMACS,而我们用GFLOPS作为性能指标。我们首次将所有结果数字表示为GOPS,实现同等对比。注意每个乘加操作包括两个整数操作。表5的第9行显示,我们的加速器具有61.62GOPS吞吐,相比其他实现至少有3.62倍加速。

由于不同工作使用了不同并行策略和不同FPGA平台,很难有一个直接对比。为了提供公平对比,我们进一步给出“性能密度”结果,定义为单位面积(每slice)的GOPS,可表示一个设计的效率而无需考虑所用的FPGA平台,最终结果如表5最后一行所示,我们的设计获得最高性能密度,比第二名高1.8倍。另外,如果使用定点计算引擎,我们的方法可以获得更好性能和性能密度,因为定点处理单元使用更少的资源(如表9所示)。

(注:定点评估有问题,加法器不需要DSP,乘法器所需资源不比浮点少)

img

6. 相关工作

本节,我们讨论不同设计方法,参考其他之前的基于FPGA的CNN加速器设计工作。

首先,很多CNN应用加速器都聚焦在优化计算引擎上。实现【6】【14】【3】是三个代表。

最早的方法【6】主要用软件搭起CNN应用,而是用一个硬件脉动结构加速器完成滤波卷积工作。这个设计省下大量硬件资源,用于自动驾驶机器人的嵌入式系统。

【14】【2】【3】在FPGA上实现了完整CNN应用,但采取了不同并行措施。【14】【2】主要利用了特征图内部卷积核的并行性。【3】使用了输出内、输出间的并行性。我们的并行方法类似,但他们并未使用片上缓冲区做数据重用,而是用很高带宽和动态重配置来提高性能。我们的实现合理进行数据重用,平衡了带宽限制和FPGA计算能力。

其次,【12】考虑了CNN的通信问题,选择最大化数据重用,将带宽需求降至最低。但他们的方法并未考虑最大化计算性能,另外当换到下一层计算时他们需要为FPGA重编程(大约10秒),而我们的方案秩序消耗不到1us来配置几个寄存器。

7. 结论

文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树OpenCV中的深度学习图像分类11217 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年11月15日
下一篇 2019年11月15日

相关推荐