CN108229670B - 基于fpga的深度神经网络加速平台 - Google Patents

基于fpga的深度神经网络加速平台 Download PDF

Info

Publication number
CN108229670B
CN108229670B CN201810010938.XA CN201810010938A CN108229670B CN 108229670 B CN108229670 B CN 108229670B CN 201810010938 A CN201810010938 A CN 201810010938A CN 108229670 B CN108229670 B CN 108229670B
Authority
CN
China
Prior art keywords
layer
fpga
data
neural network
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810010938.XA
Other languages
English (en)
Other versions
CN108229670A (zh
Inventor
李曦
周学海
王超
陈香兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Institute Of Higher Studies University Of Science And Technology Of China
Suzhou Zhongke Hanhai High Technology Co ltd
Original Assignee
Suzhou Institute for Advanced Study USTC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Institute for Advanced Study USTC filed Critical Suzhou Institute for Advanced Study USTC
Priority to CN201810010938.XA priority Critical patent/CN108229670B/zh
Publication of CN108229670A publication Critical patent/CN108229670A/zh
Application granted granted Critical
Publication of CN108229670B publication Critical patent/CN108229670B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种基于FPGA的深度神经网络加速平台,包括通用处理器、FPGA以及DRAM,首先通用处理器用于解析神经网络配置信息以及权值数据,并将神经网络配置信息以及权值数据写入DRAM中,然后FPGA从DRAM中读取配置信息,用于生成FPGA加速器,接着通用处理器读入图片信息,并把它写入DRAM中,然后FPGA加速器从DRAM中读取图片数据并开始计算,并把计算结果写入DRAM中,最后通用处理器从DRAM中读取分类的结果。本发明加速器使得各层能够同时部署在FPGA芯片上,并以流水线的方式运行,使得不具备硬件知识的编程者可以利用已有的FPGA资源轻松获得良好的性能。

Description

基于FPGA的深度神经网络加速平台
技术领域
本发明涉及一种算法的硬件加速平台,具体涉及一种通用性好和灵活性高的基于FPGA的深度神经网络加速平台其设计方法。
背景技术
神经网络隶属于人工智能领域的连接主义学派,是一种应用类似于大脑神经突触连接的结构进行信息处理的数学模型。20世纪50年代,第一代神经网络——感知机诞生,能够实现线性分类、联想记忆等;20世纪80年代,多层感知机及其训练算法——反向传播算法(back propagation,BP),因为能够解决线性不可分问题被广泛研究和应用。但是当时较为低下的硬件计算能力和网络训练算法易陷入局部极小等问题,成为制约神经计算方法发展的瓶颈,直到2006年Hinton教授开创的“多层结构、逐层学习”的深度学习方法,才使得神经网络的强大计算能力真正发挥出来,并在大数据的时代背景下成为大数据分析领域的一颗璀璨的明星。这种方法在语音识别、图像识别、自然语言处理等方面,已经取得了突破性的成功,以惊人的速度和结果,不断刷新着这些应用领域内的各种标志性纪录。
深度神经网络由输入层、隐藏层和输出层组成。数据由第一层(输入层)流入,通过逐层(隐层)传递和映射,从最后一层(输出层)流出。通过增加隐藏层的数量,各层以接力的方式进行原始数据的特征学习,本质上是在逼近原始数据与其特征之间非线性极强的映射关系。根据神经网络的一致逼近原理(universal approximation theory),对于任意一个非线性映射,一定能找到一个浅层网络和一个深度网络以任意精度逼近它,只要浅层网络的隐层神经元个数足够多或者深度网络足够深。但通常,较浅层网络而言,深度网络只需要少得多的参数就可以达到与之相同的逼近效果。
深度神经网络的计算过程主要有训练和预测两部分,但由于其具有计算密集性和数据密集性的特点,当面对大规模数据时,往往存在计算资源需求大、计算时间过长、功耗较大等问题。训练过程采用离线方式即可满足一般应用的需求,而预测则需在线进行,对实时性要求更高,因此加速其预测过程更有实践意义和应用市场。深度神经网络预测过程的高性能实现也已成为学术界和工业界的研究热点之一。
目前用来加速深度神经网络的平台有软件加速平台和硬件加速平台两种。
软件平台主要有云计算平台和图形处理单元(GPGPU)平台。1)云计算平台。一般来说,云计算平台由大量同构的基于通用CPU的单节点服务器组成,多个节点之间互相协同合作。云计算平台有多种编程模型,较为常用的为基于Map-Reduce和基于图计算的编程模型,本质上都是利用任务级并行和数据级并行对应用进行加速。虽然,云计算平台有很强的计算能力,但平台中各个节点的计算效率并没有得到提高,同时集群的运行和维护也增加了功耗和维护开销。同时,云平台的各个节点实际上仍是CPU架构,其通用性导致云计算平台并不能最大化的加速特定的深度神经网络。2)GPGPU。GPGPU由大量并行的计算单元组成,通常采用SIMD的方式利用数据级并行加速应用的执行,对于计算密集型应用来说是一种高效的解方案。目前,GPGPU领域有GLSL、CUDA和OpenGL等成熟的编程技术,开发门槛低,使得GPGPU成为目前较为广泛使用的加速并行平台之一。GPU仅适用于数据级并行的任务,对于深度神经网络计算过程中的非数据级并行部分的加速效果不尽理想。
硬件平台主要有专用集成电路(ASIC)和现场可编程门阵列(FGPA)。1)ASIC。相对于云平台和GPGPU,ASIC采用改进硬件架构来对算法进行加速。ASIC作为特定专用的集成电路,对特定的应用和算法具有较高的计算效率。但其专用性也导致其灵活性差,开发成本高;硬件设计的高门槛也使得其设计开发周期长,开发难度大。2)FPGA。现场可编程门阵列FPGA内部含有大量可重新配置的逻辑电路,既保证了接近ASIC的加速性能,又通过其可重构特性提供了类似软件实现的灵活性,具有开发成本低、功耗低、可编程等特点。同时,随着FPGA的不断发展,其计算能力不断增强,FPGA与通用CPU间的通信也变得越来越简单,基于FPGA的硬件加速器是目前研究的热点之一。
综合以上加速平台的分析可知,FPGA是介于ASIC的效率和通用处理器的可编程性之间的具有吸引力的选择,但是FPGA的开发需要具备一定的硬件设计经验,并且需要很长的开发周期,正因为如此,FPGA将许多软件编程人员拒之门外。针对这个问题,本课题拟设计一个基于FPGA的深度神经网络加速平台,使软件编程人员能够使用库函数一样使用平台提供的接口搭建指定的网络拓扑,实现自己的FPGA加速器。
发明内容
针对上述存在的技术问题,本发明目的是:提供了一个基于FPGA的深度神经网络加速平台,使得不具备硬件知识的编程者可以利用已有的FPGA资源,轻松获得良好的硬件性能。
本发明的技术方案是:
一种基于FPGA的深度神经网络加速平台,包括通用处理器、DRAM和FPGA,所述通用处理器用于解析神经网络配置信息以及权值数据,并将神经网络配置信息以及权值数据写入DRAM中,然后FPGA从DRAM中读取配置信息,生成FPGA加速器,接着通用处理器读入图片信息,并把它写入DRAM中,然后FPGA加速器从DRAM中读取图片数据并开始计算,并把计算结果写入DRAM中,最后通用处理器从DRAM中读取计算的结果;所述生成FPGA加速器,包括以下步骤:
S01:根据深度神经网络特点,确定数据合适的表示位数;
S02:根据深度神经网络计算过程,针对各层分别设计出可扩展的IP核实现;
S03:根据用户的网络拓扑结构和FPGA的资源,确定该种资源配置下神经网络各层对应的硬件IP核结构;
S04:移植操作系统到硬件平台,并将硬件IP核烧写到硬件平台,编写各个硬件设备的驱动;
S05:在用户层调用各个硬件IP核,形成硬件加速器。
优选技术方案中,所述步骤S01中数据合适的表示位数是指用定点表示数据代替浮点表示数据,并且在深度神经网络中,针对各层对数据精度降低的敏感性不同,各层选择不同比特位来表示数据。
优选技术方案中,所述步骤S02中各层分别设计出可扩展的IP核,具体包括卷积层IP核、池化层IP核、激励层IP核、全连接层IP核。
优选技术方案中,所述步骤S02中,还提供参数<flagpool,flagact>来标识池化层以及激励层是否被调用;在设计卷积层IP核和全连接层IP核时,使用了双缓冲机制来预取下一个分块的数据,达到了计算时间与数据传输时间重叠的效果;在设计卷积层IP核和全连接层IP核时,通过把并行循环展开层调整到最内层循环,使得流水线的流水间隔为1;激励层IP核使用分段线性近似的方法实现任意的激励函数。
优选技术方案中,所述步骤S03包括以下步骤:
解析深度神经网络各层的配置信息;
根据各层的计算任务为每一层分配相应的硬件资源;
每一层根据分配到的硬件资源,确定其对应的循环分块大小,即该层的硬件IP核结构。
优选技术方案中,神经网络各层的配置信息包括,
卷积层:层类型、卷积核的个数、卷积核的大小、卷积核的步长;
池化层:层类型、池化方法、池化层的大小、池化层的步长;
激励层:层类型、激励方法;
全连接层:层类型、输出个数。
优选技术方案中,在确定各层对应的循环分块大小时,采用的是设计空间搜索,目标是最大化FPGA资源利用率。
优选技术方案中,所述步骤S04包括以下步骤:
在驱动的编写中,采用访问Linux字符设备的方式访问各个硬件设备;
在DMA的驱动编写中采用映射机制进行数据填充;
所述映射机制为在内存中预留出一段连续的物理内存,将其映射到内核空间中的一段地址中,然后将该段内核空间地址映射到用户空间。
优选技术方案中,所述步骤S05中形成的硬件加速器特点在于,深度神经网络各层能够同时部署在FPGA芯片上,各层间以流水线的方式运行,减少了中间数据的传输,同时整个加速器的吞吐量也大大增加。
与现有技术相比,本发明的优点是:
本发明可以简单易用,对用户透明,能够根据硬件资源和网络拓扑设计出针对深度神经网络的加速器,来加速深度神经网络应用,该加速器使得各层能够同时部署在FPGA芯片上,并以流水线的方式运行。本发明使得不具备硬件知识的编程者可以利用已有的FPGA资源轻松获得良好的性能。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1是本发明实施例的加速系统平台的流程图;
图2是本发明实施例的加速系统平台的加速器设计流程图;
图3是本发明实施例的加速系统平台的层次结构图;
图4是本发明实施例的加速系统平台的卷积层IP核结构设计图;
图5是本发明实施例的加速系统平台的分段线性近似实现激励层IP核结构设计图;
图6是本发明实施例的加速系统平台的分段线性近似实现sigmod函数结构设计图;
图7是本发明实施例的加速系统平台的全连接层IP核结构设计图;
图8是本发明实施例的加速系统平台的实现的加速器结构设计图;
图9是本发明实施例的操作系统移植到开发板的工作流程图;
图10是本发明实施例的加速系统平台的DMA传送数据的流程图;
图11是本发明实施例的加速系统平台的映射机制下DMA传送数据的流程图。
具体实施方式
以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。
实施例:
本发明实施例中的深度神经网络加速平台包括通用处理器、现场可编程门阵列以及存储模块,其中,FPGA和通用处理器之间的数据通路可以采用PCI-E总线协议、AXI总线协议等。本发明实施例附图数据通路采用AXI总线协议为例说明,但本发明并不限于此。
图1是本发明实施例的加速系统平台的设计流程图,包括的步骤如下:
通用处理器用于解析神经网络配置信息以及权值数据,并将神经网络配置信息以及权值数据写入DRAM中;
FPGA从DRAM中读取配置信息,用于生成FPGA加速器;
通用处理器读入图片信息,并把它写入DRAM中;
FPGA加速器从DRAM中读取图片数据并开始计算,并把计算结果写入DRAM中;
通用处理器从DRAM中读取分类的结果。
图2是本发明实施例的加速系统平台的加速器设计流程图,包括的步骤如下:
根据深度神经网络特点,确定数据合适的表示位数;
根据深度神经网络计算过程,针对各层分别设计出可扩展的IP核实现,主要包括卷积层IP核、全连接层IP核等;
根据用户的网络拓扑结构和FPGA的资源,确定该种资源配置下神经网络各层对应的硬件IP核结构。
图3是本发明实施例的加速系统平台的层次结构图,包含三层,由上到下分别是:用户层、内核层以及硬件层,其中最下层是硬件层次,其它两层都为软件层次。
硬件层次就是神经网络的硬件IP Core层,它除了包含神经网络加速器结构以外,还包含了其他的硬件IP Core部件,比如DMA以及一些总线互连结构等。
软件层次则包含了应用层、平台支持库层以及硬件驱动层这三个层次。
对于应用层,用户通过调用下层的平台支持库层所提供的硬件编程接口来实现能够运行在硬件加速器上的程序。
平台支持库层次是软件层次中最重要的一个层次。平台支持库层主要包含了运行时环境库和用户编程接口这两个内容。
硬件驱动层是软件层次的最底层,主要用来提供硬件加速器以及其他IP Core在Linux操作系统下正常运行的支持。
不同网络拓扑下,改变权值数据的比特位数,观察预测精度(与32位浮点表示的相对精度),结果如表1所示。从表1可以看出,对于Lenet网络,权值数据只需6比特即可达到相同的预测精度,而对于Alexnet网络,权值数据需要10比特才能达到相同的预测精度,即不同的网络拓扑对于权值数据所需的比特位数不同,此结论同样适用于计算过程中的中间结果数据。
Figure GDA0003126300480000051
表1:不同网络拓扑下,精度随比特位数变化
同时,将Lenet网络进行分解,如表2所示,并改变权值数据的比特位数,观察预测精度(与32位浮点表示的相对精度),结果如表3所示。从表3可以看出,对于Layer1,权值数据只需3比特即可达到相同的预测精度,而对于Layer2,权值数据需5比特,对于Layer3,权值数据需7比特,对于Layer4,权值数据需5比特,即同一网络拓扑下,不同层对于权值数据所需的比特位数不同,此结论同样适用于中间结果数据。同时也看以看到,卷积层对数据精度降低不太敏感,因此可以用较少的比特位来表示,而全连接层由于靠近分类结果,因此对数据精度降低很敏感,因此需要较多的比特位来表示数据。
在神经网络的计算中,常用的是用32位浮点来表示数据,也有用16位定点或者16&32位混合来表示数据,这样会浪费大量的存储空间,同时也会增大芯片面积。而在本发明设计的神经网络加速器中,采用定点表示数据代替浮点表示数据,并且对于不同的层,定点表示数据的比特位数也不相同。对于卷积层,数据表示所用的比特位数区间为[2,10]位;对于全连接层,数据表示所用的比特位数区间为[3,21]位。
Figure GDA0003126300480000052
表2:Lenet各层分解
Figure GDA0003126300480000061
表3:同一网络拓扑不同层,精度随比特位数变化
典型的卷积神经网络包含两个部分:特征提取器和分类器。其中特征提取器包含多个卷积层和池化层,用来提取输入图片的特征,形成特征图片;分类器一般由全连接层组成,用来决定输入图片属于哪个类别。
卷积层的伪代码如下所示,它接收N个特征图作为输入,每个输入特征图被一个大小为K*K的滑动窗口做卷积运算,用来生成一个输出特征图上的一个像素点。其中滑动窗口的步长是S,M个输出特征图将作为下一轮的输入参与运算。
Figure GDA0003126300480000062
为了加速卷积层的计算,本发明利用了循环分片(loop tiling)、循环流水(looppipeline)和循环展开(loop unrolling)对上述伪代码进行优化。优化后的伪代码如下所示。
由于循环迭代变量i和j相对来说较小(通常范围是[3,11]),因此没有分片,其他的循环迭代变量(row、col、to和ti)都分片成了的分片的循环迭代变量(trr、tcc、too和tii)。
利用循环流水和循环展开来充分利用FPGA的大量计算资源,增加计算的并行力度。同时为了使得流水线的流水间隔为1,本发明把并行循环展开层调整到最内层循环中。此种方法充分利用了数据局部性,并降低了硬件所需数据带宽,提高了计算吞吐率。
Figure GDA0003126300480000071
图4是本发明实施例的加速系统平台的卷积层IP核结构设计图,该结构包括:
Input Buffer:输入数据缓冲区;
Weight Buffer:权值数据缓冲区;
Output Buffer:输出数据缓冲区;
AXI-Stream:允许无限制的数据突发传输,为高性能数据传输协议;
AXI-Lite:一种轻量级的地址映射单次传输协议,适用于硬件运算单元的控制信号传输;
Memory Interconnect:数据通路互联;
DMA:直接内存存取,负责加速器和内存间的数据传输;
Control Interconnect:控制信号线路互联;
PE:乘法计算单元;
本发明设计了大量的并行处理单元(PE)来提高计算性能,每个PE负责输入特征图的像素和相应权值的乘法计算,后面跟着一个加法树结构来累加卷积的中间结果。处理单元PE的数量根据分片Tm*Tn决定。
同时,本发明使用了双缓冲机制来预取下一个分片的数据,达到了计算时间与数据传输时间重叠的效果。
在神经网络中,池化层和激励层总是跟随在卷积层之后(如果有用到),并且能够根据卷积层的输出直接计算出它们的特征图,所以提供参数<flagpool,flagact>来标识池化层以及激励层是否被调用。
图5是本发明实施例的加速系统平台的分段线性近似实现激励层IP核结构设计图,本发明实例采用分段线性近似来实现S型激励函数,将函数按X轴划分为若干等值间隔,每个间隔内按Y=ai*X+bi,X∈[xi,xi+1)进行线性近似,其中xi+1-xi为近似的间隔大小。
每当需要计算激励函数时,首先按照X值寻找其所在的区间并计算其对应的ai和bi相对于基地址的偏移量,进行乘加运算后,即可近似得到Y值。
这种实现方式有两点好处:
1)、可实现任意的S型激励函数或线性函数,而且无需更改任何硬件设计,仅需要更换系数a和系数b所存储的数值即可;
2)、误差极小,当近似区间降低时,误差可以达到可以忽略,而代价仅仅是增加用于存储系数a和系数b的BRAM。而且深度学习计算本身对数据的精确度的要求并不是很高或者说一定程度的精度损失并不影响数据结果。
图6是本发明实施例的加速系统平台的分段线性近似实现sigmod函数结构设计图,与图5不同的是,增加了一条X直接传输到Y的通路,让运算单元可以仅仅执行卷积操作而不经过激励函数的处理。
由于S型激励函数基本上是关于某点对称,以sigmoid函数为例,sigmoid函数关于(0,0.5)对称,所以当x小于0时,按照1-f(-x)进行计算,这样可以复用硬件逻辑,减少对硬件资源的使用。而且当x等于8时,f(x)等于0.999665,之后便无限接近于1,故当x大于8时,直接对结果赋值为1。
全连接层主要涉及大量的矩阵乘法运算,本发明同样采用循环分片思想优化全连接层计算,图7是本发明实施例的加速系统平台的全连接层IP核结构设计图。
假设分片的大小为16,将输入特征矩阵每一行内部按16进行分片,权值参数矩阵按照每一列16个元素进行分片。按行将输入特征矩阵的每16个数据与权值参数矩阵每一列对应的16个数值进行点积运算,待每一行计算完毕后再将这些临时值累加即可得到最终结果,累加时同样采用的是加法树结构(如图4所示)。此种方法不仅充分利用了数据局部性,并降低了硬件所需数据带宽,还让单个运算单元可以实现任意规模的矩阵乘法计算。
为了保持高吞吐率,分片的大小应与运算单元内部设计相配合,同并行粒度保持一致,在矩阵乘法运算时,可以将分片设定为2的n次方,来充分发挥二叉树的累加性能。由于分片大小与并行粒度有关,理论上来说分片越大,并行度越高,运算单元的性能也会越好,所以在硬件资源和带宽允许的情况下,选择最大的2n作为运算单元的分片大小。
神经网络各层的配置信息包括,
卷积层:层类型、卷积核的个数、卷积核的大小、卷积核的步长;
池化层:层类型、池化方法、池化层的大小、池化层的步长;
激励层:层类型、激励方法;
全连接层:层类型、输出个数。
下面是神经网络中卷积层和池化层的配置信息格式。
Figure GDA0003126300480000081
在设计好上述可扩展IP核结构后,读入神经网络的配置信息和FPGA的资源,根据每一层的计算量为每一层分配相应数量的DSP单元,根据每一层的权值数据所占存储空间为每一层分配相应数量的BRAM单元。然后各层在所分配的硬件资源下,利用设计空间搜索方法,枚举出所有可能的分片情况,找到各层在该配置下,能够最大化硬件资源利用率的组合,即为该层的硬件IP核结构。
当用户给出的网络拓扑是:卷积层→激励层→池化层→卷积层→激励层→池化层→全连接层→全连接层和ZedBoard ZYNQ FPGA开发板时,加速系统平台实现的加速器结构设计图如图8所示。该结构包括:
主机端作为整个系统的控制端,运行软件端代码,并将加速任务加载至FPGA端进行工作。此外,主机端可控制各IP核的工作状态和数据读取等等;
FPGA芯片为整个系统的硬件加速部件,可以根据不同加速任务在FPGA芯片上固化相应的IP核来实现。各个IP核以流水线的方式运行,减少了中间数据的传输,提高了系统的吞吐量。
DDR,负责存储神经网络参数以及输入数据,这里要求数据存储的物理地址为连续的,方便DMA进行数据传输;
数据总线,负责整个系统主机端和FPGA端数据传输;
控制互联,负责整个系统主机端和FPGA端控制信号的传输。
直接内存存取DMA,负责加速器和DDR间的数据传输,每个硬件处理单元均配备一个DMA来并行读取数据;
图9是本发明实施例的操作系统移植到开发板的工作流程图。第一步就是格式化SD卡,生成两个分区:分区1是FAT格式,空间大小在1G以上;分区2是EXT-4格式,空间大小在3G以上。第二步准备四类文件:BOOT.BIN文件包含一些可编程逻辑和处理系统的配置信息,除此之外还包含有加载linux的u-boot信息;Device-tree文件包含有各个硬件相关的驱动信息,而且是内核启动的参数的home目录;这两个文件和内核镜像都存放在分区1中。文件系统是Linux下支持文件读取与存储的系统,目前在平台下支持的文件系统是l inaro和BusyBox,该文件存放在分区2中。这四类文件包含了系统在硬件平台下运行所需要的所有的相关文件。第三步编写IP核和硬件设备的驱动:采用Linux字符设备访问的方式编写各个硬件设备的驱动。
图10和11是本发明实施例的加速系统平台的DMA传送数据的流程图。本发明实施例采用的是驱动动态加载的方式,即将编写好的驱动模块以内核模块的方式动态加载到内核中,各个设备驱动都是采用Linux字符设备驱动模型实现。在操作系统中,分页的机制使得用户进程空间连续地址中存放的数据在物理地址中并不一定是连续的,而DMA传送数据需要连续的物理地址,所以在DMA将数据传送到FPGA片内之前,需要将用户层的数据拷贝到物理地址连续的空间内。
如图10为DMA传送数据的流程图,如图所示:
首先在DMA驱动中利用Kmalloc函数分配一段连续的物理内存,并给出其对应的内核空间的逻辑地址;其次在用户执行应用程序时,将所需要的数据从用户进程空间读取出来并写入到Kmalloc分配的连续物理内存对应的内核空间地址中,写入完毕后数据就实现了在物理地址中的连续存储,最后DMA从连续的物理地址空间中读取数据传送到IP Core,IP Core读取数据进行计算。这就是DMA将数据从用户态传送到IP Core内部的整个流程。IPCore计算后的结果先通过DMA传送到物理地址连续的内存中,然后再从内核空间中将数据传送到用户进程的地址空间中。从图可以看出,完成一次计算需要两次的数据拷贝,而数据拷贝的速度是很慢的,无疑这会降低加速器的性能,为此本发明采用了映射的方式来减少整个数据传送过程中的数据拷贝次数。
图11是映射机制下DMA传送数据的示意图。首先在Linux系统中预先保留一段连续的物理内存(64M),并将它映射到内核空间的前896M中,则该段物理内存和内核地址空间中的一段虚拟地址是对应的,这些信息会保存在MMU PageTable中;然后将内核空间的这段虚拟地址映射到用户进程的某段地址空间中,这样该段用户进程地址空间就和物理地址完成了映射,该段用户进程地址内的数据是存储在地址连续的一段物理内存中。在映射机制下,DMA传送数据的整个流程如下:应用程序执行的过程中将所需要的数据填充到映射后的某段用户进程空间的地址中,然后DMA就可以操作与用户虚拟地址对应的物理地址进行数据的传送,IP Core读取数据进行计算,DMA将计算结果传送到指定的连续的物理内存中,而该物理内存已经映射到用户进程,所以不再需要数据的拷贝操作。由此可见一次计算只需要一次数据的拷贝操作,在数据量小的时候加速器性能的差别不是很明显,但是如果数据量非常大的时候,需要进行多次分片操作,涉及到的数据拷贝次数会非常多,加速器的性能也会出现明显的不同。
上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。

