CN112183732A - 卷积神经网络加速方法、装置和计算机设备 - Google Patents
卷积神经网络加速方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN112183732A CN112183732A CN202011138174.6A CN202011138174A CN112183732A CN 112183732 A CN112183732 A CN 112183732A CN 202011138174 A CN202011138174 A CN 202011138174A CN 112183732 A CN112183732 A CN 112183732A
- Authority
- CN
- China
- Prior art keywords
- line
- input
- data
- neural network
- cache
- 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
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000001133 acceleration Effects 0.000 title claims abstract description 37
- 238000004364 calculation method Methods 0.000 claims abstract description 82
- 239000013598 vector Substances 0.000 claims description 40
- 239000000872 buffer Substances 0.000 claims description 39
- 238000003491 array Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 8
- 238000007781 pre-processing Methods 0.000 claims description 6
- 238000013500 data storage Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 11
- 230000004913 activation Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000011176 pooling Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004088 simulation 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
Abstract
本发明实施例公开了卷积神经网络加速方法、装置和计算机设备,利用2n‑1个块子缓存对应接收输入特征图像的第i行至第i+2n‑2行的输入行数据;将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收特征图像的同一行的输入行数据;输入特征图像的第i行至第i+2n‑2行的输入行数据在n*n个计算模块上计算;将块子缓存中缓存的第i行至第i+n‑1行的输入行数据删除,将第i+n行至i+2n‑2行的输入行数据对应前移至清空的块子缓存中,i以n为增量自增,直至i大于输入特征图像的总行数。实现垂直卷积复用,避免频繁读取搬移数据,减少卷积运算时间。
Description
技术领域
本发明涉及图像识别领域,尤其涉及一种卷积神经网络加速方法、装置和计算机设备。
背景技术
卷积神经网络的计算是一个计算密集型的过程,这一过程中存在大量的数据读取与搬移,消耗大量的时间与能量,进而降低计算系统的计算速度。在现有的计算系统中,数据常常是存储在片外存储器中。在计算过程中,计算模块需要从存储器中不断的读取数据,其中一些相同的数据被重复的读取。
发明内容
鉴于上述问题,本发明提出一种卷积神经网络加速方法、装置和计算机设备。
本发明的一个实施例提出一种卷积神经网络加速方法,应用于卷积神经网络加速器,所述卷积神经网络加速器包括至少一个块单元,每个块单元包括n*n个计算模块和一个块缓存,所述块缓存包括2n-1个块子缓存,所述计算模块为忆阻器阵列,该方法包括:
利用2n-1个块子缓存对应接收输入特征图像的第i行至第i+2n-2行的输入行数据;
将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据;
利用所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据;
将块子缓存中缓存的第i行至第i+n-1行的输入行数据删除,将第i+n行至第i+2n-2行的输入行数据对应前移至清空的块子缓存中,所述i以n为增量自增,直至i大于所述输入特征图像的总行数。
上述的卷积神经网络加速方法,还包括:
预先将卷积核拆分成n个列向量,每个列向量包含输入特征图像的同一行数据的全部权值;
将n个列向量对应映射至n*n个计算模块,且同一行计算模块的列向量相同,同一列计算模块的列向量不相同。
上述的卷积神经网络加速方法,所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据,包括:
每一列的计算模块获取到的列向量和输入行数据进行卷积运算,对应输出的卷积结果为对应列的计算模块输出的输出行数据。
本发明的另一个实施例所述的卷积神经网络加速方法,每个计算模块包括一个计算缓存,还包括:
在卷积窗口在所述输入特征图像上按照预设步长向预设的方向移动的过程中,控制所述计算缓存删除上一卷积窗口中与当前卷积窗口无关的卷积数据,并将与当前卷积窗口相关的卷积数据保存在所述计算缓存中。
进一步的,上述的卷积神经网络加速方法,还包括:
利用所述计算缓存获取当前卷积窗口的当前卷积核数据;
利用所述当前卷积核数据和所述前卷积窗口相关的输入行数据计算所述当前卷积窗口对应的卷积结果,所述卷积窗口按照预设的步长向预设的方向移动。
本发明实施例所述的卷积神经网络加速方法,n等于3。
本发明的再一个实施例提供一种卷积神经网络加速装置,应用于卷积神经网络加速器,所述卷积神经网络加速器包括至少一个块单元,每个块单元包括n*n个计算模块和一个块缓存,所述块缓存包括2n-1个块子缓存,所述计算模块为忆阻器阵列,该装置包括:
输入行数据保存模块,用于利用2n-1个块子缓存对应接收输入特征图像的第i行至第i+2n-2行的输入行数据;
输入行数据应用模块,用于将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据;
输出行数据获取模块,用于利用所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据;
输入行数据更新模块,用于将块子缓存中缓存的第i行至第i+n-1行的输入行数据删除,将第i+n行至第i+2n-2行的输入行数据对应前移至清空的块子缓存中,所述i以n为增量自增,直至i大于所述输入特征图像的总行数。
上述的卷积神经网络加速装置,还包括:
第一预处理模块,用于预先将卷积核拆分成n个列向量,每个列向量包含输入特征图像的同一行数据的全部权值;
第二预处理模块,用于将n个列向量对应映射至n*n个计算模块,且同一行计算模块的列向量相同,同一列计算模块的列向量不相同。
本发明实施例涉及一种计算机设备,包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器上运行时执行本发明实施例所述的卷积神经网络加速方法。
本发明实施例涉及一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行本发明实施例所述的卷积神经网络加速方法。
本发明利用2n-1个块子缓存对应接收输入特征图像的第i行至第i+2n-2行的输入行数据;将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据;利用所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据;将块子缓存中缓存的第i行至第i+n-1行的输入行数据删除,将第i+n行至第i+2n-2行的输入行数据对应前移至清空的块子缓存中,所述i以n为增量自增,直至i大于所述输入特征图像的总行数。本发明的技术方案有效实现每一对角线上同一行的输入行数据的复用,进而实现垂直卷积复用,避免频繁读取搬移数据,减少卷积运算时间。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本发明实施例提供的卷积神经网络加速方法的流程示意图;
图2示出了本发明实施例提供的卷积神经网络加速器的加速器结构示意图;
图3示出了本发明实施例提供的卷积神经网络加速器的权值映射示意图;
图4示出了本发明实施例提供的卷积神经网络加速器的块子缓存结构示意图;
图5示出了本发明实施例提供的卷积神经网络加速器的垂直卷积复用策略示意图;
图6示出了本发明实施例提供的卷积神经网络加速器的水平卷积复用策略示意图;
图7示出了本发明实施例提供的卷积神经网络加速器的计算缓存结构示意图;
图8示出了本发明实施例提供的卷积神经网络加速装置的结构示意图。
主要元件符号说明:
1-卷积神经网络加速装置;100-输入行数据保存模块;200-输入行数据应用模块;300-输出行数据获取模块;400-输入行数据更新模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理除非在本发明的各种实施例中被清楚地限定。
忆阻器是一种新原理纳米器件,具有非易失性,集成度高,计算能耗低的特点。基于忆阻器交叉阵列实现的存算一体计算架构能够以模拟的方式单步实现大规模矩阵向量乘运算,极大提高了矩阵向量乘运算的效率与能效。现有的神经网络算法中运算类型主要为矩阵向量乘运算。基于忆阻器交叉阵列的存算一体计算架构为神经网络的快速低耗计算提供了新的思路。
基于忆阻器的卷积神经网络加速器,实现对输入数据最大程度的复用。在卷积神经网络计算过程中存在的数据复用,在卷积窗口横向滑动的过程中,不同的滑窗之间存在一定的重叠,重叠部分的数据可以进行重复使用,称之为水平数据复用。同时在滑窗垂直方向滑动的过程中,滑窗也存在一定的重叠,表明存在一定的数据复用,称之为垂直数据复用。实现对数据的重复复用可以减小从片外存储器读取数据的次数,进而减小因数据读取导致而额外的时延与能量损耗。
实施例1
本实施例,参见图2,应用于卷积神经网络加速器包括至少一个块单元(Tile),每个块单元包括n*n个计算模块(Process Elements,PE)和一个块缓存(TileBuffer),每个块缓存包括2n-1个块子缓存,所述计算模块为忆阻器阵列。
进一步的,卷积神经网络加速器的块单元的数目可以与输入特征图像的数目相同,每一输入特征图像对应输入至一个块单元。
进一步的,计算模块的数目与卷积窗口的大小相同,卷积窗口为n*n。
进一步的,卷积神经网络加速器可以采用多层结构,可以包括多个块单元(Tile)、缓存单元(Buffer Unites)、激活单元(Activation Unites)、加法单元(AccumulationUnites)、池化单元(Pooling Unites)和连接它们的片上网络构(NOC)成的,各单元的输入输出接口与片上网络相连,以数据包的形式进行通信。
示范性的,每个块单元可以由9个计算模块组成,它们排列成3×3阵列。5个独立的块子缓存的输出接口与计算模块的输入接口相连,处在同一方向上的同一对角线上的计算模块与同一块子缓存的输出接口相连。计算模块包括6*6个忆阻器子阵列,子阵列的输出接口可以与加法单元的输入接口相连,将同一列的子阵列输出的结果相加,相加结果可以输入到输出数据缓存中进行缓存。同时输出数据缓存的输出结果与计算模块的输出接口相连,将计算结果输出。子阵列的这种连接方式可以让子阵列通过配置组成一个大规模的阵列,进行较大规模的矩阵向量乘运算。
示范性的,每个块单元还可以由16个计算模块组成,它们排列成4×4阵列。7个独立的块子缓存的输出接口与计算模块的输入接口相连,处在同一方向上的同一对角线上的计算模块与同一块子缓存的输出接口相连。
进一步的,在计算之前,预先将卷积核拆分成n个列向量,每个列向量包含输入特征图像的同一行数据的全部权值;将n个列向量对应映射至n*n个计算模块,且同一行计算模块的列向量相同,同一列计算模块的列向量不相同。
示范性的,参见图3,在卷积神经网络加速器的权值映射过程中,将每个3*3*C大小的卷积核拆分成三部分,每个部分包含同行所有通道的权值。然后每个部分被逐通道展开成一个列向量。最后,每个卷积核的展开的得到的三个列向量被映射到三个临近的忆阻器阵列对应的列上。在滑窗的过程中,对每个卷积窗口中的输入数据也做同样的拆分展开,之后将得到的输入列向量输入到忆阻器阵列相应的列上。将三个阵列的对应列上输出的结果相加就可以得到输出特征图像的一个数据。最后,在块单元中将每一个卷积核复制三次,因此最终需要9个忆阻器阵列,每个阵列对应一个计算模块。
在计算过程中,每一层的输入特征图像从全局数据缓存中取出,通过片上网络输入到相应的块中计算。完成计算之后,从每个块中得到的部分结果通过加法单元相加得到最终的结果。然后将结果输入到激活单元、池化单元、全局数据缓存或下一层网络。
进一步的,参见图1,示出了卷积神经网络加速方法包括以下步骤:
S100:利用2n-1个块子缓存对应接收输入特征图像的第i行至第i+2n-2行的输入行数据。
示范性的,若卷积窗口的大小为3*3个像素点,则n等于3,卷积神经网络加速器包括5个块子缓存,则利用5个块子缓存对应接收输入特征图像的第1行至第5行的输入行数据。如图4所示,5个块子缓存为sub-buffer#1、sub-buffer#2、sub-buffer#3、sub-buffer#4和sub-buffer#5,其中,sub-buffer#1对应接收输入特征图像的第1行的输入行数据,sub-buffer#2对应接收输入特征图像的第2行的输入行数据,sub-buffer#3对应接收输入特征图像的第3行的输入行数据,sub-buffer#4对应接收输入特征图像的第4行的输入行数据,sub-buffer#5对应接收输入特征图像的第5行的输入行数据。
S200:将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据。
若预设方向为从左至右,则3*3个计算模块包括5条对角线,若对5条对角线按照从上至下进行编号,如图5所示,第一条对角线上的计算模块接收sub-buffer#1内缓存的第1行的输入行数据,第二条对角线上的计算模块接收sub-buffer#2内缓存的第2行的输入行数据,第三条对角线上的计算模块接收sub-buffer#3内缓存的第3行的输入行数据,第四条对角线上的计算模块接收sub-buffer#4内缓存的第4行的输入行数据,第5条对角线上的计算模块接收sub-buffer#5内缓存的第5行的输入行数据。
S300:利用所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据。
示范性的,如图5所示,输入特征图像的第1行至第5行的输入行数据在所述3*3个计算模块上计算,可以获得所述输入特征图像对应的第1行至3行的输出行数据。
进一步的,每一列的计算模块获取到的列向量和输入行数据进行卷积运算,对应输出的卷积结果为对应列的计算模块输出的输出行数据。
S400:将块子缓存中缓存的第i行至第i+n-1行的输入行数据删除,将第i+n行至第i+2n-2行的输入行数据对应前移至清空的块子缓存中,所述i以n为增量自增,直至i大于所述输入特征图像的总行数。
进一步的,获得所述输入特征图像对应的第1行至3行的输出行数据后,将块子缓存中缓存的第1行至第3的输入行数据删除,即清空sub-buffer#1、sub-buffer#2和sub-buffer#3。将第4行至第5行的输入行数据对应前移至清空的块子缓存中,即将第4行输入行数据(sub-buffer#4中的输入行数据)前移至sub-buffer#1,将第5行输入行数据(sub-buffer#5中的输入行数据)前移至sub-buffer#2。进一步的,sub-buffer#3接收第6行的输入行数据,sub-buffer#4接收第7行的输入行数据,sub-buffer#5接收第8行的输入行数据,利用输入特征图像的第4行至第8行的输入行数据在所述3*3个计算模块上计算,以获得所述输入特征图像对应的第4行至5行的输出行数据。
其中,i以n为增量自增,直至i大于所述输入特征图像的总行数为止。
本实施例利用2n-1个块子缓存对应接收输入特征图像的第i行至第i+2n-2行的输入行数据;将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据;所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至i+n-1行的输出行数据;将块子缓存中缓存的第i行至第i+n-1行的输入行数据删除,将第i+n行至i+2n-2行的输入行数据对应前移至清空的块子缓存中,所述i以n为增量自增,直至i大于所述输入特征图像的总行数。本实施例的技术方案通过预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据,实现每一对角线上同一行的输入行数据的复用,进而实现垂直卷积复用,避免频繁读取搬移数据,减少卷积运算时间。
实施例2
进一步的,每个计算模块包括一个计算缓存,参见图2,计算缓存在图2中表示为Input Buffer,卷积神经网络加速方法还包括:在卷积窗口在所述输入特征图像上按照预设步长向预设的方向移动的过程中,控制所述计算缓存删除上一卷积窗口中与当前卷积窗口无关的卷积数据,并将与当前卷积窗口相关的卷积数据保存在所述计算缓存中。
进一步的,利用所述计算缓存获取当前卷积窗口的当前卷积核数据;利用所述当前卷积核数据和所述前卷积窗口相关的输入行数据计算所述当前卷积窗口对应的卷积结果,所述卷积窗口按照预设的步长向预设的方向移动。
示范性的,参见图6,第一行输入行数据为例,计算模块的计算缓存需要数据A、B和C来计算部分卷积结果,进而计算输出特征图像的第一个数据。在计算出第一个数据之后,卷积窗口可以以1个像素点步长向右滑动,计算模块的计算缓存丢弃数据A,同时加载数据D,并使用计算缓存中数据B、C和D来计算下一卷积结果,进而计算输出特征图像的第二个数据。上述两步卷积计算中,B和C被重复使用,避免重复读取B和C。不断重复这个过程,重叠窗口区域中的所有数据都将被重复使用,从而实现水平卷积重用,避免频繁读取搬移数据,减少卷积运算时间。
示范性的,参见图7,计算缓存可以由多个寄存器组组成,这些寄存器组公用同一数据输入总线。每个寄存器组由三个8-bit寄存器组成,每一个寄存器的输出与一个单独的多路选择器相连,通过控制信号逐位地将寄存器中数据输出。在完成一次计算之后,第三寄存器中的数据被丢弃,第一寄存器、第二寄存器中的数据向下移动到第二寄存器、第三寄存器,第一寄存器中被写入新的数据。
实施例3
本实施例,参见图8,示出了一种卷积神经网络加速装置1,应用于卷积神经网络加速器,所述卷积神经网络加速器包括至少一个块单元,每个块单元包括n*n个计算模块和一个块缓存,所述块缓存包括2n-1个块子缓存,所述计算模块为忆阻器阵列,该装置包括:输入行数据保存模块100、输入行数据应用模块200、输出行数据获取模块300和输入行数据更新模块400。
输入行数据保存模块100,用于利用2n-1个块子缓存对应接收输入特征图像的第i行至第i+2n-2行的输入行数据;输入行数据应用模块200,用于将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据;输出行数据获取模块300,用于利用所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据;输入行数据更新模块400,用于将块子缓存中缓存的第i行至第i+n-1行的输入行数据删除,将第i+n行至第i+2n-2行的输入行数据对应前移至清空的块子缓存中,所述i以n为增量自增,直至i大于所述输入特征图像的总行数。
进一步的,卷积神经网络加速装置1还包括:
第一预处理模块,用于预先将卷积核拆分成n个列向量,每个列向量包含输入特征图像的同一行数据的全部权值;第二预处理模块,用于将n个列向量对应映射至n*n个计算模块,且同一行计算模块的列向量相同,同一列计算模块的列向量不相同。
本实施例公开的卷积神经网络加速装置1通过输入行数据保存模块100、输入行数据应用模块200、输出行数据获取模块300和输入行数据更新模块400的配合使用,用于执行上述实施例所述的卷积神经网络加速方法,上述实施例所涉及的实施方案以及有益效果在本实施例中同样适用,在此不再赘述。
可以理解,本发明实施例涉及一种计算机设备,包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器上运行时执行本发明实施例所述的卷积神经网络加速方法。
可以理解,本发明实施例涉及一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行本发明实施例所述的卷积神经网络加速方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种卷积神经网络加速方法,其特征在于,应用于卷积神经网络加速器,所述卷积神经网络加速器包括至少一个块单元,每个块单元包括n*n个计算模块和一个块缓存,所述块缓存包括2n-1个块子缓存,所述计算模块为忆阻器阵列,该方法包括:
利用2n-1个块子缓存对应接收输入特征图像的第i行至第i+2n-2行的输入行数据;
将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据;
利用所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据;
将块子缓存中缓存的第i行至第i+n-1行的输入行数据删除,将第i+n行至第i+2n-2行的输入行数据对应前移至清空的块子缓存中,所述i以n为增量自增,直至i大于所述输入特征图像的总行数。
2.根据权利要求1所述的卷积神经网络加速方法,其特征在于,还包括:
预先将卷积核拆分成n个列向量,每个列向量包含输入特征图像的同一行数据的全部权值;
将n个列向量对应映射至n*n个计算模块,且同一行计算模块的列向量相同,同一列计算模块的列向量不相同。
3.根据权利要求2所述的卷积神经网络加速方法,其特征在于,所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据,包括:
每一列的计算模块获取到的列向量和输入行数据进行卷积运算,对应输出的卷积结果为对应列的计算模块输出的输出行数据。
4.根据权利要求1所述的卷积神经网络加速方法,其特征在于,每个计算模块包括一个计算缓存,还包括:
在卷积窗口在所述输入特征图像上按照预设步长向预设的方向移动的过程中,控制所述计算缓存删除上一卷积窗口中与当前卷积窗口无关的卷积数据,并将与当前卷积窗口相关的卷积数据保存在所述计算缓存中。
5.根据权利要求4所述的卷积神经网络加速方法,其特征在于,还包括:
利用所述计算缓存获取当前卷积窗口的当前卷积核数据;
利用所述当前卷积核数据和所述前卷积窗口相关的输入行数据计算所述当前卷积窗口对应的卷积结果,所述卷积窗口按照预设的步长向预设的方向移动。
6.根据权利要求1至5中任一项所述的卷积神经网络加速方法,其特征在于,n等于3。
7.一种卷积神经网络加速装置,其特征在于,应用于卷积神经网络加速器,所述卷积神经网络加速器包括至少一个块单元,每个块单元包括n*n个计算模块和一个块缓存,所述块缓存包括2n-1个块子缓存,所述计算模块为忆阻器阵列,该装置包括:
输入行数据保存模块,用于利用2n-1个块子缓存对应接收输入特征图像的第i行至第i+2n-2行的输入行数据;
输入行数据应用模块,用于将每一块子缓存中的输入行数据对应输入至n*n个计算模块,预设方向上每一对角线上的计算模块接收所述特征图像的同一行的输入行数据;
输出行数据获取模块,用于利用所述输入特征图像的第i行至第i+2n-2行的输入行数据在所述n*n个计算模块上计算,以获得所述输入特征图像对应的第i行至第i+n-1行的输出行数据;
输入行数据更新模块,用于将块子缓存中缓存的第i行至第i+n-1行的输入行数据删除,将第i+n行至第i+2n-2行的输入行数据对应前移至清空的块子缓存中,所述i以n为增量自增,直至i大于所述输入特征图像的总行数。
8.根据权利要求7所述的卷积神经网络加速装置,其特征在于,还包括:
第一预处理模块,用于预先将卷积核拆分成n个列向量,每个列向量包含输入特征图像的同一行数据的全部权值;
第二预处理模块,用于将n个列向量对应映射至n*n个计算模块,且同一行计算模块的列向量相同,同一列计算模块的列向量不相同。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器上运行时执行权利要求1至6任一项所述的卷积神经网络加速方法。
10.一种可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1至6任一项所述的卷积神经网络加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011138174.6A CN112183732A (zh) | 2020-10-22 | 2020-10-22 | 卷积神经网络加速方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011138174.6A CN112183732A (zh) | 2020-10-22 | 2020-10-22 | 卷积神经网络加速方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112183732A true CN112183732A (zh) | 2021-01-05 |
Family
ID=73922598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011138174.6A Pending CN112183732A (zh) | 2020-10-22 | 2020-10-22 | 卷积神经网络加速方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112183732A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113517009A (zh) * | 2021-06-10 | 2021-10-19 | 上海新氦类脑智能科技有限公司 | 存算一体式智能芯片、控制方法及控制器 |
CN117519802A (zh) * | 2024-01-08 | 2024-02-06 | 之江实验室 | 基于存算一体单元的数据处理装置 |
CN117519802B (zh) * | 2024-01-08 | 2024-04-30 | 之江实验室 | 基于存算一体单元的数据处理装置 |
Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951961A (zh) * | 2017-02-24 | 2017-07-14 | 清华大学 | 一种粗粒度可重构的卷积神经网络加速器及系统 |
CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN108182471A (zh) * | 2018-01-24 | 2018-06-19 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
CN108388537A (zh) * | 2018-03-06 | 2018-08-10 | 上海熠知电子科技有限公司 | 一种卷积神经网络加速装置和方法 |
CN108717571A (zh) * | 2018-06-01 | 2018-10-30 | 阿依瓦(北京)技术有限公司 | 一种用于人工智能的加速方法和装置 |
CN109121435A (zh) * | 2017-04-19 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
CN109460813A (zh) * | 2018-09-10 | 2019-03-12 | 中国科学院深圳先进技术研究院 | 卷积神经网络计算的加速方法、装置、设备及存储介质 |
CN109948784A (zh) * | 2019-01-03 | 2019-06-28 | 重庆邮电大学 | 一种基于快速滤波算法的卷积神经网络加速器电路 |
CN110032538A (zh) * | 2019-03-06 | 2019-07-19 | 上海熠知电子科技有限公司 | 一种数据读取系统和方法 |
CN110033086A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
CN110163793A (zh) * | 2019-05-27 | 2019-08-23 | 湃方科技(天津)有限责任公司 | 卷积计算加速方法和装置 |
CN110647983A (zh) * | 2019-09-30 | 2020-01-03 | 南京大学 | 一种基于存算一体器件阵列的自监督学习加速系统及方法 |
CN110751280A (zh) * | 2019-09-19 | 2020-02-04 | 华中科技大学 | 一种应用于卷积神经网络的可配置卷积加速器 |
CN110866862A (zh) * | 2020-01-19 | 2020-03-06 | 光子算数(北京)科技有限责任公司 | 基于缓冲器的数据处理方法、装置、存储介质及电子设备 |
CN110991609A (zh) * | 2019-11-27 | 2020-04-10 | 天津大学 | 提高数据传输效率的行缓存器 |
CN111048135A (zh) * | 2018-10-14 | 2020-04-21 | 天津大学青岛海洋技术研究院 | 一种基于忆阻器内存计算的cnn处理装置及其工作方法 |
CN111133452A (zh) * | 2017-05-19 | 2020-05-08 | 莫维迪乌斯有限公司 | 用于提高卷积效率的方法、系统和装置 |
CN111275167A (zh) * | 2020-01-16 | 2020-06-12 | 北京中科研究院 | 一种用于二值卷积神经网络的高能效脉动阵列架构 |
CN111428857A (zh) * | 2020-02-28 | 2020-07-17 | 上海集成电路研发中心有限公司 | 一种基于忆阻器的卷积运算装置及方法 |
CN111445420A (zh) * | 2020-04-09 | 2020-07-24 | 北京爱芯科技有限公司 | 卷积神经网络的图像运算方法、装置和电子设备 |
CN111626405A (zh) * | 2020-05-15 | 2020-09-04 | Tcl华星光电技术有限公司 | 一种cnn加速方法、加速装置及计算机可读存储介质 |
CN111767986A (zh) * | 2020-06-24 | 2020-10-13 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种基于神经网络的运算方法及装置 |
-
2020
- 2020-10-22 CN CN202011138174.6A patent/CN112183732A/zh active Pending
Patent Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951961A (zh) * | 2017-02-24 | 2017-07-14 | 清华大学 | 一种粗粒度可重构的卷积神经网络加速器及系统 |
CN109121435A (zh) * | 2017-04-19 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
CN111133452A (zh) * | 2017-05-19 | 2020-05-08 | 莫维迪乌斯有限公司 | 用于提高卷积效率的方法、系统和装置 |
CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN108182471A (zh) * | 2018-01-24 | 2018-06-19 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
CN108388537A (zh) * | 2018-03-06 | 2018-08-10 | 上海熠知电子科技有限公司 | 一种卷积神经网络加速装置和方法 |
CN108717571A (zh) * | 2018-06-01 | 2018-10-30 | 阿依瓦(北京)技术有限公司 | 一种用于人工智能的加速方法和装置 |
CN109460813A (zh) * | 2018-09-10 | 2019-03-12 | 中国科学院深圳先进技术研究院 | 卷积神经网络计算的加速方法、装置、设备及存储介质 |
CN111048135A (zh) * | 2018-10-14 | 2020-04-21 | 天津大学青岛海洋技术研究院 | 一种基于忆阻器内存计算的cnn处理装置及其工作方法 |
CN109948784A (zh) * | 2019-01-03 | 2019-06-28 | 重庆邮电大学 | 一种基于快速滤波算法的卷积神经网络加速器电路 |
CN110032538A (zh) * | 2019-03-06 | 2019-07-19 | 上海熠知电子科技有限公司 | 一种数据读取系统和方法 |
CN110033086A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
CN110163793A (zh) * | 2019-05-27 | 2019-08-23 | 湃方科技(天津)有限责任公司 | 卷积计算加速方法和装置 |
CN110751280A (zh) * | 2019-09-19 | 2020-02-04 | 华中科技大学 | 一种应用于卷积神经网络的可配置卷积加速器 |
CN110647983A (zh) * | 2019-09-30 | 2020-01-03 | 南京大学 | 一种基于存算一体器件阵列的自监督学习加速系统及方法 |
CN110991609A (zh) * | 2019-11-27 | 2020-04-10 | 天津大学 | 提高数据传输效率的行缓存器 |
CN111275167A (zh) * | 2020-01-16 | 2020-06-12 | 北京中科研究院 | 一种用于二值卷积神经网络的高能效脉动阵列架构 |
CN110866862A (zh) * | 2020-01-19 | 2020-03-06 | 光子算数(北京)科技有限责任公司 | 基于缓冲器的数据处理方法、装置、存储介质及电子设备 |
CN111428857A (zh) * | 2020-02-28 | 2020-07-17 | 上海集成电路研发中心有限公司 | 一种基于忆阻器的卷积运算装置及方法 |
CN111445420A (zh) * | 2020-04-09 | 2020-07-24 | 北京爱芯科技有限公司 | 卷积神经网络的图像运算方法、装置和电子设备 |
CN111626405A (zh) * | 2020-05-15 | 2020-09-04 | Tcl华星光电技术有限公司 | 一种cnn加速方法、加速装置及计算机可读存储介质 |
CN111767986A (zh) * | 2020-06-24 | 2020-10-13 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种基于神经网络的运算方法及装置 |
Non-Patent Citations (2)
Title |
---|
MANQING MAO 等: "MAX2: An ReRAM-Based Neural Network Accelerator That Maximizes Data Reuse and Area Utilization", 《IEEE JOURNAL ON EMERGING AND SELECTED TOPICS IN CIRCUITS AND SYSTEMS》 * |
胡飞等: "基于忆阻器交叉阵列的卷积神经网络电路设计", 《计算机研究与发展》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113517009A (zh) * | 2021-06-10 | 2021-10-19 | 上海新氦类脑智能科技有限公司 | 存算一体式智能芯片、控制方法及控制器 |
CN117519802A (zh) * | 2024-01-08 | 2024-02-06 | 之江实验室 | 基于存算一体单元的数据处理装置 |
CN117519802B (zh) * | 2024-01-08 | 2024-04-30 | 之江实验室 | 基于存算一体单元的数据处理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108133270B (zh) | 卷积神经网络加速方法及装置 | |
CN111242289B (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
CN111488983B (zh) | 一种基于fpga的轻量级cnn模型计算加速器 | |
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
CN112334885A (zh) | 加速器和用于加速操作的系统 | |
CN107742150B (zh) | 一种卷积神经网络的数据处理方法和装置 | |
US20160093343A1 (en) | Low power computation architecture | |
CN108717571B (zh) | 一种用于人工智能的加速方法和装置 | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN108074211B (zh) | 一种图像处理装置及方法 | |
EP4227886A1 (en) | Matrix operation method and apparatus for image data, device, and storage medium | |
CN111931909A (zh) | 一种基于fpga的轻量卷积神经网络可重构部署方法 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN108764182B (zh) | 一种优化的用于人工智能的加速方法和装置 | |
CN112183732A (zh) | 卷积神经网络加速方法、装置和计算机设备 | |
CN113052299B (zh) | 基于通信下界的神经网络存内计算装置及加速方法 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN115860080B (zh) | 计算核、加速器、计算方法、装置、设备、介质及系统 | |
CN113792621A (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN108073548B (zh) | 卷积运算装置及卷积运算方法 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN111047037A (zh) | 数据处理方法、装置、设备及存储介质 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210105 |