CN113255898A - 基于Winograd算法的卷积神经网络硬件加速器及计算方法 - Google Patents
基于Winograd算法的卷积神经网络硬件加速器及计算方法 Download PDFInfo
- Publication number
- CN113255898A CN113255898A CN202110666106.5A CN202110666106A CN113255898A CN 113255898 A CN113255898 A CN 113255898A CN 202110666106 A CN202110666106 A CN 202110666106A CN 113255898 A CN113255898 A CN 113255898A
- Authority
- CN
- China
- Prior art keywords
- module
- calculation
- convolution
- current
- result
- 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.)
- Granted
Links
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
本发明公开了一种基于Winograd算法的卷积神经网络硬件加速器及计算方法,该加速器包括:输入缓冲模块、PE阵列、后处理模块,数据分配器、控制模块、配置模块、输出缓冲模块、存储层;配置模块将指令译码成配置信息;控制模块用于控制PE阵列、数据分配器等模块完成不同计算;数据分配器采用不同的地址映射方式和数据分配方式从存储层中读取数据,并将数据分配到输入缓冲中;输入缓冲模块将缓冲的计算数据发送到PE阵列进行计算;PE阵列根据配置信息进行计算通路重构并对数据进行计算;后处理模块将计算结果进行多通道累加、激活函数处理等操作。本发明能提高卷积计算速度,减少数据搬移损耗,从而提高整个加速器的性能。
Description
技术领域
本发明涉及深度卷积神经网络计算领域,尤其是一种基于Winograd算法的卷积流水线并行加速计算方法和装置。
背景技术
当前的神经网络结构的愈加复杂使得神经网络的计算量和数据搬移量剧增,而CPU其串行计算的特性和较少的核心数使得其计算效率较低,而GPU能耗比较低,因此需要设计高效的硬件神经网络加速器来提升神经网络计算效率。
卷积计算是神经网络的基本计算,传统上一般通过滑窗卷积进行,该计算方法给整个神经网络带来了巨大的计算量和数据搬移量。Winograd算法源自一种小波变换算法,Lavin,Andrew等人将其移植到了卷积计算中。其基本思想是将输入特征图和卷积核变换到Winograd域进行卷积计算,以减少乘法数目,提高计算速度。
Winograd算法中含有连续的矩阵乘,会增加中间结果的访存时间,降低计算速度,同时Winograd算法需要进行较长的计算流程来得到计算结果,且会占用大量的硬件资源。
发明内容
为了解决上述不足之处,本发明提出了一种基于Winograd算法的可重构神经网络加速器及计算方法,以期能提高卷积计算速度,减少数据搬移损耗,从而提高整个加速器的性能。
本发明为达到上述发明目的,采用如下技术方案:
本发明一种基于Winograd算法的卷积神经网络硬件加速器的特点包括:存储层、计算层、控制层、数据分配器、输入缓冲、输出缓冲;
所述存储层包括:片外的DDR存储器和片上存储;
所述控制层包括:配置模块和控制模块;
所述计算层包括:多路PE阵列和后处理模块;
所述后处理模块包含:激活函数模块和卷积通道累加模块;
所述DDR存储器接收外部发送的卷积核、输入特征图并完成存储后,触发所述控制模块,使得所述配置模块在所述控制模块的控制下,从自身RAM中读取计算指令,用于获取计算任务并将其译码成配置信息;
所述数据分配器根据所述配置信息中的当前计算模式,判断当前计算模式是否为卷积计算模式,若是,则从DDR存储器中读取所需的输入特征图、所需的卷积核并分配到输入缓冲中;否则,将当前计算模式所需的数据发送给输入缓冲中;
在卷积计算模式下,多路PE阵列从输入缓冲中获取所述卷积核、输入特征图并进行计算,得到输出特征图并传递给所述后处理模块;
在其他计算模式下,多路PE阵列从输入缓冲中获取当前计算模式所需的数据并进行计算,得到当前计算结果并传递给所述后处理模块;
在卷积计算模式下,所述卷积通道累加模块对所述输出特征图进行多通道累加处理后,再利用激活函数模块进行计算,得到当前卷积块并传递给所述输出缓冲;
在其他计算模式下,所述卷积通道累加模块根据配置信息,选择是否对所述当前计算结果进行通道累加计算,以及是否利用激活函数模块对所述当前计算结果进行计算,从而得到当前处理结果并传输到所述输出缓冲中;
若所述输出缓冲接收到当前卷积块,则按照地址映射的方式对当前卷积块进行顺序整合,并得到当前卷积阵列后传递给所述数据分配器;
若所述输出缓冲接收到当前处理结果,则对所述当前处理结果进行通道对应拆分和数据缓冲后,发送给所述数据分配器;
当所述数据分配器接收到的当前卷积阵列或者拆分后的处理结果达到一定的数量后一起写回所述片上存储中,直到当前计算模式完成计算为止。
本发明所述的卷积神经网络硬件加速器的特点也在于,多路PE阵列中的每路PE阵列均包括:PE_G1模块、PE_G2模块、PE_G3模块、PE_G4模块、PE_G5模块和RC模块;且所述PE_G1模块和PE_G2模块中包含4个可重构的PE计算单元;所述PE_G3模块中包含M个乘法计算单元,其中,每路PE阵列是按如下过程计算得到输出特征图:
所述输入缓冲将卷积核按列广播到每路PE阵列的PE_G1模块,使得所述PE_G1模块根据所述配置信息中的参数矩阵G,对一个卷积核进行变换,包括:
所述PE_G1模块中的每个PE计算单元根据参数矩阵G选择卷积核的列数据中相应的数据,并利用自身PE计算单元内的运算器进行变换计算,其中,所述PE_G1模块中的第一个PE计算单元和第四个PE计算单元协助第二个PE计算单元和第三个PE计算单元完成一次加法运算,并将加法结果重定向到第二个PE计算单元和第三个PE计算单元中完成剩余的加法计算和乘法计算,得到初步卷积计算结果;所述RC模块对初步卷积计算结果进行数据重整后,发送到所述PE_G2模块;
所述PE_G2模块根据配置信息中的参数矩阵GT,对重整后的初步卷积计算结果进行变换,从而完成一个卷积核的变换;
当一定数量的卷积核完成变换后,所述输入缓冲将输入特征图按列广播到每路PE阵列的PE_G1模块,使得所述PE_G1模块根据所述配置信息中的参数矩阵BT,对一个输入特征图进行变换,得到初步特征图计算结果;
所述RC模块对PE_G1模块的初步特征图计算结果进行重整后,发送到PE_G2模块;
所述PE_G2模块根据配置信息中的参数矩阵B,对重整后的初步特征图计算结果进行变换,从而完成一个输入特征图的变换;
当输入特征图完成变换后,所述PE_G2模块将已变换的输入特征图发回所述PE_G1模块、PE_G2模块和PE_G3模块;所述PE_G1模块、PE_G2模块中的PE计算单元将自身内部的计算结构进行重构后接收已变换的输入特征图;所述PE_G1模块、PE_G2模块、PE_G3模块对已变换的输入特征图和自身存储的M/4+2个输出通道的已变换的卷积核进行点乘计算,得到M/4+2个输出通道的点乘结果;
所述PE_G1模块、PE_G2模块、PE_G3模块将M/4+2个输出通道的点乘结果发送到RC模块进行数据重整,得到M/4+2个输出通道的重整后的初步点乘结果并发送到PE_G4模块;所述PE_G4模块中的M/2+4个PE计算单元以每两个单元为一组,并根据配置信息中的矩阵AT分别对M/4+2个输出通道的重整后的初步点乘结果进行变换;所述PE_G4模块将变换后的初步点乘结果发送RC模块进行数据重整,得到重整后的点乘结果并发送到PE_G5模块;所述PE_G5模块中的M/4+2个PE计算单元以每两个单元为一组,并根据配置信息中的参数矩阵A分别对M/4+2个输出通道的重整后的点乘结果进行变换,得到当前计算模式下的输出特征图。
本发明一种基于Winograd算法的卷积神经网络硬件加速器的计算方法的特点是应用于由存储层、计算层、控制层、数据分配器、输入缓冲、输出缓冲所构成的加速器中,其中,所述存储层包括:片外的DDR存储器和片上存储;所述控制层包括:配置模块和控制模块;所述计算层包括:多路PE阵列和后处理模块;所述后处理模块包含:激活函数模块和卷积通道累加模块;所述计算方法是按如下步骤进行:
步骤1、所述DDR存储器接收外部发送的卷积核、输入特征图并完成存储;
步骤2、所述控制模块控制所述配置模块在从自身RAM中读取计算指令,从而获取计算任务并将其译码成配置信息;
步骤3、所述数据分配器根据所述配置信息的当前计算模式,判断当前计算模式是否为卷积计算模式,若是,则执行步骤4-步骤6、以及步骤8-步骤10;否则,执行步骤7-步骤10;
步骤4、所述数据分配器从DDR存储器中读取不同输出通道的卷积核并分配到输入缓冲中,再从DDR存储器中读取相应输入通道的输入特征图并分配到输入缓冲中;
步骤5、所述输入缓冲将卷积核发送到PE阵列,使得PE阵列对当前计算模式所需的卷积核进行卷积核变换计算,得到卷积核变换结果缓存在PE阵列中的RAM中;
步骤6、所述输入缓冲将输入特征图发送到PE阵列,使得PE阵列对当前计算模式所需的输入特征图进行变换计算、点乘计算和点乘结果的变换计算,得到输出特征图并发送到所述后处理模块;
步骤7、所述数据分配器从DDR存储器或片上存储中读取当前计算模式所需的数据并发送给输入缓冲中,多路PE阵列从输入缓冲中获取当前计算模式所需的数据并进行计算,得到当前计算结果并传递给所述后处理模块;
步骤8、在卷积计算模式下,所述卷积通道累加模块对所述输出特征图进行多通道累加处理后,再利用激活函数模块进行计算,得到当前卷积块并传递给所述输出缓冲;
在其他计算模式下,所述卷积通道累加模块根据配置信息,选择是否对所述当前计算结果进行通道累加计算,以及是否利用激活函数模块对所述当前计算结果进行计算,从而得到当前处理结果并传输到所述输出缓冲中;
步骤9、若所述输出缓冲接收到当前卷积块,则按照地址映射的方式对当前卷积块进行顺序整合,并得到当前卷积阵列后传递给所述数据分配器;
若所述输出缓冲接收到当前处理结果,则对所述当前处理结果进行通道对应拆分和数据缓冲后,发送给所述数据分配器;
步骤10、当所述数据分配器接收到的当前卷积阵列或者拆分后的处理结果达到一定的数量后一起写回所述片上存储中,重复步骤3-步骤10,直到当前计算模式完成计算为止。
本发明所述的卷积神经网络硬件加速器的计算方法的特点也在于,多路PE阵列中的每路PE阵列均包括:PE_G1模块、PE_G2模块、PE_G3模块、PE_G4模块、PE_G5模块和RC模块;且所述PE_G1模块和PE_G2模块中包含4个可重构的PE计算单元;所述PE_G3模块中包含M个乘法计算单元,所述步骤5中的每路PE阵列是按如下过程计算得到卷积核变换结果:
所述输入缓冲将卷积核按列广播到每路PE阵列的PE_G1模块,使得所述PE_G1模块根据所述配置信息中的参数矩阵G,对一个卷积核进行变换,包括:
所述PE_G1模块中的每个PE计算单元根据参数矩阵G选择卷积核的列数据中相应的数据,并利用自身PE计算单元内的运算器进行变换计算,其中,所述PE_G1模块中的第一个PE计算单元和第四个PE计算单元协助第二个PE计算单元和第三个PE计算单元完成一次加法运算,并将加法结果重定向到第二个PE计算单元和第三个PE计算单元中完成剩余的加法计算和乘法计算,得到初步卷积计算结果;所述RC模块对初步卷积计算结果进行数据重整后,发送到所述PE_G2模块;
所述PE_G2模块根据配置信息中的参数矩阵GT,对重整后的初步卷积计算结果进行变换,得到卷积核变换结果,从而完成一个卷积核的变换。
所述步骤6中的每路PE阵列是按如下过程计算得到输出特征图:
步骤6.1、当一定数量的卷积核完成变换后,所述输入缓冲将输入特征图按列广播到每路PE阵列的PE_G1模块,使得所述PE_G1模块根据所述配置信息中的参数矩阵BT,对一个输入特征图进行变换,得到初步特征图计算结果;
步骤6.2、所述RC模块对PE_G1模块的初步特征图计算结果进行重整后,发送到PE_G2模块;
步骤6.3、所述PE_G2模块根据配置信息中的参数矩阵B,对重整后的初步特征图计算结果进行变换,从而完成一个输入特征图的变换;
步骤6.4、当输入特征图完成变换后,所述PE_G2模块将已变换的输入特征图发回所述PE_G1模块、PE_G2模块和PE_G3模块;所述PE_G1模块、PE_G2模块中的PE计算单元将自身内部的计算结构进行重构后接收已变换的输入特征图;所述PE_G1模块、PE_G2模块、PE_G3模块对已变换的输入特征图和自身存储的M/4+2个输出通道的已变换的卷积核进行点乘计算,得到M/4+2个输出通道的点乘结果;
步骤6.5、所述PE_G1模块、PE_G2模块、PE_G3模块将M/4+2个输出通道的点乘结果发送到RC模块进行数据重整,得到M/4+2个输出通道的重整后的初步点乘结果并发送到PE_G4模块;所述PE_G4模块中的M/2+4个PE计算单元以每两个单元为一组,并根据配置信息中的矩阵AT分别对M/4+2个输出通道的重整后的初步点乘结果进行变换;所述PE_G4模块将变换后的初步点乘结果发送RC模块进行数据重整,得到重整后的点乘结果并发送到PE_G5模块;所述PE_G5模块中的M/4+2个PE计算单元以每两个单元为一组,并根据配置信息中的参数矩阵A分别对M/4+2个输出通道的重整后的点乘结果进行变换,得到当前计算模式下的输出特征图。
与现有技术相比,本发明的有益效果在于:
1、本发明优化的Winograd计算结构通过PE之间数据互联和RC模块的数据重整,从而避免了原算法中矩阵乘过程中的数据访存损耗;
2、本发明通过多个PE并行进行变换,并在不同计算阶段之间的流水进行,从而提升了PE阵列的计算吞吐;
3、本发明优化的Winograd计算结构复用了已变换的输入特征图并行进行多输出通道的点乘和结果变换,从而减少了重复变换,同时增加了PE阵列在输出通道上的并行度;
4、本发明通过多个PE阵列并行进行不同输入通道的卷积计算,提升了整个加速器在输入通道上的并行度。
5、本发明通过将Winograd算法拆分成4个计算阶段,在每个计算阶段中PE根据配置信息重构成不同的计算结构,并且不同PE之间重构计算通路,形成联合计算结构来降低了数据搬移量和提升了计算速度。
附图说明
图1是本发明实施例提供的硬件加速器架构示意图;
图2是本发明实施例提供的加速器的计算流程示意图;
图3是本发明实施例提供的Padding后的输入特征图示意图;
图4是本发明实施例提供的Winograd优化计算结构示意图;
图5是本发明实施例提供的卷积核变换计算结构示意图;
图6是本发明实施例提供的PE内部结构示意图;
图7是本发明实施例提供的PE在卷积核变换计算中的重构结构示意图。
具体实施方式
本实施例中,一种基于Winograd算法的卷积神经网络硬件加速器,如图1所示,包括:存储层、计算层、控制层、数据分配器、输入缓冲、输出缓冲;
存储层包括:片外的DDR存储器和片上存储;
控制层包括:配置模块和控制模块;
计算层包括:多路PE阵列和后处理模块;
后处理模块包含:激活函数模块和卷积通道累加模块;
DDR存储器接收外部发送的卷积核、输入特征图并完成存储后,触发控制模块,使得配置模块在控制模块的控制下,从自身RAM中读取计算指令,用于获取计算任务并将其译码成配置信息;
数据分配器根据配置信息中的当前计算模式,判断当前计算模式是否为卷积计算模式,若是,则从DDR存储器中读取所需的输入特征图、所需的卷积核并分配到输入缓冲中;否则,将当前计算模式所需的数据发送给输入缓冲中;
在卷积计算模式下,多路PE阵列从输入缓冲中获取卷积核、输入特征图并进行计算,得到输出特征图并传递给后处理模块;
在其他计算模式下,多路PE阵列从输入缓冲中获取当前计算模式所需的数据并进行计算,得到当前计算结果并传递给后处理模块;
在卷积计算模式下,卷积通道累加模块对输出特征图进行多通道累加处理后,再利用激活函数模块进行计算,得到当前卷积块并传递给输出缓冲;
在其他计算模式下,卷积通道累加模块根据配置信息,选择是否对当前计算结果进行通道累加计算,以及是否利用激活函数模块对当前计算结果进行计算,从而得到当前处理结果并传输到输出缓冲中;
若输出缓冲接收到当前卷积块,则按照地址映射的方式对当前卷积块进行顺序整合,并得到当前卷积阵列后传递给数据分配器;
若输出缓冲接收到当前处理结果,则对当前处理结果进行通道对应拆分和数据缓冲后,发送给数据分配器;
当数据分配器接收到的当前卷积阵列或者拆分后的处理结果达到一定的数量后一起写回片上存储中,直到当前计算模式完成计算为止。
具体实施中,多路PE阵列中的每路PE阵列均包括:PE_G1模块、PE_G2模块、PE_G3模块、PE_G4模块、PE_G5模块和RC模块;且PE_G1模块和PE_G2模块中包含4个可重构的PE计算单元;PE_G3模块中包含M个乘法计算单元。以较为简单的仅含PE_G1模块、PE_G2模块、PE_G4模块、PE_G5模块的计算结构为例,此时不再使用PE_G3模块来提高阵列对于输出通道的并行度,如图2所示,PE1-4为PE_G1模块,PE5-8为PE_G2模块,PE9-12为PE_G4模块,PE13-14为PE_G5模块。其中,Winograd计算过程如下式所示:
V=GWGT
R=AT[(V)⊙(BTInB)]A
其中W代表卷积核。In代表输入特征图,参数矩阵AT、G、BT如下所示:
其中,每路PE阵列是按如下过程计算得到输出特征图:
输入缓冲将卷积核按列广播到每路PE阵列的PE_G1模块,使得PE_G1模块根据配置信息中的参数矩阵G,对一个卷积核进行变换,包括:
PE_G1模块中的每个PE计算单元根据参数矩阵G选择卷积核的列数据中相应的数据,并利用自身PE计算单元内的运算器进行变换计算,其中,如图3所示,PE_G1模块中的第一个PE计算单元和第四个PE计算单元协助第二个PE计算单元和第三个PE计算单元完成一次加法运算,并将加法结果重定向到第二个PE计算单元和第三个PE计算单元中完成剩余的加法计算和乘法计算,得到初步卷积计算结果;RC模块对初步卷积计算结果进行数据重整后,发送到PE_G2模块;
PE_G2模块根据配置信息中的参数矩阵GT,对重整后的初步卷积计算结果进行变换,从而完成一个卷积核的变换;
当一定数量的卷积核完成变换后,输入缓冲将输入特征图按列广播到每路PE阵列的PE_G1模块,使得PE_G1模块根据配置信息中的参数矩阵BT,对一个输入特征图进行变换,得到初步特征图计算结果;
RC模块对PE_G1模块的初步特征图计算结果进行重整后,发送到PE_G2模块;
PE_G2模块根据配置信息中的参数矩阵B,对重整后的初步特征图计算结果进行变换,从而完成一个输入特征图的变换;
当输入特征图完成变换后,PE_G2模块将已变换的输入特征图发回PE_G1模块、PE_G2模块;PE_G1模块、PE_G2模块中的PE计算单元将自身内部的计算结构进行重构后接收已变换的输入特征图;PE_G1模块、PE_G2模块对已变换的输入特征图和自身存储的多个输出通道的已变换的卷积核进行点乘计算,得到多个输出通道的点乘结果;
PE_G1模块、PE_G2模块将多个输出通道的点乘结果发送到RC模块进行数据重整,得到多个个输出通道的重整后的初步点乘结果并发送到PE_G4模块;PE_G4模块中的4个PE计算单元以每两个单元为一组,并根据配置信息中的矩阵AT分别对多个输出通道的重整后的初步点乘结果进行变换;PE_G4模块将变换后的初步点乘结果发送RC模块进行数据重整,得到重整后的点乘结果并发送到PE_G5模块;PE_G5模块中的2个PE计算单元为一组,并根据配置信息中的参数矩阵A分别对多个输出通道的重整后的点乘结果进行变换,得到当前计算模式下的输出特征图。
本实施例中,一种基于Winograd算法的卷积神经网络硬件加速器的计算方法,是应用于由存储层、计算层、控制层、数据分配器、输入缓冲、输出缓冲所构成的加速器中,其中,存储层包括:片外的DDR存储器和片上存储;控制层包括:配置模块和控制模块;计算层包括:多路PE阵列和后处理模块;后处理模块包含:激活函数模块和卷积通道累加模块;该计算方法是按如下步骤进行:
步骤1、DDR存储器接收外部发送的卷积核、输入特征图并完成存储;
步骤2、控制模块控制配置模块在从自身RAM中读取计算指令,从而获取计算任务并将其译码成配置信息;
步骤3、数据分配器根据配置信息的当前计算模式,判断当前计算模式是否为卷积计算模式,若是,则执行步骤4-步骤6、以及步骤8-步骤10;否则,执行步骤7-步骤10;
步骤4、数据分配器从DDR存储器中读取不同输出通道的卷积核并分配到输入缓冲中,再从DDR存储器中读取相应输入通道的输入特征图并分配到输入缓冲中;
步骤5、输入缓冲将卷积核发送到PE阵列,使得PE阵列对当前计算模式所需的卷积核进行卷积核变换计算,得到卷积核变换结果缓存在PE阵列中的RAM中;
具体实施中,多路PE阵列中的每路PE阵列均包括:PE_G1模块、PE_G2模块、PE_G3模块、PE_G4模块、PE_G5模块和RC模块;且PE_G1模块和PE_G2模块中包含4个可重构的PE计算单元;PE_G3模块中包含M个乘法计算单元,以较为简单的仅含PE_G1模块、PE_G2模块、PE_G4模块、PE_G5模块的计算结构为例,此时不再使用PE_G3模块来提高阵列对于输出通道的并行度,如图2所示,PE1-4为PE_G1模块,PE5-8为PE_G2模块,PE9-12为PE_G4模块,PE13-14为PE_G5模块,步骤5中的每路PE阵列是按如下过程计算得到卷积核变换结果:
输入缓冲将卷积核按列广播到每路PE阵列的PE_G1模块,使得PE_G1模块根据配置信息中的参数矩阵G,对一个卷积核进行变换,包括:
PE_G1模块中的每个PE计算单元根据参数矩阵G选择卷积核的列数据中相应的数据,并利用自身PE计算单元内的运算器进行变换计算,其中,PE_G1模块中的第一个PE计算单元和第四个PE计算单元协助第二个PE计算单元和第三个PE计算单元完成一次加法运算,并将加法结果重定向到第二个PE计算单元和第三个PE计算单元中完成剩余的加法计算和乘法计算,得到初步卷积计算结果;RC模块对初步卷积计算结果进行数据重整后,发送到PE_G2模块;
PE_G2模块根据配置信息中的参数矩阵GT,对重整后的初步卷积计算结果进行变换,得到卷积核变换结果,从而完成一个卷积核的变换。
步骤6、输入缓冲将输入特征图发送到PE阵列,使得PE阵列对当前计算模式所需的输入特征图进行变换计算、点乘计算和点乘结果的变换计算,得到输出特征图并发送到后处理模块;
具体的说,每路PE阵列是按如下过程计算得到输出特征图:
步骤6.1、当一定数量的卷积核完成变换后,输入缓冲将输入特征图按列广播到每路PE阵列的PE_G1模块,使得PE_G1模块根据配置信息中的参数矩阵BT,对一个输入特征图进行变换,得到初步特征图计算结果;
步骤6.2、RC模块对PE_G1模块的初步特征图计算结果进行重整后,发送到PE_G2模块;
步骤6.3、PE_G2模块根据配置信息中的参数矩阵B,对重整后的初步特征图计算结果进行变换,从而完成一个输入特征图的变换;
步骤6.4、当输入特征图完成变换后,PE_G2模块将已变换的输入特征图发回PE_G1模块、PE_G2模块;PE_G1模块、PE_G2模块中的PE计算单元将自身内部的计算结构进行重构后接收已变换的输入特征图;PE_G1模块、PE_G2模块对已变换的输入特征图和自身存储的多个输出通道的已变换的卷积核进行点乘计算,得到多个输出通道的点乘结果;
步骤6.5、PE_G1模块、PE_G2模块将多个输出通道的点乘结果发送到RC模块进行数据重整,得到多个输出通道的重整后的初步点乘结果并发送到PE_G4模块;PE_G4模块中的4个PE计算单元以每两个单元为一组,并根据配置信息中的矩阵AT分别对多个输出通道的重整后的初步点乘结果进行变换;PE_G4模块将变换后的初步点乘结果发送RC模块进行数据重整,得到重整后的点乘结果并发送到PE_G5模块;PE_G5模块中的2个PE计算单元为一组,并根据配置信息中的参数矩阵A分别对多个输出通道的重整后的点乘结果进行变换,得到当前计算模式下的输出特征图。
步骤7、数据分配器从DDR存储器或片上存储中读取当前计算模式所需的数据并发送给输入缓冲中,多路PE阵列从输入缓冲中获取当前计算模式所需的数据并进行计算,得到当前计算结果并传递给后处理模块;
步骤8、在卷积计算模式下,卷积通道累加模块对输出特征图进行多通道累加处理后,再利用激活函数模块进行计算,得到当前卷积块并传递给输出缓冲;
在其他计算模式下,卷积通道累加模块根据配置信息,选择是否对当前计算结果进行通道累加计算,以及是否利用激活函数模块对当前计算结果进行计算,从而得到当前处理结果并传输到输出缓冲中;
步骤9、若输出缓冲接收到当前卷积块,则按照地址映射的方式对当前卷积块进行顺序整合,并得到当前卷积阵列后传递给数据分配器;
若输出缓冲接收到当前处理结果,则对当前处理结果进行通道对应拆分和数据缓冲后,发送给数据分配器;
步骤10、当数据分配器接收到的当前卷积阵列或者拆分后的处理结果达到一定的数量后一起写回片上存储中,重复步骤3-步骤10,直到当前计算模式计算完成为止。
具体实施中,对于Winograd卷积计算,PE阵列中的PE计算单元结构如图4所示,不同计算阶段的PE会重构成不同的计算结构:
1、对于卷积核变换计算阶段,其中PE1-2重构的计算结构如图5所示,卷积核数据会被数据选择器根据配置信息选中并发送到PE1的In1、In2、In3数据端口,其中In1数据端口的数据会被直接输出到Output1输出端口。而In2和In3数据端口的数据会被送入加法器中进行加法计算,结果输出到Output输出端口。PE1的Output端口数据会被重定向到PE2的In3数据端口与PE2的In2数据端口数据进行加法计算,结果再经过乘法器与参数相乘后输出到Output输出端口。PE3-4同理;
2、对于输入特征图变换计算阶段,其PE1-8的重构结构如图6所示,数据选择器根据配置信息选择相应的输入特征图数据发送到In2、In3数据端口,两者输入的数据会经过加法器进行加法计算,结果将通过Output输出端口发送出去。
3、对于点乘计算计算阶段,其PE的重构结构如图7所示,Other PE数据端口接受来自PE5-8发回的已变换输入特征图数据,而Parameter数据端口接受PE阵列中存储器发出的已变换卷积核数据,通过运算器路径重构,将两者送入乘法器中进行计算,结果从Output1输出端口输出。
Claims (5)
1.一种基于Winograd算法的卷积神经网络硬件加速器,其特征包括:存储层、计算层、控制层、数据分配器、输入缓冲、输出缓冲;
所述存储层包括:片外的DDR存储器和片上存储;
所述控制层包括:配置模块和控制模块;
所述计算层包括:多路PE阵列和后处理模块;
所述后处理模块包含:激活函数模块和卷积通道累加模块;
所述DDR存储器接收外部发送的卷积核、输入特征图并完成存储后,触发所述控制模块,使得所述配置模块在所述控制模块的控制下,从自身RAM中读取计算指令,用于获取计算任务并将其译码成配置信息;
所述数据分配器根据所述配置信息中的当前计算模式,判断当前计算模式是否为卷积计算模式,若是,则从DDR存储器中读取所需的输入特征图、所需的卷积核并分配到输入缓冲中;否则,将当前计算模式所需的数据发送给输入缓冲中;
在卷积计算模式下,多路PE阵列从输入缓冲中获取所述卷积核、输入特征图并进行计算,得到输出特征图并传递给所述后处理模块;
在其他计算模式下,多路PE阵列从输入缓冲中获取当前计算模式所需的数据并进行计算,得到当前计算结果并传递给所述后处理模块;
在卷积计算模式下,所述卷积通道累加模块对所述输出特征图进行多通道累加处理后,再利用激活函数模块进行计算,得到当前卷积块并传递给所述输出缓冲;
在其他计算模式下,所述卷积通道累加模块根据配置信息,选择是否对所述当前计算结果进行通道累加计算,以及是否利用激活函数模块对所述当前计算结果进行计算,从而得到当前处理结果并传输到所述输出缓冲中;
若所述输出缓冲接收到当前卷积块,则按照地址映射的方式对当前卷积块进行顺序整合,并得到当前卷积阵列后传递给所述数据分配器;
若所述输出缓冲接收到当前处理结果,则对所述当前处理结果进行通道对应拆分和数据缓冲后,发送给所述数据分配器;
当所述数据分配器接收到的当前卷积阵列或者拆分后的处理结果达到一定的数量后一起写回所述片上存储中,直到当前计算模式完成计算为止。
2.根据权利要求1所述的卷积神经网络硬件加速器,其特征是,多路PE阵列中的每路PE阵列均包括:PE_G1模块、PE_G2模块、PE_G3模块、PE_G4模块、PE_G5模块和RC模块;且所述PE_G1模块和PE_G2模块中包含4个可重构的PE计算单元;所述PE_G3模块中包含M个乘法计算单元,其中,每路PE阵列是按如下过程计算得到输出特征图:
所述输入缓冲将卷积核按列广播到每路PE阵列的PE_G1模块,使得所述PE_G1模块根据所述配置信息中的参数矩阵G,对一个卷积核进行变换,包括:
所述PE_G1模块中的每个PE计算单元根据参数矩阵G选择卷积核的列数据中相应的数据,并利用自身PE计算单元内的运算器进行变换计算,其中,所述PE_G1模块中的第一个PE计算单元和第四个PE计算单元协助第二个PE计算单元和第三个PE计算单元完成一次加法运算,并将加法结果重定向到第二个PE计算单元和第三个PE计算单元中完成剩余的加法计算和乘法计算,得到初步卷积计算结果;所述RC模块对初步卷积计算结果进行数据重整后,发送到所述PE_G2模块;
所述PE_G2模块根据配置信息中的参数矩阵GT,对重整后的初步卷积计算结果进行变换,从而完成一个卷积核的变换;
当一定数量的卷积核完成变换后,所述输入缓冲将输入特征图按列广播到每路PE阵列的PE_G1模块,使得所述PE_G1模块根据所述配置信息中的参数矩阵BT,对一个输入特征图进行变换,得到初步特征图计算结果;
所述RC模块对PE_G1模块的初步特征图计算结果进行重整后,发送到PE_G2模块;
所述PE_G2模块根据配置信息中的参数矩阵B,对重整后的初步特征图计算结果进行变换,从而完成一个输入特征图的变换;
当输入特征图完成变换后,所述PE_G2模块将已变换的输入特征图发回所述PE_G1模块、PE_G2模块和PE_G3模块;所述PE_G1模块、PE_G2模块中的PE计算单元将自身内部的计算结构进行重构后接收已变换的输入特征图;所述PE_G1模块、PE_G2模块、PE_G3模块对已变换的输入特征图和自身存储的M/4+2个输出通道的已变换的卷积核进行点乘计算,得到M/4+2个输出通道的点乘结果;
所述PE_G1模块、PE_G2模块、PE_G3模块将M/4+2个输出通道的点乘结果发送到RC模块进行数据重整,得到M/4+2个输出通道的重整后的初步点乘结果并发送到PE_G4模块;所述PE_G4模块中的M/2+4个PE计算单元以每两个单元为一组,并根据配置信息中的矩阵AT分别对M/4+2个输出通道的重整后的初步点乘结果进行变换;所述PE_G4模块将变换后的初步点乘结果发送RC模块进行数据重整,得到重整后的点乘结果并发送到PE_G5模块;所述PE_G5模块中的M/4+2个PE计算单元以每两个单元为一组,并根据配置信息中的参数矩阵A分别对M/4+2个输出通道的重整后的点乘结果进行变换,得到当前计算模式下的输出特征图。
3.一种基于Winograd算法的卷积神经网络硬件加速器的计算方法,其特征是应用于由存储层、计算层、控制层、数据分配器、输入缓冲、输出缓冲所构成的加速器中,其中,所述存储层包括:片外的DDR存储器和片上存储;所述控制层包括:配置模块和控制模块;所述计算层包括:多路PE阵列和后处理模块;所述后处理模块包含:激活函数模块和卷积通道累加模块;所述计算方法是按如下步骤进行:
步骤1、所述DDR存储器接收外部发送的卷积核、输入特征图并完成存储;
步骤2、所述控制模块控制所述配置模块在从自身RAM中读取计算指令,从而获取计算任务并将其译码成配置信息;
步骤3、所述数据分配器根据所述配置信息的当前计算模式,判断当前计算模式是否为卷积计算模式,若是,则执行步骤4-步骤6、以及步骤8-步骤10;否则,执行步骤7-步骤10;
步骤4、所述数据分配器从DDR存储器中读取不同输出通道的卷积核并分配到输入缓冲中,再从DDR存储器中读取相应输入通道的输入特征图并分配到输入缓冲中;
步骤5、所述输入缓冲将卷积核发送到PE阵列,使得PE阵列对当前计算模式所需的卷积核进行卷积核变换计算,得到卷积核变换结果缓存在PE阵列中的RAM中;
步骤6、所述输入缓冲将输入特征图发送到PE阵列,使得PE阵列对当前计算模式所需的输入特征图进行变换计算、点乘计算和点乘结果的变换计算,得到输出特征图并发送到所述后处理模块;
步骤7、所述数据分配器从DDR存储器或片上存储中读取当前计算模式所需的数据并发送给输入缓冲中,多路PE阵列从输入缓冲中获取当前计算模式所需的数据并进行计算,得到当前计算结果并传递给所述后处理模块;
步骤8、在卷积计算模式下,所述卷积通道累加模块对所述输出特征图进行多通道累加处理后,再利用激活函数模块进行计算,得到当前卷积块并传递给所述输出缓冲;
在其他计算模式下,所述卷积通道累加模块根据配置信息,选择是否对所述当前计算结果进行通道累加计算,以及是否利用激活函数模块对所述当前计算结果进行计算,从而得到当前处理结果并传输到所述输出缓冲中;
步骤9、若所述输出缓冲接收到当前卷积块,则按照地址映射的方式对当前卷积块进行顺序整合,并得到当前卷积阵列后传递给所述数据分配器;
若所述输出缓冲接收到当前处理结果,则对所述当前处理结果进行通道对应拆分和数据缓冲后,发送给所述数据分配器;
步骤10、当所述数据分配器接收到的当前卷积阵列或者拆分后的处理结果达到一定的数量后一起写回所述片上存储中,重复步骤3-步骤10,直到当前计算模式完成计算为止。
4.根据权利要求3所述的卷积神经网络硬件加速器的计算方法,其特征是,多路PE阵列中的每路PE阵列均包括:PE_G1模块、PE_G2模块、PE_G3模块、PE_G4模块、PE_G5模块和RC模块;且所述PE_G1模块和PE_G2模块中包含4个可重构的PE计算单元;所述PE_G3模块中包含M个乘法计算单元,所述步骤5中的每路PE阵列是按如下过程计算得到卷积核变换结果:
所述输入缓冲将卷积核按列广播到每路PE阵列的PE_G1模块,使得所述PE_G1模块根据所述配置信息中的参数矩阵G,对一个卷积核进行变换,包括:
所述PE_G1模块中的每个PE计算单元根据参数矩阵G选择卷积核的列数据中相应的数据,并利用自身PE计算单元内的运算器进行变换计算,其中,所述PE_G1模块中的第一个PE计算单元和第四个PE计算单元协助第二个PE计算单元和第三个PE计算单元完成一次加法运算,并将加法结果重定向到第二个PE计算单元和第三个PE计算单元中完成剩余的加法计算和乘法计算,得到初步卷积计算结果;所述RC模块对初步卷积计算结果进行数据重整后,发送到所述PE_G2模块;
所述PE_G2模块根据配置信息中的参数矩阵GT,对重整后的初步卷积计算结果进行变换,得到卷积核变换结果,从而完成一个卷积核的变换。
5.根据权利要求4所述的卷积神经网络硬件器的计算方法,其特征是,所述步骤6中的每路PE阵列是按如下过程计算得到输出特征图:
步骤6.1、当一定数量的卷积核完成变换后,所述输入缓冲将输入特征图按列广播到每路PE阵列的PE_G1模块,使得所述PE_G1模块根据所述配置信息中的参数矩阵BT,对一个输入特征图进行变换,得到初步特征图计算结果;
步骤6.2、所述RC模块对PE_G1模块的初步特征图计算结果进行重整后,发送到PE_G2模块;
步骤6.3、所述PE_G2模块根据配置信息中的参数矩阵B,对重整后的初步特征图计算结果进行变换,从而完成一个输入特征图的变换;
步骤6.4、当输入特征图完成变换后,所述PE_G2模块将已变换的输入特征图发回所述PE_G1模块、PE_G2模块和PE_G3模块;所述PE_G1模块、PE_G2模块中的PE计算单元将自身内部的计算结构进行重构后接收已变换的输入特征图;所述PE_G1模块、PE_G2模块、PE_G3模块对已变换的输入特征图和自身存储的M/4+2个输出通道的已变换的卷积核进行点乘计算,得到M/4+2个输出通道的点乘结果;
步骤6.5、所述PE_G1模块、PE_G2模块、PE_G3模块将M/4+2个输出通道的点乘结果发送到RC模块进行数据重整,得到M/4+2个输出通道的重整后的初步点乘结果并发送到PE_G4模块;所述PE_G4模块中的M/2+4个PE计算单元以每两个单元为一组,并根据配置信息中的矩阵AT分别对M/4+2个输出通道的重整后的初步点乘结果进行变换;所述PE_G4模块将变换后的初步点乘结果发送RC模块进行数据重整,得到重整后的点乘结果并发送到PE_G5模块;所述PE_G5模块中的M/4+2个PE计算单元以每两个单元为一组,并根据配置信息中的参数矩阵A分别对M/4+2个输出通道的重整后的点乘结果进行变换,得到当前计算模式下的输出特征图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110666106.5A CN113255898B (zh) | 2021-06-16 | 2021-06-16 | 基于Winograd算法的卷积神经网络硬件加速器及计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110666106.5A CN113255898B (zh) | 2021-06-16 | 2021-06-16 | 基于Winograd算法的卷积神经网络硬件加速器及计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113255898A true CN113255898A (zh) | 2021-08-13 |
CN113255898B CN113255898B (zh) | 2022-08-02 |
Family
ID=77188434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110666106.5A Active CN113255898B (zh) | 2021-06-16 | 2021-06-16 | 基于Winograd算法的卷积神经网络硬件加速器及计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113255898B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113762483A (zh) * | 2021-09-16 | 2021-12-07 | 华中科技大学 | 一种用于心电信号分割的1D U-net神经网络处理器 |
CN115600652A (zh) * | 2022-11-29 | 2023-01-13 | 深圳市唯特视科技有限公司(Cn) | 卷积神经网络处理装置、高速目标探测方法以及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229645A (zh) * | 2017-04-28 | 2018-06-29 | 北京市商汤科技开发有限公司 | 卷积加速和计算处理方法、装置、电子设备及存储介质 |
CN109886400A (zh) * | 2019-02-19 | 2019-06-14 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
CN111445012A (zh) * | 2020-04-28 | 2020-07-24 | 南京大学 | 一种基于fpga的分组卷积硬件加速器及其方法 |
KR20210037569A (ko) * | 2019-09-27 | 2021-04-06 | 삼성전자주식회사 | 컨볼루션 신경망 가속기 아키텍처를 위한 전력 효율적인 하이브리드 트래버설 장치 및 방법 |
-
2021
- 2021-06-16 CN CN202110666106.5A patent/CN113255898B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229645A (zh) * | 2017-04-28 | 2018-06-29 | 北京市商汤科技开发有限公司 | 卷积加速和计算处理方法、装置、电子设备及存储介质 |
CN109886400A (zh) * | 2019-02-19 | 2019-06-14 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
KR20210037569A (ko) * | 2019-09-27 | 2021-04-06 | 삼성전자주식회사 | 컨볼루션 신경망 가속기 아키텍처를 위한 전력 효율적인 하이브리드 트래버설 장치 및 방법 |
CN111445012A (zh) * | 2020-04-28 | 2020-07-24 | 南京大学 | 一种基于fpga的分组卷积硬件加速器及其方法 |
Non-Patent Citations (4)
Title |
---|
ANDREW LAVIN ET AL: "Fast Algorithms for Convolutional Neural Networks", 《2016 IEEE CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION (CVPR)》 * |
ANTHONY G.SCANLAN: "Low power & mobile hardware accelerators for deep convolutional neural networks", 《INTEGRATION》 * |
徐睿等: "基于Winograd稀疏算法的卷积神经网络加速器设计与研究", 《计算机工程与科学》 * |
訾晶等: "基于FPGA的可配置神经网络硬件设计", 《传感器与微系统》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113762483A (zh) * | 2021-09-16 | 2021-12-07 | 华中科技大学 | 一种用于心电信号分割的1D U-net神经网络处理器 |
CN113762483B (zh) * | 2021-09-16 | 2024-02-09 | 华中科技大学 | 一种用于心电信号分割的1D U-net神经网络处理器 |
CN115600652A (zh) * | 2022-11-29 | 2023-01-13 | 深圳市唯特视科技有限公司(Cn) | 卷积神经网络处理装置、高速目标探测方法以及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113255898B (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113255898B (zh) | 基于Winograd算法的卷积神经网络硬件加速器及计算方法 | |
JP3749022B2 (ja) | 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム | |
WO2022007266A1 (zh) | 一种卷积神经网络的加速方法及装置 | |
Lenart et al. | Architectures for dynamic data scaling in 2/4/8K pipeline FFT cores | |
KR20060061796A (ko) | 리코드 radix-2 파이프라인 FFT 프로세서 | |
CN112446330B (zh) | 基于多通道fft算法的太阳射电频谱分析方法及系统 | |
CN111506343A (zh) | 一种基于脉动阵列硬件架构的深度学习卷积运算实现方法 | |
CN111582467B (zh) | 人工智能加速器和电子设备 | |
CN111340198A (zh) | 基于fpga的数据高度复用的神经网络加速器 | |
US20100128818A1 (en) | Fft processor | |
US9727531B2 (en) | Fast fourier transform circuit, fast fourier transform processing method, and program recording medium | |
US8510362B2 (en) | Apparatus and method for variable fast fourier transform | |
CN100547580C (zh) | 用于实现可变大小的快速正交变换的方法和装置 | |
US8484273B1 (en) | Processing system and method for transform | |
CN114201725B (zh) | 基于多模可重构fft的窄带通信信号处理方法 | |
WO2011102291A1 (ja) | 高速フーリエ変換回路 | |
CN112561943B (zh) | 一种基于脉动阵列卷积运算数据复用的图像处理方法 | |
Zhou et al. | A flexible-channel mdf architecture for pipelined radix-2 FFT | |
Tsai et al. | Power-efficient continuous-flow memory-based FFT processor for WiMax OFDM mode | |
US7031404B2 (en) | Inverse DWT method and apparatus | |
JP2002175283A (ja) | シストリックアレイ型演算器 | |
CN112766453A (zh) | 一种数据处理装置及数据处理方法 | |
Hassan et al. | FPGA Implementation of an ASIP for high throughput DFT/DCT 1D/2D engine | |
CN111045965B (zh) | 一种多通道无冲突拆分的硬件实现方法及运行该方法的计算机设备与可读存储介质 | |
Locharla et al. | Implementation of input data buffering and scheduling methodology for 8 parallel MDC FFT |
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 |