CN111753974A - 一种神经网络加速器 - Google Patents
一种神经网络加速器 Download PDFInfo
- Publication number
- CN111753974A CN111753974A CN202010574432.9A CN202010574432A CN111753974A CN 111753974 A CN111753974 A CN 111753974A CN 202010574432 A CN202010574432 A CN 202010574432A CN 111753974 A CN111753974 A CN 111753974A
- Authority
- CN
- China
- Prior art keywords
- module
- output data
- tail
- neural network
- convolution
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 59
- 238000004364 calculation method Methods 0.000 claims abstract description 162
- 230000015654 memory Effects 0.000 claims description 39
- 238000013500 data storage Methods 0.000 claims description 14
- 238000010586 diagram Methods 0.000 claims description 9
- 238000000034 method Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 12
- 238000013527 convolutional neural network Methods 0.000 description 11
- 230000004913 activation Effects 0.000 description 6
- 238000011176 pooling Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/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
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/045—Combinations of networks
Abstract
本发明实施例公开了一种神经网络加速器,包括:卷积计算模块,用于对输入预设神经网络的输入数据进行卷积运算得到第一输出数据;尾部计算模块,用于对第一输出数据进行计算得到第二输出数据;存储模块,用于缓存所述输入数据和第二输出数据;第一控制模块,用于将所述第一输出数据传输到所述尾部计算模块;所述卷积计算模块包括多个卷积计算单元,所述尾部计算模块包括多个尾部计算单元,所述第一控制模块包括多个第一控制单元,至少两个卷积计算单元通过一个第一控制单元与一个尾部计算单元连接。本发明实施例优化了神经网络加速器中尾部计算模块的设计,减少了神经网络加速器的资源消耗。
Description
技术领域
本发明实施例涉及神经网络技术领域,尤其涉及一种神经网络加速器。
背景技术
近年来,卷积神经网络发展迅速,被广泛应用于计算机视觉和自然语言处理。然而,卷积神经网络精度的提升伴随着计算成本和存储成本的快速增加。使用多核中央处理单元(CPU)难以提供足够的算力。虽然图形处理单元(GPU)可以高速处理复杂的卷积神经网络模型,但是功耗过高,在嵌入式系统中的应用受到限制。
基于FPGA和ASIC的卷积神经网络加速器具有高能效和大规模并行处理的特点,逐渐成为一个热门研究课题。由于卷积神经网络有大量的参数且需要进行大量的乘加运算,所以为了在有限的资源下,实现高的卷积神经网络处理性能,这些加速器主要解决的问题是如何提高并行度和降低内存带宽要求。
现有技术中在提升性能时,主要是针对卷积层或者全连接层做优化,然而一个通用性较高的卷积神经网络加速器中,卷积层后往往连接着池化、激活、shortcut、上采样等其他后续处理操作,这里将这些操作命名为尾部计算,这些操作的优化在卷积神经网络加速器设计中同样至关重要。
发明内容
有鉴于此,本发明实施例提供一种神经网络加速器,以实现优化神经网络加速器中的尾部计算,减少资源消耗。
本发明实施例提供一种神经网络加速器,包括:
卷积计算模块,用于对输入预设神经网络的输入数据进行卷积运算得到第一输出数据;
尾部计算模块,用于对第一输出数据进行计算得到第二输出数据;
存储模块,用于缓存所述输入数据和第二输出数据;
第一控制模块,用于将所述第一输出数据传输到所述尾部计算模块;
所述卷积计算模块包括多个卷积计算单元,所述尾部计算模块包括多个尾部计算单元,所述第一控制模块包括多个第一控制单元,至少两个卷积计算单元通过一个第一控制单元与一个尾部计算单元连接。
进一步的,还包括第二控制模块,用于将神经网络计算的输出数据传输到所述存储模块,所述第二控制模块包括多个第二控制单元,至少一个所述尾部计算单元通过一个所述第二控制单元与所述存储模块连接。
进一步的,所述卷积计算模块的数据流动速率小于或等于所述尾部计算模块的数据流动速率。
进一步的,所述卷积计算模块消耗的片上资源与所述尾部计算模块消耗的片上资源之和小于或等于总片上资源。进一步的,还包括:预设参数配置模块,用于配置预设参数,所述预设参数包括卷积核尺寸、输入特征图尺寸、输入数据存储位置和第二输出数据存储位置。
进一步的,所述卷积计算单元包括权值单元、输入特征图单元和卷积核;
所述权值单元用于根据所述卷积核尺寸形成对应的权值;
所述输入特征图单元用于根据所述输入特征图尺寸和所述输入数据存储位置从所述存储模块获取输入数据形成对应的输入特征图;
所述卷积核用于对所述权值和所述输入特征图进行计算。
进一步的,所述卷积计算单元用于对所述权值和所述输入特征图进行计算得到所述第一输出数据。
进一步的,所述存储模块包括片上存储器和/或片下存储器。
进一步的,当所述输入数据存储位置为片下存储器时,通过DMA将所述片下存储器中的输入数据传输到片上存储器中。
进一步的,当所述第二输出数据存储位置为片下存储器时,通过DMA将所述第二输出数据传输到片下存储器中。
本发明实施例一提供的神经网络加速器通过卷积计算模块,用于对输入预设神经网络的输入数据进行卷积运算得到第一输出数据;尾部计算模块,用于对第一输出数据进行计算得到第二输出数据;存储模块,用于缓存所述输入数据和第二输出数据;第一控制模块,用于将所述第一输出数据传输到所述尾部计算模块;所述卷积计算模块包括多个卷积计算单元,所述尾部计算模块包括多个尾部计算单元,所述第一控制模块包括多个第一控制单元,至少两个卷积计算单元通过一个第一控制单元与一个尾部计算单元连接。优化了神经网络加速器中尾部计算模块的设计,减少了神经网络加速器的资源消耗。
附图说明
图1为本发明实施例一提供的一种神经网络加速器的结构示意图;
图2为本发明实施例二提供的一种神经网络加速器的结构示意图;
图3为本发明实施例三提供的一种神经网络加速器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一输出数据为第二输出数据,且类似地,可将第二输出数据称为第一输出数据。第一输出数据和第二输出数据两者都是输出数据,但其不是同一输出数据。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
实施例一
图1为本发明实施例一提供的一种神经网络加速器的结构示意图,可适用于神经网络的计算。如图1所示,本发明实施例一提供的神经网络加速器包括:存储模块100、卷积计算模块200、第一控制模块300和尾部计算模块400。卷积计算模块200用于对输入预设神经网络的输入数据进行卷积运算得到第一输出数据;尾部计算模块400用于对第一输出数据进行计算得到第二输出数据;存储模块100用于缓存所述输入数据和第二输出数据;第一控制模块300用于将所述第一输出数据传输到所述尾部计算模块。
进一步的,卷积计算模块200包括多个卷积计算单元210,尾部计算模块400包括多个尾部计算单元410,第一控制模块300包括多个第一控制单元310,至少两个卷积计算单元210通过一个第一控制单元310与一个尾部计算单元410连接。
示例性的,以两个卷积计算单元210通过一个第一控制单元310与一个尾部计算单元410连接为例。在使用神经网络加速器对神经网络进行计算时,输入数据首先经过卷积计算模块200进行卷积计算,卷积计算模块200输出的第一输出数据还需要经过尾部计算模块400的处理,例如池化、激活、shortcut、上采样等处理,这些处理统称为尾部计算,最后由尾部计算模块400输出最终的神经网络加速器计算所得的第二输出数据。
示例性的,将第一个卷积计算单元210记为PE1,其计算得到的第一输出数据记为PI1,第二个卷积计算单元210记为PE2,其计算得到的第一输出数据记为PI2。由于卷积神经网络采用并行计算的方式,即卷积计算单元PE1和卷积计算单元PE2同时进行计算,那么第一输出数据PI1和第一输出数据PI2将会同时输入到第一控制单元310中,而一个尾部计算单元410一次只能对一个第一输出数据进行尾部计算,因此,第一控制单元310首先将第一输出数据PI1输入到尾部计算单元410中,同时缓存第一输出数据PI2,当尾部计算单元410对第一输出数据PI1完成尾部计算时,第一控制单元310再将缓存的第一输出数据PI2输入到尾部计算单元410中进行计算。
本实施例中,将两个卷积计算单元210通过一个第一控制单元310与一个尾部计算单元410连接,通过一个第一控制单元310将两个卷积计算单元210之一输出的第一输出数据交替地输出到尾部计算单元410中,使两个卷积计算单元共用一个尾部计算单元410,减少了尾部计算单元410的数量,从而减少神经网络加速器的资源消耗。
本发明实施例一提供的神经网络加速器通过卷积计算模块,用于对输入预设神经网络的输入数据进行卷积运算得到第一输出数据;尾部计算模块,用于对第一输出数据进行计算得到第二输出数据;存储模块,用于缓存所述输入数据和第二输出数据;第一控制模块,用于将所述第一输出数据传输到所述尾部计算模块;所述卷积计算模块包括多个卷积计算单元,所述尾部计算模块包括多个尾部计算单元,所述第一控制模块包括多个第一控制单元,至少两个卷积计算单元通过一个第一控制单元与一个尾部计算单元连接。优化了神经网络加速器中尾部计算模块的设计,减少了神经网络加速器的资源消耗。
实施例二
图2为本发明实施例二提供的一种神经网络加速器的结构示意图,本实施例是对上述实施例的进一步细化。如图2所示,本发明实施例二提供的神经网络加速器包括:存储模块100、卷积计算模块200、第一控制模块300、尾部计算模块400和第二控制模块500。卷积计算模块200用于对输入预设神经网络的输入数据进行卷积运算得到第一输出数据;尾部计算模块400用于对第一输出数据进行计算得到第二输出数据;存储模块100用于缓存输入数据和第二输出数据;第一控制模块300用于将卷积计算模块200输出的第一输出数据传输到尾部计算模块400;第二控制模块500用于将尾部计算模块400输出的第二输出数据传输到存储模块100。
进一步的,卷积计算模块200包括多个卷积计算单元210,尾部计算模块400包括多个尾部计算单元410,第一控制模块300包括多个第一控制单元310,第二控制模块500包括多个第二控制单元510,至少两个卷积计算单元通过一个第一控制单元310与一个尾部计算单元410连接,至少一个尾部计算单元410通过一个第二控制单元510与存储模块100连接。在使用神经网络加速器对神经网络进行计算时,输入数据首先经过卷积计算模块200进行卷积计算,卷积计算模块200输出的第一输出数据还需要经过尾部计算模块400的处理,例如池化、激活、shortcut(直连)、上采样等处理,这些处理统称为尾部计算,最后由尾部计算模块400输出最终的神经网络加速器计算所得的第二输出数据。
示例性的,如图2所示,以两个卷积计算单元210通过一个第一控制单元310与一个尾部计算单元410连接,一个尾部计算单元410通过一个第二控制单元510与存储模块连接为例,将第一个卷积计算单元210记为PE1,其计算得到的第一输出数据记为PI1,第二个卷积计算单元210记为PE2,其计算得到的第一输出数据记为PI2,尾部计算单元410对第一输出数据PI1进行尾部计算得到的第二输出数据记为PO1,尾部计算单元410对第一输出数据PI2进行尾部计算得到的第二输出数据记为PO2。由于卷积神经网络采用并行计算的方式,即卷积计算单元PE1和卷积计算单元PE2同时进行计算,那么第一输出数据PI1和第一输出数据PI2将会同时输入到第一控制单元310中,而一个尾部计算单元410一次只能对一个第一输出数据进行尾部计算,因此,第一控制单元310首先将第一输出数据PI1输入到尾部计算单元410中,同时缓存第一输出数据PI2,当尾部计算单元410对第一输出数据PI1完成尾部计算时,第一控制单元310再将缓存的第一输出数据PI2输入到尾部计算单元410中进行计算。尾部计算单元410对第一输出数据PI1完成尾部计算时,还将得到的第二输出数据PO1输入到第二控制单元510中。通常情况下,神经网络加速器计算得到的输出数据需要同时输出,因此,当第二控制单元510接收到第二输出数据PO1时,此时第一输出数据PI2还没有完成计算,无法得到第二输出数据PO2,第二控制单元510先将第二输出数据PO1缓存,当接收到尾部计算单元410传输的第二输出数据PO2时,才将第二输出数据PO1和第二输出数据PO2同时存储到存储模块中。
本实施例中,第一控制单元310的数据输入输出方式称为2进1出,即,第一控制单元310同时接收两个第一输出数据,但每次输出一个第一输出数据。第二控制单单元510的数据输入输出方式称为1进2出,即,第一控制单元310每次接收一个第二输出数据,但同时输出两个第二输出数据。进一步的,若采用两个尾部计算单元410通过一个第二控制单元510与存储模块100连接,那么相当于第二控制单元510同时接收两个第二输出数据,那么同时输出四个第二输出数据。
进一步的,卷积计算模块200的数据流动速率小于或等于尾部计算模块400的数据流动速率。卷积计算模块200的数据流动速率是指所有卷积计算单元210中的数据流动速率之和,尾部计算模块400的数据流动速率表示指所有尾部计算单元410中的数据流动速率之和,由于至少两个卷积计算单元210通过一个第一控制单元310与一个尾部计算单元410连接,即尾部计算单元410的数量小于卷积计算单元210的数量,并且,尾部计算单元410的数量通常是卷积计算单元210的数量的整数倍,因此,尾部计算模块400的数据流动速率大于或等于卷积计算模块200的数据流动速率,才能保证尾部计算模块400能够及时处理卷积计算模块200的第一输出数据,从而保证数据流动的通畅性。假设卷积计算单元210的数目为n,每个卷积计算单元210中数据流动速率为v1(即每个卷积计算单元210单位时间内处理的数据量),尾部计算单元410的数目为m,每个尾部计算单元410中数据流动速率为v2(即每个尾部计算单元410单位时间内处理的数据量),则,m*v2≥n*v1。
进一步的,卷积计算模块200消耗的片上资源与尾部计算模块400消耗的片上资源之和小于或等于总片上资源。卷积计算模块200消耗的片上资源是指所有卷积计算单元210消耗的片上资源之和,卷积计算单元210消耗的片上资源指卷积计算单元210进行计算消耗的存储资源(Memory)、计算资源(如LUT(Look-Up-Table,查找表)、DSP(Digital SignalProcessing,数字信号处理)等)、系统资源等。尾部计算模块400消耗的片上资源则指所有尾部计算单元410消耗的片上资源之和,尾部计算单元410消耗的片上资源指尾部计算单元410进行计算消耗的存储资源(Memory)、计算资源(如LUT(Look-Up-Table,查找表)、DSP(Digital Signal Processing,数字信号处理)等)、系统资源等。假设卷积计算单元210的数目为n,每个卷积计算单元210消耗的片上资源为x,尾部计算单元410的数目为m,每个尾部计算单元410消耗的片上资源为y,总的片上资源为z,则,m*y+n*x≤z。
本发明实施例二通过设置第二控制模块,用于将神经网络计算的输出数据传输到所述存储模块,所述第二控制模块包括多个第二控制单元,至少一个所述尾部计算单元通过一个所述第二控制单元与所述存储模块连接,达到了通过第二控制单元来控制尾部计算单元向存储模块传输数据的速率,当数据量较大时,第二控制单元起到一定的缓冲作用。
实施例三
图3为本发明实施例三提供的一种神经网络加速器的结构示意图,本实施例是对上述实施例中存储模块和卷积计算单元的进一步细化。如图3所示,本发明实施例三提供的神经网络加速器包括:存储模块100、卷积计算模块200、第一控制模块300、尾部计算模块400、第二控制模块500和预设参数配置模块600。卷积计算模块200用于对输入预设神经网络的输入数据进行卷积运算得到第一输出数据;尾部计算模块400用于对第一输出数据进行计算得到第二输出数据;存储模块100用于缓存输入数据和第二输出数据;第一控制模块300用于将卷积计算模块200输出的第一输出数据传输到尾部计算模块400;第二控制模块500用于将尾部计算模块400输出的第二输出数据传输到存储模块100;预设参数配置模块600用于配置预设参数。
进一步的,卷积计算模块200包括多个卷积计算单元210,尾部计算模块400包括多个尾部计算单元410,第一控制模块300包括多个第一控制单元310,至少两个卷积计算单元通过一个第一控制单元310与一个尾部计算单元410连接。第二控制模块500包括多个第二控制单元510,至少一个尾部计算单元通过一个第二控制单元510与存储模块100连接。示例性的,图3示出的神经网络加速器表示了两个卷积计算单元通过一个第一控制单元310与一个尾部计算单元410连接,以及两个尾部计算单元通过一个第二控制单元510与存储模块100连接。
进一步的,预设参数包括但不限于卷积核尺寸、输入特征图尺寸、输入数据存储位置和第二输出数据存储位置。神经网络的卷积计算通常是输入数据与对应的权值数据进行乘加运算,得到第一输出数据,其计算时的数据通常以特征图的形式表示,例如,输入数据称为输入特征图,第一输出数据称为第一输出特征图。特征图则表示一个由a列和b行定义的a*b二维矩阵数据结构,则卷积核尺寸表示权值的大小,输入特征图尺寸则表示输入特征图的大小,例如,卷积核尺寸为3*3,则表示权值为一个3*3的二维矩阵数据结构,包括9个数据。
进一步的,卷积计算单元210包括输入特征图单元211、卷积核212和权值单元213,权值单元213用于根据卷积核尺寸形成对应的权值;输入特征图单元211用于根据输入特征图尺寸和输入数据存储位置从存储模块获取输入数据形成对应的输入特征图;卷积核212用于对权值和输入特征图进行计算。
进一步的,存储模块100包括片下存储器110和/或片上存储器120,输入数据存储位置和第二输出数据存储位置可以是片上存储器,也可以是片下存储器。示例性的,图3以片下存储器为例,当输入数据存储在片下存储器110时,通过DMA(Direct Memory Access,直接存储器访问)的方式将片下存储器110的输入数据传输到片上存储器120中,卷积计算单元210直接从片上存储器120中获取输入数据即可。当第二输出数据存储位置为片下存储器时,第二控制单元510通过DMA的方式直接将第二输出数据输出到片下存储器110中。可选的,当输入数据存储位置和第二输出数据存储位置都为片上存储器时,卷积计算单元210可直接从片上存储器中获取输入数据,第二控制单元也可直接将第二输出数据传输到片上存储器中。
进一步的,由于卷积神经网络本身的特性,不同的网络层中,卷积计算单元和尾部计算单元中数据流动速率可能不同,因此,对于不同的网络层,最优的卷积计算单元的数量n和尾部计算单元的数量m可能不同,因此,预设参数配置模块600还可以用于设置每一个网络层中:卷积计算单元的数量n、第一控制单元的数量、尾部计算单元的数量m、第二控制单元的数量、卷积计算单元与第一控制单元的比例k以及尾部计算单元与第二控制单元的比例q。其中,卷积计算单元的数量n和尾部计算单元的数量m可参考如下过程进行设计:由m*v2≥n*v1可得:n≤m*v2/v1,由m*y+n*x≤z可得:n≤(z-m*y)/x,由此可知,当m*v2/v1=(z-m*y)/x时,可得到n的最大值,此时,m=z*v1/(x*v2+y*v1),n=z*v2/(x*v2+y*v1),由于n和m都是整数,且n是m的整数倍,所以:m=floor[z*v1/(x*v2+y*v1)],n=floor[z*v2/(x*v2+y*v1)],其中,floor函数表示向下取整。示例性的,设z=1000,x=50,y=30,v1=1,v2=2,则m=floor[z*v1/(x*v2+y*v1)]=7,n=floor[z*v2/(x*v2+y*v1)]=14,此时可设置k=2,表示两个卷积计算单元通过一个第一控制单元与一个尾部计算单元连接,由此可知,卷积计算单元与第一控制单元的比例k可以设置为卷积计算单元的数量n与尾部计算单元的数量m的比值。由于第二控制单元需要把所有的第二输出数据同时输出,因此,尾部计算单元与第二控制单元的比例q可以根据实际需要进行设置,例如,设置q=2则表示两个尾部计算单元通过一个第二控制单元与存储模块连接,具体为:一个第二控制单元在一个时钟周期同时接收到2个第二输出数据,那么在两个时钟周期后,一个第二控制单元同时输出4个第二输出数据。
进一步的,由于尾部计算包括但不限于池化、激活、shortcut、上采样等多种处理,但并不是每一个神经网络进行计算时都需要进行所有的尾部计算处理,预设参数配置模块600还可以用于设置需要进行的具体的尾部计算处理,示例性的,将对应操作设置为1,则表示需要进行该项处理,将对应操作设置为0,则表示不需要进行该项处理,例如,池化设为1、激活设为1、shortcut设为0、上采样设为0,则表示尾部处理单元对输入的第一输出数据只需进行池化和激活操作,不进行shortcut和上采样操作。
本发明实施例三通过预设参数配置模块进行预设参数配置,可以灵活设置和更改卷积核尺寸、输入特征图尺寸、输入数据存储位置和第二输出数据存储位置等多种预设参数,提高神经网络加速器的灵活性设计。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种神经网络加速器,其特征在于,包括:
卷积计算模块,用于对输入预设神经网络的输入数据进行卷积运算得到第一输出数据;
尾部计算模块,用于对第一输出数据进行计算得到第二输出数据;
存储模块,用于缓存所述输入数据和第二输出数据;
第一控制模块,用于将所述第一输出数据传输到所述尾部计算模块;
所述卷积计算模块包括多个卷积计算单元,所述尾部计算模块包括多个尾部计算单元,所述第一控制模块包括多个第一控制单元,至少两个卷积计算单元通过一个第一控制单元与一个尾部计算单元连接。
2.如权利要求1所述的神经网络加速器,其特征在于,还包括第二控制模块,用于将神经网络计算的输出数据传输到所述存储模块,所述第二控制模块包括多个第二控制单元,至少一个所述尾部计算单元通过一个所述第二控制单元与所述存储模块连接。
3.如权利要求1所述的神经网络加速器,其特征在于,所述卷积计算模块的数据流动速率小于或等于所述尾部计算模块的数据流动速率。
4.如权利要求1所述的神经网络加速器,其特征在于,所述卷积计算模块消耗的片上资源与所述尾部计算模块消耗的片上资源之和小于或等于总片上资源。
5.如权利要求1所述的神经网络加速器,其特征在于,还包括:预设参数配置模块,用于配置预设参数,所述预设参数包括卷积核尺寸、输入特征图尺寸、输入数据存储位置和第二输出数据存储位置。
6.如权利要求5所述的神经网络加速器,其特征在于,所述卷积计算单元包括权值单元、输入特征图单元和卷积核;
所述权值单元用于根据所述卷积核尺寸形成对应的权值;
所述输入特征图单元用于根据所述输入特征图尺寸和所述输入数据存储位置从所述存储模块获取输入数据形成对应的输入特征图;
所述卷积核用于对所述权值和所述输入特征图进行计算。
7.如权利要求6所述的神经网络加速器,其特征在于,所述卷积计算单元用于对所述权值和所述输入特征图进行计算得到所述第一输出数据。
8.如权利要求5所述的神经网络加速器,其特征在于,所述存储模块包括片上存储器和/或片下存储器。
9.如权利要求8所述的神经网络加速器,其特征在于,当所述输入数据存储位置为片下存储器时,通过DMA将所述片下存储器中的输入数据传输到片上存储器中。
10.如权利要求8所述的神经网络加速器,其特征在于,当所述第二输出数据存储位置为片下存储器时,通过DMA将所述第二输出数据传输到片下存储器中。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010574432.9A CN111753974A (zh) | 2020-06-22 | 2020-06-22 | 一种神经网络加速器 |
PCT/CN2021/100369 WO2021259105A1 (zh) | 2020-06-22 | 2021-06-16 | 神经网络加速器 |
US18/145,014 US20230128421A1 (en) | 2020-06-22 | 2022-12-21 | Neural network accelerator |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010574432.9A CN111753974A (zh) | 2020-06-22 | 2020-06-22 | 一种神经网络加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111753974A true CN111753974A (zh) | 2020-10-09 |
Family
ID=72675560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010574432.9A Pending CN111753974A (zh) | 2020-06-22 | 2020-06-22 | 一种神经网络加速器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230128421A1 (zh) |
CN (1) | CN111753974A (zh) |
WO (1) | WO2021259105A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021259105A1 (zh) * | 2020-06-22 | 2021-12-30 | 深圳鲲云信息科技有限公司 | 神经网络加速器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107633297A (zh) * | 2017-03-10 | 2018-01-26 | 南京大学 | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速系统 |
CN111047008A (zh) * | 2019-11-12 | 2020-04-21 | 天津大学 | 一种卷积神经网络加速器及加速方法 |
KR102107077B1 (ko) * | 2018-11-20 | 2020-05-06 | 주식회사 아나패스 | 컨볼루션 신경망 추론에서 컨볼루션 연산을 수행하기 위한 라인 단위 메모리 관리 방법 및 그 추론 장치 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086867B (zh) * | 2018-07-02 | 2021-06-08 | 武汉魅瞳科技有限公司 | 一种基于fpga的卷积神经网络加速系统 |
CN110263925B (zh) * | 2019-06-04 | 2022-03-15 | 电子科技大学 | 一种基于fpga的卷积神经网络前向预测的硬件加速实现装置 |
CN111242295B (zh) * | 2020-01-20 | 2022-11-25 | 清华大学 | 一种可配置池化算子的方法及电路 |
CN111753974A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | 一种神经网络加速器 |
-
2020
- 2020-06-22 CN CN202010574432.9A patent/CN111753974A/zh active Pending
-
2021
- 2021-06-16 WO PCT/CN2021/100369 patent/WO2021259105A1/zh active Application Filing
-
2022
- 2022-12-21 US US18/145,014 patent/US20230128421A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107633297A (zh) * | 2017-03-10 | 2018-01-26 | 南京大学 | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 |
KR102107077B1 (ko) * | 2018-11-20 | 2020-05-06 | 주식회사 아나패스 | 컨볼루션 신경망 추론에서 컨볼루션 연산을 수행하기 위한 라인 단위 메모리 관리 방법 및 그 추론 장치 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速系统 |
CN111047008A (zh) * | 2019-11-12 | 2020-04-21 | 天津大学 | 一种卷积神经网络加速器及加速方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021259105A1 (zh) * | 2020-06-22 | 2021-12-30 | 深圳鲲云信息科技有限公司 | 神经网络加速器 |
Also Published As
Publication number | Publication date |
---|---|
US20230128421A1 (en) | 2023-04-27 |
WO2021259105A1 (zh) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
CN109284817B (zh) | 深度可分离卷积神经网络处理架构/方法/系统及介质 | |
CN107169560B (zh) | 一种自适应可重构的深度卷积神经网络计算方法和装置 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN104899182A (zh) | 一种支持可变分块的矩阵乘加速方法 | |
CN110991632A (zh) | 一种基于fpga的异构神经网络计算加速器设计方法 | |
CN111752879B (zh) | 一种基于卷积神经网络的加速系统、方法及存储介质 | |
CN111047008A (zh) | 一种卷积神经网络加速器及加速方法 | |
US20200356809A1 (en) | Flexible pipelined backpropagation | |
US20230128421A1 (en) | Neural network accelerator | |
CN111860773A (zh) | 处理装置和用于信息处理的方法 | |
CN109472734B (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
CN108647780B (zh) | 面向神经网络的可重构池化操作模块结构及其实现方法 | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
CN112346704B (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
CN116822600A (zh) | 一种基于risc-v架构的神经网络搜索芯片 | |
Yu et al. | Optimizing FPGA-based convolutional encoder-decoder architecture for semantic segmentation | |
WO2022095675A1 (zh) | 神经网络稀疏化的装置、方法及相关产品 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN110929854B (zh) | 一种数据处理方法、装置及硬件加速器 | |
WO2020008643A1 (ja) | データ処理装置、データ処理回路およびデータ処理方法 | |
CN111652365B (zh) | 一种用于加速Deep Q-Network算法的硬件架构及其设计空间探索方法 | |
KR102541463B1 (ko) | 3차원 포인트 클라우드의 의미론적 분할을 위한 그래프 컨볼루션 신경망 가속 장치 및 이를 이용한 3차원 포인트 클라우드의 의미론적 분할 방법 | |
CN115081602A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 |
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 |