Claims (4)

1.一种基于FPGA的深度神经网络加速平台,其特征在于,包括通用处理器、DRAM和FPGA,所述通用处理器用于解析神经网络配置信息以及权值数据,并将神经网络配置信息以及权值数据写入DRAM中,然后FPGA从DRAM中读取配置信息,生成FPGA加速器,接着通用处理器读入图片信息,并把它写入DRAM中,然后FPGA加速器从DRAM中读取图片数据并开始计算,并把计算结果写入DRAM中,最后通用处理器从DRAM中读取计算的结果;所述生成FPGA加速器,包括以下步骤:
S01:根据深度神经网络特点,确定数据合适的表示位数;数据合适的表示位数是指用定点表示数据代替浮点表示数据,并且在深度神经网络中,针对各层对数据精度降低的敏感性不同,各层选择不同比特位来表示数据;
S02:根据深度神经网络计算过程,针对各层分别设计出可扩展的IP核,具体包括卷积层IP核、池化层IP核、激励层IP核、全连接层IP核;
还提供参数<flagpool,flagact>来标识池化层以及激励层是否被调用;在设计卷积层IP核和全连接层IP核时,使用了双缓冲机制来预取下一个分块的数据,达到了计算时间与数据传输时间重叠的效果;在设计卷积层IP核和全连接层IP核时,通过把并行循环展开层调整到最内层循环,使得流水线的流水间隔为1;激励层IP核使用分段线性近似的方法实现任意的激励函数;
S03:根据用户的网络拓扑结构和FPGA的资源,确定该种资源配置下神经网络各层对应的硬件IP核结构;
S04:移植操作系统到硬件平台,并将硬件IP核烧写到硬件平台,编写各个硬件设备的驱动;
在驱动的编写中,采用访问Linux字符设备的方式访问各个硬件设备;
在DMA的驱动编写中采用映射机制进行数据填充;
所述映射机制为在内存中预留出一段连续的物理内存,将其映射到内核空间中的一段地址中,然后将该段内核空间地址映射到用户空间;
S05:在用户层调用各个硬件IP核,形成硬件加速器。
2.根据权利要求1所述的基于FPGA的深度神经网络加速平台,其特征在于,所述步骤S03包括以下步骤:
解析深度神经网络各层的配置信息;
根据各层的计算任务为每一层分配相应的硬件资源;
每一层根据分配到的硬件资源,确定其对应的循环分块大小,即该层的硬件IP核结构。
3.根据权利要求2所述的基于FPGA的深度神经网络加速平台,其特征在于,神经网络各层的配置信息包括,
卷积层:层类型、卷积核的个数、卷积核的大小、卷积核的步长;
池化层:层类型、池化方法、池化层的大小、池化层的步长;
激励层:层类型、激励方法;
全连接层:层类型、输出个数。
4.根据权利要求3所述的基于FPGA的深度神经网络加速平台,其特征在于,在确定各层对应的循环分块大小时,采用的是设计空间搜索,目标是最大化FPGA资源利用率。
CN201810010938.XA 2018-01-05 2018-01-05 基于fpga的深度神经网络加速平台 Active CN108229670B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810010938.XA CN108229670B (zh) 2018-01-05 2018-01-05 基于fpga的深度神经网络加速平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810010938.XA CN108229670B (zh) 2018-01-05 2018-01-05 基于fpga的深度神经网络加速平台

