一种基于Winograd稀疏算法的卷积神经网络加速器制造技术

技术编号:23363726 阅读:22 留言:0更新日期:2020-02-18 17:34
本发明专利技术公开了一种基于Winograd稀疏算法的卷积神经网络加速器,其包括:控制模块,用于负责数据的搬移;缓冲模块buffer,用于负载数据的暂存,运算模块,用于负责完成Winograd稀疏算法的运算;在读取阶段,由控制模块发送地址,输入缓存和权重缓存读取外部DRAM中的数据;在数据运算阶段,由运算模块从缓冲模块中读取输入数据、权重数据和权重索引,完成卷积运算;在发送阶段,当输出完成最终的累加操作,再经由输出缓存发送至外部DRAM,最终完成计算。本发明专利技术具有结构简单、容易实现、加速效果好等优点。

A convolutional neural network accelerator based on Winograd sparse algorithm

【技术实现步骤摘要】
一种基于Winograd稀疏算法的卷积神经网络加速器
本专利技术主要涉及到卷积神经网络
,特指一种基于Winograd稀疏算法的卷积神经网络加速器。
技术介绍
卷积神经网络目前广泛地应用于各项计算机领域,如图像识别、推荐系统和语言处理。然而,训练和推导卷积神经网络的时间是难以忍受的。原因便是卷积神经网络引入了卷积层,提高了网络中的计算复杂性,带来了巨大的工作负载。这是目前CPU或是嵌入式端处理器所难以解决的。为了解决这个问题,许多方案被提出,如运算过程中采用GPU加速,或是使用FPGA、定制ASIC等硬件来完成卷积运算。这些方案大多是利用了卷积神经网络算法的并行性从而提高卷积计算效率。但是由于GPU面积、功耗和使用的平台限制,使其很难在热门的移动端或是嵌入式端中得到广泛的应用。因而采用FPGA或是ASIC进行定制化的硬件设计,在控制功耗和面积的情况下达到加速的目的,是一种十分高效的解决手段。然而,目前FPGA、ASIC方案在处理卷积层运算中更多地是采用直接卷积运算,鲜有使用其他算法的方案。这实际上只是通过硬件来优化运算效率,而忽视了软件或是算法层面的优化空间。从目前趋势来看,卷积神经网络拓扑不断加深从而带来了更高的运算复杂度。因而选择其他的加速方案从而在有限的硬件资源下获得更多效益是很有必要的。
技术实现思路
本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种结构简单、容易实现、加速效果好的基于Winograd稀疏算法的卷积神经网络加速器。>为解决上述技术问题,本专利技术采用以下技术方案:一种基于Winograd稀疏算法的卷积神经网络加速器,其包括:控制模块,用于负责数据的搬移;缓冲模块buffer,用于负载数据的暂存,运算模块,用于负责完成Winograd稀疏算法的运算;在读取阶段,由控制模块发送地址,输入缓存和权重缓存读取外部DRAM中的数据;在数据运算阶段,由运算模块从缓冲模块中读取输入数据、权重数据和权重索引,完成卷积运算;在发送阶段,当输出完成最终的累加操作,再经由输出缓存发送至外部DRAM,最终完成计算。作为本专利技术的进一步改进:所述控制模块包括:转化模块,用于将需要处理的数据转化到Winograd域中;0跳过模块,用于跳过所有输入为0值的寄存器,之后重新将输入传入并行的乘法器阵列中,从而减少在计算过程中使用乘法器的压力;压缩编码单元,用于提供稀疏存储支持;权重压缩编码读取单元,用于对数据与索引进行分开存储,数据与索引的读取依靠自身在buffer的位置与Index的第一位来引导完成。作为本专利技术的进一步改进:所述压缩编码单元采用一个密度约为0.4的4×4大小的稀疏矩阵;在数据结构中数据以线性形式将二维矩阵以一维形式存储,将非0元素的数据存储至向量Data中,将非0元素的位置信息存储到向量Index中,位置信息由(r×4+c)来表示,其中r表示数据在矩阵中的行,c表示数据在矩阵中的列;在Index第一位中存储矩阵中所有非0元素的个数。作为本专利技术的进一步改进:所述权重压缩编码读取单元采用一个已经经过训练添加稀疏度的4×4大小的卷积权重,则在Index中存储数据的最大值是16,所以使用5位的无符号整型数据来存储;对于Data数据使用定点16位来保存。作为本专利技术的进一步改进:所述转化模块用于将输入转到Winograd域中,然后将完成矩阵之间对应元素相乘的操作,最后将乘法器输出的结果由Winograd域转换到空间域中,完成结果的输出。作为本专利技术的进一步改进:所述缓冲模块采用线性buffer单元,直接把数据按照需要的一维形式传送;在数据读取过程中存在数据重用时,读取指针会在重用区域反复读取以重用数据。作为本专利技术的进一步改进:所述运算模块包括:处理引擎,用于完成Winograd稀疏算法下输入特征数据与权重数据的卷积运算;处理单元,用于负责处理输入的特征数据与权重数据。作为本专利技术的进一步改进:所述处理单元包括PU、子模块处理引擎和累加器;所述PU一次可以处理四组数据,分别对应着四组输入通道;加载四组权重数据,经过计算产生一组输出数据,对应于同一个通道下的输出特征图;四组输入最终会分配给PU中对应的四个PE,由四个PE并行完成计算,并累加完成结果输出。与现有技术相比,本专利技术的优点在于:本专利技术的一种基于Winograd稀疏算法的卷积神经网络加速器,结构简单、容易实现、加速效果好,其利用转化模块通过最简单的加法操作,就可以很迅速地将需要处理的数据转化到Winograd域中。然后通过0跳过模块,可以减少在计算过程中使用乘法器的压力。利用处理引擎和处理单元完成Winograd稀疏算法下输入特征数据与权重数据的卷积运算,并处理输入的特征数据与权重数据。本专利技术中的线性buffer设计,可以最大程度重用输入特征数据。附图说明图1是本专利技术的拓扑结构原理示意图。图2是本专利技术在具体应用实例中处理单元结构与运算过程伪代码。图3是本专利技术在具体应用实例中压缩编码的示意图。图4是本专利技术在具体应用实例中权重数据存储及读取的示意图。图5是本专利技术在具体应用实例中处理引擎的结构原理示意图。图6是本专利技术在具体应用实例中转化模块的结构原理示意图。图7是本专利技术在具体应用实例中线性buffer单元的示意图。具体实施方式以下将结合说明书附图和具体实施例对本专利技术做进一步详细说明。如图1所示,本专利技术的一种基于Winograd稀疏算法的卷积神经网络加速器,它包括:控制模块(topcontrol),用于负责数据的搬移;缓冲模块(buffer),用于负载数据的暂存,运算模块(PUs),用于负责完成Winograd稀疏算法的运算。在读取阶段,由控制模块(顶层控制)发送地址,输入缓存和权重缓存读取外部DRAM中的数据;在数据运算阶段,由运算模块从缓冲模块中读取输入数据、权重数据和权重索引,完成卷积运算;在发送阶段,当输出完成最终的累加操作,再经由输出缓存发送至外部DRAM,最终完成计算。在具体应用实例中,本专利技术的控制模块包括:转化模块,用于将需要处理的数据转化到Winograd域中;在本实例中,该转化模块通过最简单的加法操作,就可以很迅速地完成数据转化;0跳过模块,用于跳过所有输入为0值的寄存器,之后重新将输入传入并行的乘法器阵列中,从而减少在计算过程中使用乘法器的压力;压缩编码单元,用于提供稀疏存储支持,数据不再以原先的矩阵形式存储矩阵,而是以线性形式将二维矩阵以一维形式存储。然后,将非0元素的数据存储至向量Data中,将非0元素的位置信息存储到向量Index中;权重压缩编码读取单元,用于对数据与索引进行分开存储,尽可能节约buffer存储空间,数据与索引的读取依靠自身在buffer的位置与Index的第一位本文档来自技高网...

