CN117973455A - 基于fpga的卷积神经网络加速器实现方法 - Google Patents
基于fpga的卷积神经网络加速器实现方法 Download PDFInfo
- Publication number
- CN117973455A CN117973455A CN202410312688.0A CN202410312688A CN117973455A CN 117973455 A CN117973455 A CN 117973455A CN 202410312688 A CN202410312688 A CN 202410312688A CN 117973455 A CN117973455 A CN 117973455A
- Authority
- CN
- China
- Prior art keywords
- data
- convolution
- loading
- fpga
- input
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 21
- 238000004364 calculation method Methods 0.000 claims abstract description 36
- 230000001133 acceleration Effects 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 18
- 230000000903 blocking effect Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 claims description 7
- 230000008707 rearrangement Effects 0.000 claims description 4
- 238000013528 artificial neural network Methods 0.000 abstract description 9
- 230000005540 biological transmission Effects 0.000 abstract description 9
- 238000013461 design Methods 0.000 abstract description 7
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 239000000872 buffer Substances 0.000 description 12
- 230000008901 benefit Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 1
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 1
- 101150103187 Reg4 gene Proteins 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000012160 loading buffer Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种基于FPGA的卷积神经网络加速器实现方法,属于人工智能技术领域。通过采用基于行的数据流加载、自适应数据加载方案、基于流水线结构的卷积运算并行化三种方式,有效地提高FPGA加速卷积神经网络的数据传输效率和计算性能。本发明根据FPGA硬件计算特性,设计卷积神经网络硬件加速器。首先通过采用基于行的数据流加载,减少了输入缓存数据对片上BRAM的需求,同时提前了网络中卷积层卷积计算开始时间;其次通过采用自适应数据加载方案,根据不同的网络层参数,采取相应合适的数据加载方案,有效减少了由数据加载带来的时间开销,提高加速器计算性能;最后采用基于流水线结构的卷积运算并行化设计,提高加速器的吞吐量。
Description
技术领域
本发明属于人工智能技术领域,涉及一种基于FPGA的卷积神经网络加速器实现方法。
背景技术
随着智能化技术的不断发展,人工智能技术已经深入各行各业地应用中。作为人工智能的主要研究分支,神经网络模型在图像检测与识别、目标跟踪和语音识别等诸多领域取得了巨大技术发展。随着神经网络结构的不断加深,在获得更高网络性能的同时,计算复杂度也随之大大提升,使得基于专用硬件设备加速神经网络成为神经网络模型应用领域关注的焦点。目前,神经网络硬件加速器以GPU、ASIC、FPGA为主。GPU能够进行多线程并行处理,由于功耗过大的问题难以在嵌入式平台上应用。ASIC根据卷积神经网络的结构设计出特定的架构来支持其计算,能实现高性能与低功耗的要求,但在设计过程需要比较长的周期,成本也比较高。FPGA具有可重构配置的特点,开发速度快,综合成本低的特点,特别适用于当前神经网络在边缘设备上部署的需求,因此基于FPGA的神经网络模型加速研究成为当前神经网络领域研究的热点。
根据Roof-line模型,可以用算力和带宽这两个指标衡量计算平台所能达到的最大浮点计算速度。Roof-line模型的计算力公式由式(1)给出。其中,P为模型理论性能,β为计算平台带宽上限,π为计算平台算力上限,I为模型的计算强度,Imax为平台计算力强度上限,等于算力除以带宽。
可以看到,要想提升加速器的综合性能,除了考虑加速器并行处理能力,还需考虑加速器的实际带宽情况。在硬件加速器实现过程中,利用FPGA的片上存储资源来缓存数据,采用合理的数据加载和复用方式,可以减少计算所需要的数据从片外加载的次数,从而有效降低外部存储器与片上逻辑资源之间的带宽压力,从而提高加速器的整体性能。
FPGA加速卷积神经网络的时延开销主要由计算时延和数据传输时延组成。随着网络结构的逐渐复杂化,网络参数也越来越大。在卷积神经网络模型中,每一层的运算都需要从DDR中读取大量的特征数据和权重参数,数据传输和加载的效率是影响硬件加速器性能的重要因素之一。如何提高数据传输和加载效率,成为FPGA加速卷积神经网络的关键问题。
发明内容
有鉴于此,本发明的目的在于提供一种基于FPGA的卷积神经网络加速器实现方法。通过采用基于行的数据流加载、自适应数据加载方案、基于流水线结构的卷积运算并行化,可以有效地提高FPGA加速卷积神经网络的数据传输效率和计算性能。
为达到上述目的,本发明提供如下技术方案:
基于FPGA的卷积神经网络加速器实现方法,该方法包括以下步骤:
在PC端上对卷积核参数进行数据分块和重排处理存储于SD卡中,将重排后的数据从SD中读取到片外存储器DDR中进行存储;
对输入特征数据进行分块和重排处理;
根据当前网络层尺寸以及片上存储空间等条件,自适应从三种数据加载方案中选择数据加载方案;
以基于行的数据流的形式读取分块输入特征数据到FPGA片上存储器;
以流水线结构和并行化运算对输入特征数据和卷积核参数进行卷积运算操作,每个时钟周期能够同时完成9×Ti×To次卷积运算;Ti为输入通道并行度,To为输出通道并行度;
将卷积运算得到的部分中间结果在片上进行缓存,待计算完下一通道数据,将结果与之前结果进行累加,直至计算完所有通道结果,将数据传输给片外存储器缓存;
完成当前层所有运算后,将当前层计算结果传输到片上以进行下一层网络计算。
进一步,所述自适应从三种数据加载方案中选择数据加载方案具体为:
三种数据加载方案分别为:W-H-C加载、W-C-H加载、位于W-H-C和W-C-H之间的加载;
W-H-C加载是不需一次运算完所有通道数据,在计算过程中,只需从片外加载一次卷积核参数,然后通过重复加载输入特征数据进行运算;
W-C-H加载是一次就计算完所有通道数据,计算过程中,只需从片外加载一次输入特征数据,然后通过重复加载卷积核参数数据进行运算,只需缓存W×H的中间结果;
位于W-H-C和W-C-H之间的加载方案取以上两种方案的中间方案进行数据加载,即对输入数据按W、H、C三个方向都进行分块处理;
在卷积神经网络中,前若干层卷积层的输入特征数据采用W-C-H数据加载,最后若干层,采用W-H-C的数据加载方案;处想中间的网络层,根据FPGA的片上缓存资源和当前网络层尺寸,划分W、H、C的分块大小。
进一步,所述以基于行的数据流的形式读取分块输入特征数据到FPGA片上存储器具体为:
采用基于行数据的输入数据流加载缓存结构,在数据加载方面,只需缓存特征图的两行数据,当开始加载第三行数据,开始卷积运算;在数据回传方面,得到输出数据后立即回传,无需等待得到整幅输出特征图;
基于行数据的输入数据流加载结构完成一次卷积层加速总时间Ttotal2=T1×2/F1+T2,T1为卷积层读取数据时间,F1为一幅特征图的总行数,T2为卷积层计算计算时间。
进一步,所述以流水线结构和并行化运算对输入特征数据和卷积核参数进行卷积运算操作具体为:
通过展开卷积运算过程,然后依靠FPGA计算来加速,卷积运算并行化处理方式包括核内并行、输入通道并行和输出通道并行;
卷积运算过程是六层的for循环;
核内并行是通过同时读取一幅特征图的Tk×Tk个数据,然后与对应权重进行乘累加操作,其中Tk为卷积核的长度;
输入通道并行是指同一时钟周期读取Ti通道特征图像素点,然后与对应的权重数据进行乘累加操作,Ti为输入通道并行度;
输出通道并行是指在同一时钟周期读取To通道卷积核参数并与特征图像素点进行乘累加操作,To为输出通道并行度;
对卷积运算的循环进行流水线处理;设完成一次卷积的时间消耗为Tc,当前层所需要执行的卷积运算次数为Nc,两次卷积运算之间的时间间隔为Tinterval;若未采取流水线处理,Tinterval=Tc=3;当前层卷积运算的总时间消耗Ttotal3=Tc×Nc=6;若采取流水线处理,Tinterval=1,当前层运算的总时间Ttotal4=Tc+Nc-1=4。
本发明的有益效果在于:
(1)解决了不同大小输入特征图带来的输入数据复用率下降,导致DSP利用率降低的问题。
(2)提升了卷积加速器的计算吞吐率。相比传统算法,本方案的乘法运算次数降低2.25倍,加速器吞吐率提升2倍。
(3)可以将计算单元的乘法运算之间的时间间隔降低至1个时钟周期,有效提升乘法器的利用率,可以减少片上缓存资源的开销,同时支持计算模块的流水线计算。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为两种方案时延开销对比;图1(a)为传统方案时间开销分布;图1(b)为新结构时间开销分布;
图2为卷积输入数据硬件缓存结构示意图;
图3为流水线处理;图3(a)为未流水线处理;图3(b)为流水线处理;
图4为卷积运算单元硬件设计;
图5为本发明实例整体架构框图;
图6为本发明输入缓存模块RTL视图;
图7为本发明卷积计算模块RTL视图;
图8为本发明输出缓存模块RTL视图;
图9为本发明整体工程所用资源占比。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
通过采用基于行的数据流加载、自适应数据加载方案、基于流水线结构的卷积运算并行化,可以有效地提高FPGA加速卷积神经网络的数据传输效率和计算性能。
步骤1:基于行的数据流加载
采用传统的BRAM整块缓存结构,需要先将整幅特征图加载到FPGA的BRAM上,然后再开始计算,待计算得到整幅输出特征图后,再将数据存储到DDR上。图1为两种方案时延开销对比。传统方案时间开销分布如图1(a)所示,T1表示从DDR读取完整一层输入数据到FPGA片上存储器的时间,T2表示卷积加速算子完成计算的时间开销,T3表示计算结果从FPGA写回DDR花费的时间,卷积层加速过程总时间=T1+T2+T3。由于加速算子在数据输入和数据输出阶段没有工作,计算性能没有得到充分发挥,因此加速器利用效率不高。
采用基于行数据的输入数据流加载缓存结构,在数据加载方面,只需缓存特征图的两行数据,当开始加载第三行数据,即可开始卷积运算,有效降低数据加载过程的时间开销,在数据回传方面,得到输出数据后立即回传,无需等待得到整幅输出特征图,有效降低了数据回传过程的时间开销。新结构时间开销分布如图1(b)所示。
基于行数据的输入数据流加载结构完成一次卷积层加速总时间=T1×2/F1+T2,F1为一幅特征图的总行数。相较传统BRAM整块缓存结构,新结构能够有效地降低由数据传输带来的系统延迟,有效地提高加速器的利用效率,且使用的资源量更小。
在卷积神经网络模型中,每一层的运算都需要从DDR中读取大量的特征数据和权重参数,数据传输和加载的效率是影响硬件加速器性能的重要因素之一。以基于行的输入数据流加载传输形式设计了输入缓存模块。
输入缓存模块的结构如图2所示,由卷积窗口寄存器组和LINE_BUFFER构成。首先,Reg0寄存器读取DMA中的流数据,并将其写入FIFO1中。重复此操作,直至读取完特征图分块的一行数据后,Reg0寄存器继续读取DMA中的流数据,同时,从FIFO1中读取数据,并将数据写入FIFO2中。重复以上操作,直至FIFO1和FIFO2缓存下两行数据后,重复读写操作同时,将Reg0、FIFO1、FIFO2中的数据分别传递给卷积窗口寄存器组中的Reg1、Reg4、Reg7。卷积窗口寄存器组中的数据依次向左移动,从而实现卷积滑动窗的操作,当卷积窗口寄存器组缓存好一次卷积所需的特征数据时,将数据打包以流数据形式发送给卷积模块进行卷积运算。
步骤2:自适应数据加载方案
由于卷积神经网络中的每一层卷积层往往包含多幅输入特征图,而对于多幅特征图产生的卷积结果数据,无法直接传输到外部存储器,必须进行有效的缓存。而不同的数据加载方案,所需缓存的中间结果大小不同。三种数据加载方案分别为:W-H-C加载、W-C-H加载、位于W-H-C和W-C-H之间的加载。方式一采用按W-H-C方式加载,其中W为输入特征宽度,H为输入特征高度,C为输入特征通道,由于采用了基于行的数据流加载,输入数据缓存大小仅为W×2,输出数据缓存大小为W×H×O,O为输出并行度,计算过程中需从片外重复加载特征数据,卷积核数据只需加载一次。方式二采用W-C-H方式加载,输入数据缓存大小仅为W×C×2,输出数据缓存大小为W×O,计算过程中需从片外重复加载卷积核数据,特征数据只需加载一次。方式三处于方式一和方式二之间。在卷积神经网络中,随着网络的加深,输入特征尺数据的高度和宽度逐渐减小,通道数逐渐增大。在前几层网络中,输入特征尺寸较大,如果采用方式一加载会消耗大量片上存储资源,限制加速器并行计算性能,同时方式一需重复加载输入特征数据,会增加数据加载时延开销,因此适合选用方式二进行加载。而随着网络的加深,在网络的最后几层卷积核参数将会远大于输入特征数据,此时若采用方式二,会造成大量额外的数据加载时延开销,而此时输入特征的宽度和高度变小,所需消耗输出数据缓存资源减少,不再是限制加速器并行运算的关键因素,因此采用方式一进行加载。处于中间的网络层,采用处于方式一和方式二中的方式三进行加载。
步骤3:基于流水线结构的卷积运算并行化
并行运算是FPGA加速神经网络的常用优化方式,主要是通过展开卷积运算过程,然后依靠FPGA高并行性计算的优势,来达到加速的目的。常用的卷积运算并行化处理方式有三种:核内并行、输入通道并行、输出通道并行。
卷积运算过程如算法1所示,其运算实质是六层的for循环。核内并行是通过同时读取一幅特征图的Tk×Tk个数据,然后与对应权重进行乘累加操作,其中Tk为卷积核的长度。核内并行实现是将算法1中循环1、循环2完全复制展开,使运算并行度提升了Tk×Tk倍。
输入通道并行是指同一时钟周期读取Ti通道特征图像素点,然后与对应的权重数据进行乘累加操作,Ti为输入通道并行度,实现过程是将算法1中循环5复制展开成Ti份。合理地设置输入通道的并行度可以有效地提升卷积运算的计算速度,显然Ti的值设置越大,卷积运算速度越快,但对乘法器(Digital Signal Processing,DSP)的资源数量要求就越高。如果Ti的值设置过小,则无法充分使用FPGA的板载DSP资源。
输出通道并行是指在同一时钟周期读取To通道卷积核参数并与特征图像素点进行乘累加操作,To为输出通道并行度,实现过程是将算法1中循环6复制展开为To份。采取输出通道并行不仅可以通过提升卷积运算的并行度来加快卷积运算的速度,还可以有效地复用特征图像素点数据,从而降低FPGA与DDR之间的数据交互。
图3为流水线处理。为了进一步提高硬件加速器的并行计算性能,对卷积运算的循环进行流水线处理。假设完成一次卷积的时间消耗为Tc,当前层所需要执行的卷积运算次数为Nc,两次卷积运算之间的时间间隔为Tinterval。若未采取流水线处理,Tinterval=Tc=3。如图3(a)所示,当前层卷积运算的总时间消耗Ttotal3=Tc×Nc=6。若采取流水线处理,Tinterval=1,如图3(b)所示,即当前层运算的总时间Ttotal3=Tc+Nc-1=4。
本发明采取了并行运算和数据分块的优化方法来设计硬件加速器。其中,并行加速运算包括输入并行度Ti,输出并行度To,核内并行度Tk×Tk。如图4所示,在每个时钟周期同时读取Ti个卷积窗口的特征图数据,与To卷积核的Ti通道数据进行对应乘累加,最后分别得到To幅特征图的一个输出像素点。加速器整体加速并行度=Ti×To×Tk×Tk。本设计卷积运算中乘法由DSP48E完成,加法则由LUT完成。
采用图4卷积运算单元硬件设计,DSP资源消耗为:
DSPuse=Ti×To×Tk×Tk
在卷积模块中包含特征数据输入通道、权重参数输入通道和特征数据输出通道。在卷积运算时,每个时钟周期都会接收Ti个卷积窗口的特征数据,而卷积核权重参数只会在每个特征图块的第一次卷积时接收数据,因为对于同一块特征数据,卷积核数据是不变的。在该硬件设计中,利用了流水线处理优化方法,实现了数据输入、计算、数据输出的同时进行,使得每次卷积运算之间的间隔只有一个时钟周期。
本发明实施例公开了一种基于FPGA的卷积神经网络加速器的实现方法。其整个工程的整体架构框图如图5所示。其中输入缓存模块的RTL视图如图6所示。卷积计算模块的RTL视图如图7所示。输出缓存模块的RTL视图如图8所示。该工程所用资源统计表格如图9所示。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (4)
1.基于FPGA的卷积神经网络加速器实现方法,其特征在于:该方法包括以下步骤:
在PC端上对卷积核参数进行数据分块和重排处理存储于SD卡中,将重排后的数据从SD中读取到片外存储器DDR中进行存储;
对输入特征数据进行分块和重排处理;
根据当前网络层尺寸以及片上存储空间等条件,自适应从三种数据加载方案中选择数据加载方案;
以基于行的数据流的形式读取分块输入特征数据到可编程逻辑器件(FieldProgrammable GateArray,FPGA)片上存储器;
以流水线结构和并行化运算对输入特征数据和卷积核参数进行卷积运算操作,每个时钟周期能够同时完成9×Ti×To次卷积运算;Ti为输入通道并行度,To为输出通道并行度;
将卷积运算得到的部分中间结果在片上进行缓存,待计算完下一通道数据,将结果与之前结果进行累加,直至计算完所有通道结果,将数据传输给片外存储器缓存;
完成当前层所有运算后,将当前层计算结果传输到片上以进行下一层网络计算。
2.根据权利要求1所述的基于FPGA的卷积神经网络加速器实现方法,其特征在于:所述自适应从三种数据加载方案中选择数据加载方案具体为:
三种数据加载方案分别为:W-H-C加载、W-C-H加载、位于W-H-C和W-C-H之间的加载;
W-H-C加载是不需一次运算完所有通道数据,在计算过程中,只需从片外加载一次卷积核参数,然后通过重复加载输入特征数据进行运算;
W-C-H加载是一次就计算完所有通道数据,计算过程中,只需从片外加载一次输入特征数据,然后通过重复加载卷积核参数数据进行运算,只需缓存W×H的中间结果;
位于W-H-C和W-C-H之间的加载方案取以上两种方案的中间方案进行数据加载,即对输入数据按宽(Width,W)、高(Height,W)、通道(Channel,C)三个方向都进行分块处理;
在卷积神经网络中,前若干层卷积层的输入特征数据采用W-C-H数据加载,最后若干层,采用W-H-C的数据加载方案;处想中间的网络层,根据FPGA的片上缓存资源和当前网络层尺寸,划分W、H、C的分块大小。
3.根据权利要求1所述的基于FPGA的卷积神经网络加速器实现方法,其特征在于:所述以基于行的数据流的形式读取分块输入特征数据到FPGA片上存储器具体为:
采用基于行数据的输入数据流加载缓存结构,在数据加载方面,只需缓存特征图的两行数据,当开始加载第三行数据,开始卷积运算;在数据回传方面,得到输出数据后立即回传,无需等待得到整幅输出特征图;
基于行数据的输入数据流加载结构完成一次卷积层加速总时间Ttotal2=T1×2/F1+T2,T1为卷积层读取数据时间,F1为一幅特征图的总行数,T2为卷积层计算计算时间。
4.根据权利要求1所述的基于FPGA的卷积神经网络加速器实现方法,其特征在于:所述以流水线结构和并行化运算对输入特征数据和卷积核参数进行卷积运算操作具体为:
通过展开卷积运算过程,然后依靠FPGA计算来加速,卷积运算并行化处理方式包括核内并行、输入通道并行和输出通道并行;
卷积运算过程是六层的for循环;
核内并行是通过同时读取一幅特征图的Tk×Tk个数据,其中Tk为卷积核的尺寸,然后与对应权重进行乘累加操作;
输入通道并行是指同一时钟周期读取Ti道特征图像素点,然后与对应的权重数据进行乘累加操作,Ti为输入通道并行度;
输出通道并行是指在同一时钟周期读取To通道卷积核参数并与特征图像素点进行乘累加操作,To为输出通道并行度;
对卷积运算的循环进行流水线处理;设完成一次卷积的时间消耗为Tc,当前层所需要执行的卷积运算次数为Nc,两次卷积运算之间的时间间隔为Tinterval;若未采取流水线处理,Tinterval=Tc=3;当前层卷积运算的总时间消耗Ttotal3=Tc×Nc=6;若采取流水线处理,Tinterval=1,当前层运算的总时间Ttotal4=Tc+Nc-1=4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410312688.0A CN117973455A (zh) | 2024-03-19 | 2024-03-19 | 基于fpga的卷积神经网络加速器实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410312688.0A CN117973455A (zh) | 2024-03-19 | 2024-03-19 | 基于fpga的卷积神经网络加速器实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117973455A true CN117973455A (zh) | 2024-05-03 |
Family
ID=90858206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410312688.0A Pending CN117973455A (zh) | 2024-03-19 | 2024-03-19 | 基于fpga的卷积神经网络加速器实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117973455A (zh) |
-
2024
- 2024-03-19 CN CN202410312688.0A patent/CN117973455A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111445012B (zh) | 一种基于fpga的分组卷积硬件加速器及其方法 | |
CN108171317B (zh) | 一种基于soc的数据复用卷积神经网络加速器 | |
CN108985450B (zh) | 面向向量处理器的卷积神经网络运算向量化方法 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速系统及其加速方法 | |
CN113313243B (zh) | 神经网络加速器的确定方法、装置、设备以及存储介质 | |
CN111079923B (zh) | 适用于边缘计算平台的Spark卷积神经网络系统及其电路 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN113361695A (zh) | 卷积神经网络加速器 | |
CN113222129B (zh) | 一种基于多级缓存循环利用的卷积运算处理单元及系统 | |
CN112001492B (zh) | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 | |
CN112966807A (zh) | 基于存储资源受限fpga的卷积神经网络实现方法 | |
CN114970810A (zh) | 适用于稀疏神经网络计算阵列的数据处理方法和加速器 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
US20230128421A1 (en) | Neural network accelerator | |
Chang et al. | HDSuper: Algorithm-Hardware Co-design for Light-weight High-quality Super-Resolution Accelerator | |
CN117973455A (zh) | 基于fpga的卷积神经网络加速器实现方法 | |
CN112905526B (zh) | 一种多种类型卷积的fpga实现方法 | |
CN114707649B (zh) | 一种通用卷积运算装置 | |
CN116090530A (zh) | 可配置卷积核大小和并行计算数目的脉动阵列结构及方法 | |
CN115688892A (zh) | 一种稀疏权重Fused-Layer卷积加速器结构的FPGA实现方法 | |
CN112346704B (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
CN115293978A (zh) | 卷积运算电路和方法、图像处理设备 | |
Huang et al. | A low-bit quantized and hls-based neural network fpga accelerator for object detection | |
Wang et al. | Exploration of balanced design in resource-constrained edge device for efficient CNNs |
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 |