Publications (2)

Publication Number Publication Date
CN108229670A CN108229670A (zh) 2018-06-29
CN108229670B true CN108229670B (zh) 2021-10-08

Family

ID=62642897

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810010938.XA Active CN108229670B (zh) 2018-01-05 2018-01-05 基于fpga的深度神经网络加速平台

Country Status (1)

Country Link
CN (1) CN108229670B (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032781A (zh) * 2018-07-13 2018-12-18 重庆邮电大学 一种卷积神经网络算法的fpga并行系统
CN109063825B (zh) * 2018-08-01 2020-12-29 清华大学 卷积神经网络加速装置
CN109117949A (zh) * 2018-08-01 2019-01-01 南京天数智芯科技有限公司 用于人工智能设备的灵活数据流处理器和处理方法
CN109086875A (zh) * 2018-08-16 2018-12-25 郑州云海信息技术有限公司 一种基于宏指令集的卷积网络加速方法及装置
CN109359732B (zh) * 2018-09-30 2020-06-09 阿里巴巴集团控股有限公司 一种芯片及基于其的数据处理方法
CN109376843B (zh) * 2018-10-12 2021-01-08 山东师范大学 基于fpga的脑电信号快速分类方法、实现方法及装置
CN109948777A (zh) * 2018-11-14 2019-06-28 深圳大学 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法
CN109740619B (zh) * 2018-12-27 2021-07-13 北京航天飞腾装备技术有限责任公司 用于目标识别的神经网络终端运行方法和装置
CN109685209B (zh) * 2018-12-29 2020-11-06 瑞芯微电子股份有限公司 一种加快神经网络运算速度的装置和方法
CN109685210A (zh) * 2018-12-29 2019-04-26 百度在线网络技术(北京)有限公司 卷积神经网络处理方法、卷积神经网络装置
CN109784489B (zh) * 2019-01-16 2021-07-30 北京大学软件与微电子学院 基于fpga的卷积神经网络ip核
CN109767002B (zh) * 2019-01-17 2023-04-21 山东浪潮科学研究院有限公司 一种基于多块fpga协同处理的神经网络加速方法
CN109784484A (zh) * 2019-01-31 2019-05-21 深兰科技(上海)有限公司 神经网络加速方法、装置、神经网络加速芯片及存储介质
CN112132271A (zh) * 2019-06-25 2020-12-25 Oppo广东移动通信有限公司 神经网络加速器运行方法、架构及相关装置
CN110348574B (zh) * 2019-07-17 2022-02-15 哈尔滨理工大学 一种基于zynq的通用卷积神经网络加速结构及设计方法
WO2021035394A1 (zh) * 2019-08-23 2021-03-04 深圳鲲云信息科技有限公司 分布式人工智能应用数据加速方法、系统及计算机设备
WO2021035598A1 (zh) * 2019-08-29 2021-03-04 深圳市大疆创新科技有限公司 数据处理方法及设备
US11907828B2 (en) * 2019-09-03 2024-02-20 International Business Machines Corporation Deep neural network on field-programmable gate array
CN111242835B (zh) * 2020-01-16 2023-10-10 湖北三江航天红峰控制有限公司 基于zynq和gpu的特征边缘检测系统和方法
CN111488983B (zh) * 2020-03-24 2023-04-28 哈尔滨工业大学 一种基于fpga的轻量级cnn模型计算加速器
CN111896823A (zh) * 2020-06-30 2020-11-06 成都四威功率电子科技有限公司 一种对功放进行在线健康监测与故障预警的系统
CN111783971B (zh) * 2020-07-02 2024-04-09 上海赛昉科技有限公司 一种用于深度神经网络的可高度灵活配置的数据后处理器
US11797850B2 (en) 2020-07-09 2023-10-24 Lynxi Technologies Co., Ltd. Weight precision configuration method and apparatus, computer device and storage medium
CN111831356B (zh) * 2020-07-09 2023-04-07 北京灵汐科技有限公司 权重精度配置方法、装置、设备及存储介质
CN111737159B (zh) * 2020-08-27 2021-02-09 苏州浪潮智能科技有限公司 一种软件调试方法、装置、设备及计算机可读存储介质
US11704945B2 (en) 2020-08-31 2023-07-18 Nissan North America, Inc. System and method for predicting vehicle component failure and providing a customized alert to the driver
CN112950656A (zh) * 2021-03-09 2021-06-11 北京工业大学 一种基于fpga平台的按通道进行预读取数据的分块卷积方法
CN113112002A (zh) * 2021-04-06 2021-07-13 济南大学 一种基于fpga轻量级卷积加速器的设计方法
CN114267337B (zh) * 2022-03-02 2022-07-19 合肥讯飞数码科技有限公司 一种语音识别系统及实现前向运算的方法
WO2024061623A1 (en) * 2022-09-23 2024-03-28 Carl Zeiss Smt Gmbh Computer implemented method for defect recognition in an imaging dataset of a wafer, corresponding computer readable-medium, computer program product and systems making use of such methods

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN106940815A (zh) * 2017-02-13 2017-07-11 西安交通大学 一种可编程卷积神经网络协处理器ip核

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN106940815A (zh) * 2017-02-13 2017-07-11 西安交通大学 一种可编程卷积神经网络协处理器ip核

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PIE: A Pipeline Energy-Efficient Accelerator for Inference Process in Deep Neural Networks;Yangyang Zhao 等;《2016 IEEE 22nd International Conference on Parallel and Distributed Systems (ICPADS)》;20161216;1067-1074 *
基于FPGA的深度学习加速器设计与实现;余奇;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160915(第9期);1-74 *

Also Published As

Publication number Publication date
CN108229670A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
CN108229670B (zh) 基于fpga的深度神经网络加速平台
US11763168B2 (en) Progressive modification of generative adversarial neural networks
US10872399B2 (en) Photorealistic image stylization using a neural network model
US10984286B2 (en) Domain stylization using a neural network model
Liu et al. Masc: Multi-scale affinity with sparse convolution for 3d instance segmentation
US10776688B2 (en) Multi-frame video interpolation using optical flow
US11263525B2 (en) Progressive modification of neural networks
CN106383695B (zh) 基于fpga的聚类算法的加速系统及其设计方法
US12008475B2 (en) Transposed sparse matrix multiply by dense matrix for neural network training
CN110059793B (zh) 生成式对抗神经网络的逐步修改
US20190188569A1 (en) Parallel Forward and Backward Propagation
US20210334234A1 (en) Distributed graphics processor unit architecture
CN113792621B (zh) 一种基于fpga的目标检测加速器设计方法
CN112783554A (zh) 用于程序间数据交换的持久便签内存
US20230062503A1 (en) Pruning and accelerating neural networks with hierarchical fine-grained structured sparsity
US20220006457A1 (en) Glitch-free multiplexer
US20200089611A1 (en) Coherent Caching of Data for High Bandwidth Scaling
US9852079B2 (en) EXtreme virtual memory
CN115756605A (zh) 一种基于多gpu的浅积云对流参数化方案异构计算方法
US20210232366A1 (en) Dynamic directional rounding
CN113986816A (zh) 可重构计算芯片
US11809849B1 (en) Global modulo allocation in neural network compilation
US11972188B2 (en) Rail power density aware standard cell placement for integrated circuits
US20230401044A1 (en) Coroutine suspension mechanism for improving performance of a computer device
US20230297643A1 (en) Non-rectangular matrix computations and data pattern processing using tensor cores

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: No. 188 Renai Road, Suzhou Industrial Park, Jiangsu Province, 215000

Patentee after: Suzhou Institute of higher studies University of science and technology of China

Address before: 215123 No. 188 benevolence Road, Suzhou Industrial Park, Jiangsu, China

Patentee before: SUZHOU INSTITUTE FOR ADVANCED STUDY, USTC

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20221201

Address after: 302, Administration Building, No. 166, Ren'ai Road, Suzhou Industrial Park, Jiangsu Province, 215000 (new)

Patentee after: Suzhou Zhongke Hanhai High Technology Co.,Ltd.

Address before: No. 188 Renai Road, Suzhou Industrial Park, Jiangsu Province, 215000

Patentee before: Suzhou Institute of higher studies University of science and technology of China

TR01 Transfer of patent right