【技术保护点】
1.一种基于Winograd稀疏算法的卷积神经网络加速器,其特征在于,它包括:/n控制模块,用于负责数据的搬移;/n缓冲模块buffer,用于负载数据的暂存,/n运算模块,用于负责完成Winograd稀疏算法的运算;/n在读取阶段,由控制模块发送地址,输入缓存和权重缓存读取外部DRAM中的数据;在数据运算阶段,由运算模块从缓冲模块中读取输入数据、权重数据和权重索引,完成卷积运算;在发送阶段,当输出完成最终的累加操作,再经由输出缓存发送至外部DRAM,最终完成计算。/n

【技术特征摘要】
1.一种基于Winograd稀疏算法的卷积神经网络加速器,其特征在于,它包括:
控制模块,用于负责数据的搬移;
缓冲模块buffer,用于负载数据的暂存,
运算模块,用于负责完成Winograd稀疏算法的运算;
在读取阶段,由控制模块发送地址,输入缓存和权重缓存读取外部DRAM中的数据;在数据运算阶段,由运算模块从缓冲模块中读取输入数据、权重数据和权重索引,完成卷积运算;在发送阶段,当输出完成最终的累加操作,再经由输出缓存发送至外部DRAM,最终完成计算。


2.根据权利要求1所述的基于Winograd稀疏算法的卷积神经网络加速器,其特征在于,所述控制模块包括:
转化模块,用于将需要处理的数据转化到Winograd域中;
0跳过模块,用于跳过所有输入为0值的寄存器,之后重新将输入传入并行的乘法器阵列中,从而减少在计算过程中使用乘法器的压力;
压缩编码单元,用于提供稀疏存储支持;
权重压缩编码读取单元,用于对数据与索引进行分开存储,数据与索引的读取依靠自身在buffer的位置与Index的第一位来引导完成。


3.根据权利要求2所述的基于Winograd稀疏算法的卷积神经网络加速器,其特征在于,所述压缩编码单元采用一个密度约为0.4的4×4大小的稀疏矩阵;在数据结构中数据以线性形式将二维矩阵以一维形式存储,将非0元素的数据存储至向量Data中,将非0元素的位置信息存储到向量Index中,位置信息由(r×4+c)来表示,其中r表示数据在矩阵中的行,c表示数据在矩阵中的列;在Index第一位中存储矩阵中所有非0元素的个数。


4.根据权...

【专利技术属性】
技术研发人员:郭阳徐睿马胜刘胜陈海燕王耀华
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1