CN108241890B - 一种可重构神经网络加速方法及架构 - Google Patents
一种可重构神经网络加速方法及架构 Download PDFInfo
- Publication number
- CN108241890B CN108241890B CN201810084089.2A CN201810084089A CN108241890B CN 108241890 B CN108241890 B CN 108241890B CN 201810084089 A CN201810084089 A CN 201810084089A CN 108241890 B CN108241890 B CN 108241890B
- Authority
- CN
- China
- Prior art keywords
- convolution
- channels
- output
- input
- input data
- 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.)
- Active
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/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/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明提供了一种可重构神经网络加速方法及架构,通过输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元的架构,分别采用输入数据复用、输出数据复用及权重数据复用的模式,通过卷积计算核单元将读取的输入数据与卷积核进行卷积运算,生成输出数据的方法。本申请通过逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。
Description
技术领域
本发明涉及深度卷积神经网络中的计算模式,尤其涉及一种可重构神经网络加速方法及架构。
背景技术
深度卷积神经网络已经广泛应用于计算机视觉领域和语音处理领域中,然后由于深度卷积神经网络本身具有的高度复杂性,使得它在硬件上执行时带来很大的挑战,尤其是功耗和性能的问题。传统的执行硬件有CPU、GPU、FPGA,不足的是,CPU无法在嵌入式设备中进行低延时的运算处理,而GPU尽管能满足低延时处理,但它的功耗极大,不适用于嵌入式设备中;另一方面FPGA尽管能勉强满足功耗和执行性能的要求,但它本身内部的布线资源和计算单元恰恰限制了不同的深度卷积神经网络的执行效率。
针对以上的需求和挑战,需要一种专门用来执行深度卷积神经网络架构来取代CPU、GPU或FPGA这些硬件。然而即便如此,有些传统的神经网络硬件架构所采用的计算模式并不能在执行效率和能耗之间获得一个很好的折中。在传统的硬件深度神经网络计算模式中,往往因为每一层的数据量不同,故有的计算模式对于缓存器和存储器的访问较为单一,并不能根据计算需求进行实时配置,从而导致访问存储器的次数大大增多,造成了不必要的功耗浪费。图1是经典的深度卷积神经网络计算示意图,图2是经典的深度卷积神经网络的卷积层运算的伪代码循环表达式。如图1所示,现有技术中经典的深度卷积神经网络中,卷积核的尺寸为K×K,每个卷积核具有N个卷积通道,输入数据的尺寸为H×L,具有N个输入通道,由M个卷积核与输入数据进行卷积运算获得输出数据,输出数据R×C,具有M个输出通道。如图2所示,经典的深度卷积神经网络的卷积层运算的伪代码循环过程如下:
通过循环R及C依次获取每个通道上的各部分输出数据;
通过循环M使每个卷积核的N个卷积通道依次与部分输入数据的N个输入通道进行卷积运算,从而依次获得各输出通道的输出数据;
通过循环N使部分输入数据的N个输入通道依次与当前卷积核N个卷积通道进行卷积运算。
在深度卷积神经网络加速处理器中,能耗是一项非常重要的指标。而能耗的定义为:
其中Operations为操作数,Energy为能量,Perfomance为性能,Power为功耗,而对于某个特定的卷积神经网络而言,它的计算操作数是固定的,因此影响能耗的关键因素只是能量Energy。
而能量的产生又可定义为:
Energy=MADRAM·EDRAM+MAbuffer·Ebuffer+Operations·Eoperation
其中Energy为能量,MADRAM和MAbuffer是DRAM和缓存Buffer访问次数,Operations为操作数。EDRAM,Ebuffer,Eoperation是单次DRAM缓存和操作的能量。因此对于固定的卷积神经网络,影响能耗的关键因素是DRAM的访问次数MADRAM和Buffer访问次数MAbuffer。
除此之外,在执行卷积运算时,传统的计算模式对于PE阵列的利用率不高,尤其当卷积核步长大于1时,PE阵列的硬件资源利用率会大大降低。
因此,如何在深度卷积神经网络中通过改善对Buffer以及DRAM的访问次数降低能耗以及在卷积运算时提高PE阵列的利用率,是当前亟待解决的技术问题。
发明内容
为了解决现有技术中的缺陷,本发明提出了一种可重构神经网络加速方法及架构,实现了通过逐层加速的策略应对层数多样的神经网络,并使用循环变换优化计算模式,具有降低能耗,使PE阵列的利用率达到最大的有益效果。
本发明提出了一种可重构神经网络加速方法一,该方法为输入数据复用方法,包括:
输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=NTn,N,n,Tn均为正整数;
权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
卷积计算核单元将读取的第a个输入数据块依次与各组所述卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块;直至与第m组所述卷积组进行卷积运算完毕,生成具有M个输出通道的输出数据块;将输出缓存单元反馈的M个输出通道的存储输出数据块与生成的所述M个输出通道的输出数据块进行累加,并发送累加后的输出数据块;其中,所述存储输出数据块由在读取第a个输入数据块之前读取的第1至第(a-1)个输入数据块依次与各组所述卷积组进行卷积后累加生成;
所述输出缓存单元将接收的所述累加后的输出数据块存储为M个输出通道的存储输出数据块,并向所述卷积计算核单元反馈所述存储输出数据块;当a=n时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,a≤n,a为正整数。
本发明提供了一种可重构神经网络加速架构一,包括:输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元;
所述输入缓存单元,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
所述权重缓存单元,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
所述卷积计算核单元,用于将读取的第a个输入数据块依次与各组所述卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块;直至与第m组所述卷积组进行卷积运算完毕,生成具有M个输出通道的输出数据块;将输出缓存单元反馈的M个输出通道的存储输出数据块与生成的所述M个输出通道的输出数据块进行累加,并发送累加后的输出数据块;其中,所述存储输出数据块由在读取第a个输入数据块之前读取的第1至第(a-1)个输入数据块依次与各组所述卷积组进行卷积后累加生成;
所述输出缓存单元,用于将接收的所述累加后的输出数据块存储为M个输出通道的存储输出数据块,并向所述卷积计算核单元反馈所述存储输出数据块;当a=n时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,a≤n,a为正整数。
本发明提供了一种可重构神经网络加速方法二,该方法为输出数据复用方法,包括:
输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
卷积计算核单元将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的全部输出数据;将所述卷积计算核单元存储的部分通道和输出数据与生成的Tm个输出通道的全部输出数据进行累加,生成并存储累加后的部分通道和输出数据;其中,所述存储的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;当b=m时,所述卷积计算核单元发送累加后的M个通道的输出数据;其中,b≤m,b为正整数;将接收的M个输出通道的输出数据进行池化处理,并发送池化后的输出数据;
输出缓存单元接收并存储池化后的输出数据,生成池化后的M个输出通道的输出数据。
本发明提供了一种可重构神经网络加速架构二,包括:输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元;
所述输入缓存单元,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
所述权重缓存单元,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
所述卷积计算核单元,用于将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的全部输出数据;将所述卷积计算核单元存储的部分通道和输出数据与生成的Tm个输出通道的全部输出数据进行累加,生成并存储累加后的部分通道和输出数据;其中,所述存储的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;当b=m时,所述卷积计算核单元发送累加后的M个通道的输出数据;其中,b≤m,b为正整数;将接收的M个输出通道的输出数据进行池化处理,并发送池化后的输出数据;
所述输出缓存单元,用于接收并存储池化后的输出数据,生成池化后的M个输出通道的输出数据。
本发明提供了一种可重构神经网络加速方法三,该方法为权重数据复用方法,包括:
输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
卷积计算核单元将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的输出数据;将输出缓存单元反馈的部分通道和输出数据与生成的所述Tm个输出通道的输出数据进行累加,并发送累加后的部分通道和输出数据;其中,所述反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;
所述输出缓存单元将接收的累加后的部分通道和输出数据存储为部分通道和输出数据,并向所述卷积计算核单元反馈存储的部分通道和输出数据;当b=m时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,b≤m,b为正整数。
本发明提供了一种可重构神经网络加速架构三,包括:输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元;
所述输入缓存单元,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
所述权重缓存单元,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
所述卷积计算核单元,用于将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的输出数据;将输出缓存单元反馈的部分通道和输出数据与生成的所述Tm个输出通道的输出数据进行累加,并发送累加后的部分通道和输出数据;其中,所述反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;
所述输出缓存单元,用于将接收的累加后的部分通道和输出数据存储为部分通道和输出数据,并向所述卷积计算核单元反馈存储的部分通道和输出数据;当b=m时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,b≤m,b为正整数。
本发明的有益效果:本发明提供的可重构神经网络加速方法及架构,在输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元的基础上,分别采用输入数据复用方法、输出数据复用方法以及权重数据复用方法,实现了通过逐层加速的策略应对层数多样的神经网络,并使用循环变换优化神经网络加速方法,具有降低能耗,使PE阵列的利用率达到最大的有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是经典的深度卷积神经网络计算示意图;
图2是经典的深度卷积神经网络的卷积层运算的伪代码循环表达式图;
图3是本发明实施例一提供的一种可重构神经网络加速方法的流程图;
图4是本发明一实施例的沿Z轴发送输入数据块的示意图;
图5是本发明一实施例的可重构神经网络加速方法的流程图;
图6是传统卷积核的卷积计算缺陷一的示意图;
图7是本发明一实施例的基于缺陷一的并行卷积映射方式示意图;
图8是本发明一实施例的基于缺陷一的并行卷积映射方式的伪代码循环表达式图;
图9是传统卷积核的卷积计算缺陷二的示意图;
图10是本发明一实施例的基于缺陷二的一输入数据块分割示意图;
图11是本发明一实施例的基于缺陷二的拼接后的一输入数据块示意图;
图12是本发明一实施例的基于缺陷二的并行卷积映射方式示意图;
图13是本发明实施例一的卷积运算伪代码循环表达式图;
图14是本发明实施例二提供的一种可重构神经网络加速架构的结构示意图;
图15是本发明实施例三提供的一种可重构神经网络加速方法的流程图;
图16是本发明一实施例的沿XY平面发送输入数据块的示意图;
图17是本发明一实施例的可重构神经网络加速方法的流程图;
图18是本发明实施例三的卷积运算伪代码循环表达式图;
图19是本发明实施例四提供的一种可重构神经网络加速架构的结构示意图;
图20是本发明实施例五提供的一种可重构神经网络加速方法的流程图;
图21是本发明一实施例的可重构神经网络加速方法的流程图;
图22是本发明实施例五的卷积运算伪代码循环表达式图;
图23是本发明实施例六提供的一种可重构神经网络加速架构的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
关于本文中所使用的“第一”、“第二”、……等,并非特别指称次序或顺位的意思,亦非用以限定本发明,其仅为了区别以相同技术用语描述的元件或操作。
关于本文中所使用的“包含”、“包括”、“具有”、“含有”等等,均为开放性的用语,即意指包含但不限于。
关于本文中所使用的“及/或”,包括所述事物的任一或全部组合。
关于本文中所使用的方向用语,例如:上、下、左、右、前或后等,仅是参考附加图式的方向。因此,使用的方向用语是用来说明并非用来限制本案。
针对现有技术中存在的缺陷,本发明提出了一种可重构神经网络加速方法,通过数据复用逐层加速的策略应对层数多样的神经网络,并使用循环变换优化神经网络加速方法,具有降低能耗,使PE阵列的利用率达到最大的有益效果。
实施例一:为了解决现有技术中存在的缺陷,本实施例提供了一种可重构神经网络加速方法,该方法采用输入数据复用模式,如图3所示,可重构神经网络加速方法包括:
S101:输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数。
S102:权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数。
S103:卷积计算核单元将读取的第a个输入数据块依次与各组所述卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块;直至与第m组所述卷积组进行卷积运算完毕,生成具有M个输出通道的输出数据块;将输出缓存单元反馈的M个输出通道的存储输出数据块与生成的所述M个输出通道的输出数据块进行累加,并发送累加后的输出数据块;其中,所述存储输出数据块由在读取第a个输入数据块之前读取的第1至第(a-1)个输入数据块依次与各组所述卷积组进行卷积后累加生成。
S104:所述输出缓存单元将接收的所述累加后的输出数据块存储为M个输出通道的存储输出数据块,并向所述卷积计算核单元反馈所述存储输出数据块;当a=n时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,a≤n,a为正整数。
本实施例提供的可重构神经网络加速方法,通过将输入数据分割为各输入数据块,并将输入数据块依次发送到卷积计算核单元,卷积计算核单元每次将一个输入数据块依次与m组卷积组进行卷积运算,生成M个输出通道的输出数据块,重复上述操作将每个输入数据块均与m组卷积组进行卷积运算,并不断对生成M个输出通道的输出数据块进行累加,最后获得M个输出通道的全部输出数据。本实施例的可重构神经网络加速方法,通过数据复用逐层加速的策略应对层数多样的神经网络,具有优化神经网络,降低能耗的效果。进一步地,输入缓存单元依次发送各输入数据块时,可以沿Z轴方向依次发送各输入数据块。
具体实施时,如图4所示,输入数据为三维结构,输入数据具有N个输入通道(Z轴方向),每个通道输入数据的尺寸H×L(XY平面),将每个输入通道的输入数据分割成尺寸为Th×Tl的输入数据块,将n个输入数据块沿Z轴方向依次读取,并发送到卷积计算核单元进行卷机运算。如图4中所示先发送第1至第i个输入数据块,然后再发送第i+1至第2i个输入数据块,以此类推,最后发送第n个输入数据块,其中n=1,2,……,i,i+1,……的正整数。
进一步地,卷积计算核单元将读取的第a个输入数据块依次与各组所述卷积组进行卷积运算,可以将读取的第a个输入数据块的Tn个输入通道依次与各组所述卷积组的Tn个卷积通道进行卷积运算;其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算。
进一步地,如图5所示,该可重构神经网络加速方法还包括:
S105:判断当前卷积核的步长是否大于1。
S106:如果是,将输入数据块交错映射到PE阵列与同一个卷积核进行卷积运算。
S107:如果否,当输出数据块的尺寸小于输入数据块的尺寸时,将每个输入数据块均分割为尺寸相同的W个输入数据小块,将各输入数据块对应位置的输入数据小块重新拼接,生成具有尺寸相同的W个拼接后的输入数据块;将W个拼接后的输入数据块映射到PE阵列与同一个卷积核进行卷积运算。
具体实施时,由于在传统的卷积神经网络中做卷积运算,在硬件平台上执行时,卷积核实际上是以步长为1的方式同输入数据中的各个数据相乘。这样的运算模式会因为步长的变化或者输出数据的尺寸变化带来无效PE运算,具有如下两个缺陷:
第一个缺陷,如图6所示,当输入数据块尺寸Th=Tl=8,输出数据块尺寸Tr=Tc=4,卷积核尺寸K=2,卷积核步长S=2>1时,在算法层面要求卷积核以步长为2的方式遍历整个输入数据块进行卷积计算,卷积核的左上角第一个权重值以步长为1的方式同输入数据块中的各个数据相乘,就会产生无效计算的PE,真正有效计算的PE为图6中的黑色方框部分,此时PE的利用率仅为16/64x%=25%。
为了解决上述第一个缺陷,本发明通过执行步骤S105判断卷积核的步长是否大于1,卷积核步长S=2>1,因此执行步骤S106,如果卷积核步长大于1,将不同输入通道的输入数据块交错映射到PE阵列与同一个卷积核进行卷积运算。具体执行过程如下:
如图7所示,本发明使用相同的卷积核权重,由于输出数据块尺寸Tr=Tc=4,所以在卷积核同输入数据块的各数据相乘时,采用将4个不同的输入数据块1,2,3,4交叠错位的设置方式即:第一行第一列放置输入数据块1的第一行第一列的数据1(1,1),第一行第二列放置输入数据块2的第一行第一列的数据2(1,1),第二行第一列放置输入数据块3中第一行第一列的数据3(1,1),第二行第二列放置输入数据块4的第一行第一列的数据4(1,1);第一行第三列放置输入数据块1中第一行第三列的数据1(1,3)(由于卷积核步长为2,所有数据块的第一行第二列的数据是不需要计算),第一行第四列放置输入数据块2中第一行第三列的数据3(1,1),第二行第三列放置输入数据块3中第一行第一列的数据3(1,1),第二行第四列放置输入数据块4的第一行第三列的数据4(1,1),以此类推,将图6中原来执行无效计算任务的PE给予来自不同输入数据块中需要有效计算的数据。这样就能够实现4个输出数据块同时并行执行卷积计算,此时Tr=Tc=Trr=Tcc=4。相应的伪代码循环示意图如图8所示,四层循环Loop Tm/Tn/Tr/Tc表示在卷积计算核单元进行卷积计算:通过Tn个Th x Tl大小的输入数据块计算出Tm个Tr x Tc大小的输出数据块。在最内层加入了Trr和Tcc两层用于循环输出Trr x Tcc大小的输出数据小块,这是对Tr x Tc尺寸的输出数据块的再次切割,用于实现并行的卷积映射方法。
第二个缺陷,如图9所示,当输入数据块尺寸Th=Tl=8,输出数据块尺寸Tr=Tc=6,卷积核尺寸K=2,卷积核步长S=1,虽然卷积核的移动步长为1,但输出数据块的尺寸6x6(一个输出数据块的尺寸Tr=Tc=6)使得卷积核并不需要遍历整个输入数据块8x8,此时在硬件执行机制上仍然按照步长为1进行移动,实际上真正有效的计算时图8中的黑色方框部分,因此PE的利用率为36/64x%=56.25%。
为了解决上述第二个缺陷,本发明执行步骤S107,卷积核步长S=1,且输出数据块的尺寸6x6小于输入数据块的尺寸8x8时,将各输入数据块均分割为尺寸相同的W个输入数据小块,将对应位置的各输入数据小块重新拼接,生成具有尺寸相同的拼接后的W个输入数据块;将拼接后的W个输入数据块映射到PE阵列与同一个卷积核进行卷积运算,具体执行过程如下:
当16个输入数据块w1,w2,w3,……,w16,需要与16个不同的卷积核做卷积运算时,存在图9所示的缺陷。本发明将真正有效的计算部分再做分割处理,如图10所示,每个输入数据块均以2x2方式分割,这样每个输入数据块的6x6部分会被分割成9个2x2的输入数据小块。如图11所示,原本的16个输入数据块经过上述分割处理,获得16x9个2x2尺寸的输入数据小块。如图12所示,将输入数据小块重新拼接,各输入数据块均取一个相同位置的输入数据小块,共组成9个新的输入数据块,每个新的输入数据块的尺寸为8x8。9个重新拼接的8x8的输入数据块均与同一卷积核做卷积运算,卷积核以步长为1进行移动遍历原本16个输入数据块中6x6的部分,且充分利用了每个输入数据块中的数据,对应获得16个输出数据块尺寸为6x6(即Tr=Tc=6),输出数据块由9个2x2(即Trr=Tcc=2)的输出数据小块组成,此时PE的利用率提高到了100%(因为输入数据为由9个输入数据块每个输入数据块由16个2x2的输入数据小块组成全部进行有效的计算,输出16个尺寸为6x6的输出数据块)。
传统方式下的PE利用率计算公式:
其中,R和C对应图1中输出数据的二维尺寸,A指计算阵列的尺寸,Tr和Tc是输出数据块的尺寸。
采用本发明的并行卷积映射方式下,PE利用率的计算公式:
其中,R和C对应图1中输出数据的二维尺寸,A指计算阵列的尺寸,Tr和Tc是输出数据块的尺寸,Trr和Tcc是并行卷积映射方法中输出数据小块的尺寸。本发明通过采用并行卷积映射方式,使PE阵列的硬件资源利用率会达到最大。
图13为本实施例的的卷积运算的伪代码循环表达式。如图13所示,在实施例一提供的可重构神经网络加速方法中,从内至外地循环如下:最内四层循环Loop Tm/Tn/Tr/Tc表示卷积计算核单元执行的卷积运算:虚线框外部描述的是数据复用的顺序。循环M中,每一个输入数据块都会与全部M个卷积核做运算,产生M个输出通道的输出数据的部分和。循环N中,N个输入数据会依次遍历,重复内部循环的计算,与M个输出通道的输出数据的部分和不断累加。因此不断读取更新,直至完成完整的卷积计算。循环R和C将会遍历各输出通道上的其他部分,重复之前的全部操作,最终获得M个输出通道的全部输出数据。
在数据复用模式中,对于存储单元的访问是一个非常重要的指标。首先将卷积层进行分割,如图3所示。N个输入通道的输入数据被分割成n个输入数据块,每个所述输入数据块具有Tn个输入通道,每个输入数据块的尺寸为Th×Tl,n=N/Tn,N,n,Tn均为正整数。M个输出通道的输出数据由m个输出数据块组成,每个输出数据块具有Tm个输出通道,输出数据块的尺寸为Tr×Tc的模式,其中,m=M/Tm,M,m,Tm均为正整数,Th=(Tr-1)S+K,Tl=(Tc-1)S+K,K×K代表卷积核的尺寸,S代表卷积步长。而对于存储器的访问次数MA可以表示成如下表达式:
MA=TI·αi+TO·αo+TW·αw+TPO
其中的TI,TO,TW分别表示输入数据、输出数据、权重数据的各自的数量,αi、αo、αw代表输入数据、输出数据、权重数据各自重复使用时间,而TPO代表池化输出的输出数据总数量。
在上述输入数据复用的方法中,相应的对Buffer访问的系数为:
因为输入寄存单元依次读写n=N/Tn个输入数据块,为了得到最终的结果,在做卷积运算时,需要遍历完输入数据的总N个Channel,所以卷积计算核单元就需要不停地做累加,其中读、写操作需n-1次,考虑到读与写各一次,因此应该乘以2倍,即2(n-1)次。而对于权重的导入次数与n对应,考虑到步长以及卷积核尺寸和卷积核移动过程中的重合等因素,最终的参数为
而对于DRAM的访问系数,Bo和Bw分别表示输出缓存单元和权重缓存单元的存储大小,如果当输出缓存单元的大小比M·Tr·Tc数据量大时,就不需要额外占用DRAM的存储能力,此时不需要访问DRAM,因此系数为1,反之则需要访问DRAM;同样的,对于权重存储也如此。
实施例一提供的可重构神经网络加速方法,通过逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速方法,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。
实施例二:基于与上述可重构神经网络加速方法相同的申请构思,本实施例还提供了一种可重构神经网络加速架构,如下面所述。由于该可重构神经网络加速架构解决问题的原理与实施例一的可重构神经网络加速方法相似,因此该可重构神经网络加速架构的实施可以参见实施例一中可重构神经网络加速方法的实施,重复之处不再赘述。
如图14所示,本实施例提供的可重构神经网络加速架构,包括:输入缓存单元1、权重缓存单元2、卷积计算核单元3及输出缓存单元4。
输入缓存单元1,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数。
权重缓存单元2,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数。
卷积计算核单元3,用于将读取的第a个输入数据块依次与各组所述卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块;直至与第m组所述卷积组进行卷积运算完毕,生成具有M个输出通道的输出数据块;将输出缓存单元反馈的M个输出通道的存储输出数据块与生成的所述M个输出通道的输出数据块进行累加,并发送累加后的输出数据块;其中,所述存储输出数据块由在读取第a个输入数据块之前读取的第1至第(a-1)个输入数据块依次与各组所述卷积组进行卷积后累加生成。
输出缓存单元4,用于将接收的所述累加后的输出数据块存储为M个输出通道的存储输出数据块,并向所述卷积计算核单元反馈所述存储输出数据块;当a=n时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,a≤n,a为正整数。
进一步地,输入缓存单元1具体用于,沿Z轴方向依次发送各所述输入数据块。
进一步地,如图14所示,卷积计算核单元3包括:输入寄存单元31、计算引擎单元32及输出寄存单元33。
输入寄存单元31,用于从所述输入缓存单元读取第a个输入数据块,并将所述第a个输入数据块发送到所述计算引擎单元。
计算引擎单元32,用于将读取的第a个输入数据块的Tn个输入通道依次与各卷积组的Tm个卷积核的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第m组所述卷积组进行卷积运算完毕,发送生成具有M个输出通道的输出数据块。
输出寄存单元33,用于将输出缓存单元反馈的M个输出通道的存储输出数据块与生成的所述M个输出通道的输出数据块进行累加,并发送累加后的输出数据块;其中,所述存储输出数据块由在读取第a个输入数据块之前读取的第1至第(a-1)输入数据块依次与各组所述卷积组进行卷积后累加生成。
上述实施例提供的可重构神经网络加速方法及架构,通过输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元架构,采用输入数据复用的方法,逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速方法,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。
实施例三:为了解决现有技术中存在的缺陷,本实施例还提供了一种可重构神经网络加速方法,该方法采用输出数据复用模式,如图15所示,可重构神经网络加速方法方法包括:
S201:输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数。
S202:权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数。
S203:卷积计算核单元将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的全部输出数据;将所述卷积计算核单元存储的部分通道和输出数据与生成的Tm个输出通道的全部输出数据进行累加,生成并存储累加后的部分通道和输出数据;其中,所述存储的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;当b=m时,所述卷积计算核单元发送累加后的M个通道的输出数据;其中,b≤m,b为正整数;将接收的M个输出通道的输出数据进行池化处理,并发送池化后的输出数据。
S204:输出缓存单元接收并存储池化后的输出数据,生成池化后的M个输出通道的输出数据。
本实施例提供的可重构神经网络加速方法,通过将输数据分割为各输入数据块,并将输入数据块依次发送到卷积计算核单元,卷积计算核单元将n个输入数据块依次与同一组卷积组进行卷积均算,生成Tm个输出通道的全部输出数据,重复上述操作将n个输入数据块分别与m组卷积组进行卷积运算,并不断将生成Tm个输出通道的全部输出数据进行累加,最后获得M个输出通道的全部输出数据。本实施例的可重构神经网络加速方法,通过数据复用逐层加速的策略应对层数多样的神经网络,具有优化神经网络,降低能耗的效果。
进一步地,输入缓存单元依次发送各输入数据块时,可以沿XY平面依次发送各输入数据块。
具体实施时,如图16所示,输入数据为三维结构,输入数据具有N个输入通道(Z轴方向),每个通道输入数据的尺寸H×L(XY平面),将每个输入通道的输入数据分割成尺寸为Th×Tl的输入数据块,将n个输入数据块沿XY平面方向依次读取,并发送到卷积计算核单元进行卷机运算。如图16中所示,先发送第1至第i个输入数据块,然后再发送第i+1至第ki个输入数据块,然后发送第ki+1个输入数据块,依次类推,最后发送第n个输入数据块,其中n=1,2,……,i,i+1,……,ki,ki+1,……的正整数。
进一步地,卷积计算核单元将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,包括:卷积计算核单元将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tn个卷积通道进行卷积运算;其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算。
在一个实施例中,如图17所示,该方法还包括:
S205:判断当前卷积核的步长是否大于1。
S206:如果是,将输入数据块交错映射到PE阵列与同一个卷积核进行卷积运算。
S207:如果否,当输出数据块的尺寸小于输入数据块的尺寸时,将每个输入数据块均分割为尺寸相同的W个输入数据小块,将各输入数据块对应位置的输入数据小块重新拼接,生成具有尺寸相同的W个拼接后的输入数据块;将W个拼接后的输入数据块映射到PE阵列与同一个卷积核进行卷积运算。
具体实施过程,参见实施例一中的步骤S105-S107的执行过程。
图18为本实施例的卷积运算的伪代码循环表达式。如图18所示,在实施例三提供的可重构神经网络加速方法中,循环M在循环N外层,意味着每组卷积组均与输入数据的N个输入通道的输入数据做卷积运算,获取每个输出通道的全部输出数据。不需要重复读取输出缓存单元存储的部分输出数据块。如图18所示,从内至外地循环如下:最内四层循环LoopTm/Tn/Tr/Tc表示在卷积计算核单元进行卷积计算:通过Tn个Th x Tl大小的输入数据块计算出Tm个TrxTc大小的输出数据块,虚线框外部描述的是数据复用顺序。循环N中,N个输入通道会依次遍历,重复内部循环的计算,累加生成Tm个输出通道的全部输出数据,最终存入输出缓存单元。循环M中,之前用到的全部输入数据会重复地读入,完成全部M个输出通道的计算。循环R和C将会遍历输出通道上的其他部分,重复之前的全部操作,最终获得M个输出通道的全部输出数据。
在上述输出数据复用方法中,相应对Buffer访问的系数为:
相应对DRAM的访问系数为:
其中Bi指输出缓存单元存储大小,如果输入缓存单元可以存储下n个输入数据块,那么只需要访问一次,N为输入通道数,Th×Tl为输入数据的尺寸,M为卷积核个数,每个卷积组具有Tm个卷积核。
实施例三提供的可重构神经网络加速方法,通过逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速方法,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。
实施例四:基于与上述可重构神经网络加速方法相同的申请构思,本发明还提供了一种可重构神经网络加速架构,如下面所述。由于该可重构神经网络加速架构解决问题的原理与实施例三中的可重构神经网络加速方法相似,因此该可重构神经网络加速架构的实施可以参见实施例三中的可重构神经网络加速方法的实施,重复之处不再赘述。
如图19所示,本实施例还提供的可重构神经网络加速架构,包括:输入缓存单元1、权重缓存单元2、卷积计算核单元3及输出缓存单元4;
输入缓存单元1,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
权重缓存单元2,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
卷积计算核单元3,用于将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的全部输出数据;将所述卷积计算核单元存储的部分通道和输出数据与生成的Tm个输出通道的全部输出数据进行累加,生成并存储累加后的部分通道和输出数据;其中,所述存储的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;当b=m时,所述卷积计算核单元发送累加后的M个通道的输出数据;其中,b≤m,b为正整数;将接收的M个输出通道的输出数据进行池化处理,并发送池化后的输出数据;
输出缓存单元4,用于接收并存储池化后的输出数据,生成池化后的M个输出通道的输出数据。
进一步地,输入缓存单元1具体用于,沿XY平面依次发送各所述输入数据块。
进一步地,如图19所示,卷积计算核单元3包括:输入寄存单元31、计算引擎单元32、输出寄存单元33及池化单元34。
输入寄存单元31,用于从所述输入缓存单元逐一读取各输入数据块,并将所述输入数据块发送到所述计算引擎单元;
计算引擎单元32,用于将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tm个卷积核的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的全部输出数据;将所述输出寄存单元反馈的部分通道和输出数据与生成的Tm个输出通道的全部输出数据进行累加,生成并发送累加后的部分通道和输出数据;其中,所述输出寄存单元反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;
输出寄存单元33,用于将接收的累加后的部分通道和输出数据存储为部分通道和输出数据,并向所述计算引擎单元反馈存储的部分通道和输出数据;当b=m时,所述输出寄存单元发送累加后的M个通道的输出数据;其中,b≤m,b为正整数;
池化单元34,用于将接收的M个输出通道的输出数据进行池化处理,并发送池化后的输出数据。
上述实施例提供的可重构神经网络加速方法及架构,通过输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元架构,采用输出数据复用方法,逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速方法,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。
实施例五:为了解决现有技术中存在的缺陷,本实施例还提供了一种可重构神经网络加速方法,该方法瞎用权重数据复用模式,如图20所示,可重构神经网络加速方法包括:
S301:输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
S302:权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
S303:卷积计算核单元将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的输出数据;将输出缓存单元反馈的部分通道和输出数据与生成的所述Tm个输出通道的输出数据进行累加,并发送累加后的部分通道和输出数据;其中,所述反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;
S304:输出缓存单元将接收的累加后的部分通道和输出数据存储为部分通道和输出数据,并向所述卷积计算核单元反馈存储的部分通道和输出数据;当b=m时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,b≤m,b为正整数。
本实施例提供的可重构神经网络加速方法,通过将输入数据分割为各输入数据块,各输入数据块依次与同一组卷积组进行卷积运算,生成Tm个输出通道的全部输出数据,重复上述操作将n个输入数据块分别与m组卷积组进行卷积运算,并不断将生成Tm个输出通道的全部输出数据进行累加,最后获得M个输出通道的全部输出数据。本实施例的可重构神经网络加速方法,通过数据复用逐层加速的策略应对层数多样的神经网络,具有优化神经网络,降低能耗的效果。
进一步地,输入缓存单元依次发送各输入数据块时,可以沿Z轴方向依次发送各所述输入数据块。
具体实施时,如图4所示,输入数据为三维结构,输入数据具有N个输入通道(Z轴方向),每个通道输入数据的尺寸H×L(XY平面),将每个输入通道的输入数据分割成尺寸为Th×Tl的输入数据块,将n个输入数据块沿Z轴方向依次读取,并发送到卷积计算核单元进行卷机运算。如图4中所示先发送第1至第i个输入数据块,然后再发送第i+1至第2i个输入数据块,以此类推,最后发送第n个输入数据块,其中n=1,2,……,i,i+1,……的正整数。
进一步地,卷积计算核单元将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,可以将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tn个卷积通道进行卷积运算,其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算。
进一步地,如图21所示,该可重构神经网络加速方法还包括:
S305:判断当前卷积核的步长是否大于1。
S306:如果是,将输入数据块交错映射到PE阵列与同一个卷积核进行卷积运算。
S307:如果否,当输出数据块的尺寸小于输入数据块的尺寸时,将每个输入数据块均分割为尺寸相同的W个输入数据小块,将各输入数据块对应位置的输入数据小块重新拼接,生成具有尺寸相同的W个拼接后的输入数据块;将W个拼接后的输入数据块映射到PE阵列与同一个卷积核进行卷积运算。
具体实施过程,参见实施例一中的步骤S105-S107的执行过程。
图22为本实施例的卷积运算的伪代码循环表达式。如图22所示,在实施例五提供的可重构神经网络加速方法中,卷积计算核单元将Tn个输入通道的输入数据块依次发送到输入寄存器单元。每个输入数据块与Tm个卷积核相乘,产生Tm个输出通道的输出数据部分和。由于循环R和循环C在内侧,Tm个具有Tn个卷积通道的卷积核会被充分利用,与n个输入数据块的TnChannel做遍历,从而得到了Tm个输出数据的部分和(输出数据尺寸为R×C)。将每个输入数据块生成的Tm个输出数据的部分和循环取回与下一个输入数据块生成的Tm个输出数据的部分和累加,直到获得M个输出通道的全部输出数据。从内至外地循环如下:最内四层循环Loop Tm/Tn/Tr/Tc表示在卷积计算核单元进行卷积计算:通过Tn个Th x Tl大小的输入数据块计算出Tm个TrxTc大小的输出数据块,虚线框外部描述的是数据复用顺序。最内四层循环Loop Tm/Tn/Tr/Tc表示在图6的卷积核心(Convolution Core)上的计算:通过Tn个Th x Tl大小的输入图计算出Tm个Tr x Tc大小的输出图。虚线框外部描述的是数据复用顺序。循环R和循环C将会遍历输出通道的其他部分,重复内部循环的全部操作,因此权重得到了充分的复用。循环N中,N个输入通道会依次遍历,重复内部循环的计算,完成Tm个输出通道的输出数据的全部累加计算,最终存入输出缓存单元。循环M中,之前用到的全部输入数据会重复地读入,完成全部M个卷积核的计算,最终获得M个输出通道的全部输出数据。
在权重数据复用方法中,相应对Buffer访问的系数为:
相应对DRAM的访问系数为:
实施例五提供的可重构神经网络加速方法,通过逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速方法,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。
实施例六:基于与上述可重构神经网络加速方法相同的申请构思,本发明还提供了一种可重构神经网络加速架构,如下面所述。由于该可重构神经网络加速架构解决问题的原理与实施例五的可重构神经网络加速方法相似,因此该可重构神经网络加速架构的实施可以参见实施例五的可重构神经网络加速方法的实施,重复之处不再赘述。
如图23所示,本实施例提供的可重构神经网络加速架构,包括:输入缓存单元1、权重缓存单元2、卷积计算核单元3及输出缓存单元4;
输入缓存单元1,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数。
权重缓存单元2,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数。
卷积计算核单元3,用于将读取的各所述输入数据块依次与读取的第b组卷积组进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的输出数据;将输出缓存单元反馈的部分通道和输出数据与生成的所述Tm个输出通道的输出数据进行累加,并发送累加后的部分通道和输出数据;其中,所述反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成。
输出缓存单元4,用于将接收的累加后的部分通道和输出数据存储为部分通道和输出数据,并向所述卷积计算核单元反馈存储的部分通道和输出数据;当b=m时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,b≤m,b为正整数。
进一步地,输入缓存单元具体用于,沿Z轴方向依次发送各所述输入数据块。
进一步地,如图23所示,卷积计算核单元3包括:输入寄存单元31、计算引擎单元32及输出寄存单元33。
输入寄存单元31,用于从所述输入缓存单元逐一读取各输入数据块,并将所述输入数据块发送到所述计算引擎单元。
计算引擎单元32,用于将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tm个卷积核的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,发送生成的Tm个输出通道的输出数据。
输出寄存单元33,用于将输出缓存单元反馈的部分通道和输出数据与生成的所述Tm个输出通道的输出数据进行累加,并发送累加后的部分通道和输出数据;其中,所述反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成。
上述实施例提供的可重构神经网络加速方法及架构,通过输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元架构,采用权重数据复用的方法,逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速方法,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。
本发明提供的可重构神经网络加速方法及架构,通过输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元架构,分别采用输入数据复用方法、输出数据复用方法及权重数据复用方法,逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速方法,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (18)
1.一种可重构神经网络加速方法,其特征在于,该方法包括:
输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
卷积计算核单元将读取的第a个输入数据块的Tn个输入通道依次与各组所述卷积组的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块;直至与第m组所述卷积组进行卷积运算完毕,生成具有M个输出通道的输出数据块;其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算;将输出缓存单元反馈的M个输出通道的存储输出数据块与生成的所述M个输出通道的输出数据块进行累加,并发送累加后的输出数据块;其中,所述存储输出数据块由在读取第a个输入数据块之前读取的第1至第(a-1)个输入数据块依次与各组所述卷积组进行卷积后累加生成;
所述输出缓存单元将接收的所述累加后的输出数据块存储为M个输出通道的存储输出数据块,并向所述卷积计算核单元反馈所述存储输出数据块;当a=n时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,a≤n,a为正整数。
2.根据权利要求1所述的可重构神经网络加速方法,其特征在于,所述依次发送各输入数据块,包括:沿Z轴方向依次发送各所述输入数据块。
3.根据权利要求2所述的可重构神经网络加速方法,其特征在于,该方法还包括:
判断当前卷积核的步长是否大于1;
如果是,将输入数据块交错映射到PE阵列与同一个卷积核进行卷积运算;
如果否,当输出数据块的尺寸小于输入数据块的尺寸时,将每个输入数据块均分割为尺寸相同的W个输入数据小块,将各输入数据块对应位置的输入数据小块重新拼接,生成具有尺寸相同的W个拼接后的输入数据块;将W个拼接后的输入数据块映射到PE阵列与同一个卷积核进行卷积运算。
4.一种可重构神经网络加速架构,其特征在于,包括:输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元;
所述输入缓存单元,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
所述权重缓存单元,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
所述卷积计算核单元,用于将读取的第a个输入数据块的Tn个输入通道依次与各组所述卷积组的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块;其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算;直至与第m组所述卷积组进行卷积运算完毕,生成具有M个输出通道的输出数据块;将输出缓存单元反馈的M个输出通道的存储输出数据块与生成的所述M个输出通道的输出数据块进行累加,并发送累加后的输出数据块;其中,所述存储输出数据块由在读取第a个输入数据块之前读取的第1至第(a-1)个输入数据块依次与各组所述卷积组进行卷积后累加生成;
所述输出缓存单元,用于将接收的所述累加后的输出数据块存储为M个输出通道的存储输出数据块,并向所述卷积计算核单元反馈所述存储输出数据块;当a=n时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,a≤n,a为正整数。
5.根据权利要求4所述的可重构神经网络加速架构,其特征在于,所述输入缓存单元具体用于:沿Z轴方向依次发送各所述输入数据块。
6.根据权利要求4所述的可重构神经网络加速架构,其特征在于,所述卷积计算核单元包括:输入寄存单元、计算引擎单元及输出寄存单元;
所述输入寄存单元,用于从所述输入缓存单元读取第a个输入数据块,并将所述第a个输入数据块发送到所述计算引擎单元;
所述计算引擎单元,用于将读取的第a个输入数据块的Tn个输入通道依次与各卷积组的Tm个卷积核的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第m组所述卷积组进行卷积运算完毕,发送生成具有M个输出通道的输出数据块;
所述输出寄存单元,用于将输出缓存单元反馈的M个输出通道的存储输出数据块与生成的所述M个输出通道的输出数据块进行累加,并发送累加后的输出数据块;其中,所述存储输出数据块由在读取第a个输入数据块之前读取的第1至第(a-1)输入数据块依次与各组所述卷积组进行卷积后累加生成。
7.一种可重构神经网络加速方法,其特征在于,该方法包括:
输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
卷积计算核单元将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的全部输出数据;其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算;将所述卷积计算核单元存储的部分通道和输出数据与生成的Tm个输出通道的全部输出数据进行累加,生成并存储累加后的部分通道和输出数据;其中,所述存储的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;当b=m时,所述卷积计算核单元发送累加后的M个通道的输出数据;其中,b≤m,b为正整数;将接收的M个输出通道的输出数据进行池化处理,并发送池化后的输出数据;
输出缓存单元接收并存储池化后的输出数据,生成池化后的M个输出通道的输出数据。
8.根据权利要求7所述的可重构神经网络加速方法,其特征在于,所述依次发送各输入数据块,包括:沿XY平面依次发送各所述输入数据块。
9.根据权利要求7所述的可重构神经网络加速方法,其特征在于,该方法还包括:
判断当前卷积核的步长是否大于1;
如果是,将输入数据块交错映射到PE阵列与同一个卷积核进行卷积运算;
如果否,当输出数据块的尺寸小于输入数据块的尺寸时,将每个输入数据块均分割为尺寸相同的W个输入数据小块,将各输入数据块对应位置的输入数据小块重新拼接,生成具有尺寸相同的W个拼接后的输入数据块;将W个拼接后的输入数据块映射到PE阵列与同一个卷积核进行卷积运算。
10.一种可重构神经网络加速架构,其特征在于,包括:输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元;
所述输入缓存单元,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
所述权重缓存单元,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
所述卷积计算核单元,用于将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的全部输出数据;其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算;将所述卷积计算核单元存储的部分通道和输出数据与生成的Tm个输出通道的全部输出数据进行累加,生成并存储累加后的部分通道和输出数据;其中,所述存储的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;当b=m时,所述卷积计算核单元发送累加后的M个通道的输出数据;其中,b≤m,b为正整数;将接收的M个输出通道的输出数据进行池化处理,并发送池化后的输出数据;
所述输出缓存单元,用于接收并存储池化后的输出数据,生成池化后的M个输出通道的输出数据。
11.根据权利要求10所述的可重构神经网络加速架构,其特征在于,所述输入缓存单元具体用于:沿XY平面依次发送各所述输入数据块。
12.根据权利要求10所述的可重构神经网络加速架构,其特征在于,所述卷积计算核单元包括:输入寄存单元、计算引擎单元、输出寄存单元及池化单元;
所述输入寄存单元,用于从所述输入缓存单元逐一读取各输入数据块,并将所述输入数据块发送到所述计算引擎单元;
所述计算引擎单元,用于将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tm个卷积核的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的全部输出数据;将所述输出寄存单元反馈的部分通道和输出数据与生成的Tm个输出通道的全部输出数据进行累加,生成并发送累加后的部分通道和输出数据;其中,所述输出寄存单元反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;
所述输出寄存单元,用于将接收的累加后的部分通道和输出数据存储为部分通道和输出数据,并向所述计算引擎单元反馈存储的部分通道和输出数据;当b=m时,所述输出寄存单元发送累加后的M个通道的输出数据;其中,b≤m,b为正整数;
所述池化单元,用于将接收的M个输出通道的输出数据进行池化处理,并发送池化后的输出数据。
13.一种可重构神经网络加速方法,其特征在于,该方法包括:
输入缓存单元将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
权重缓存单元将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
卷积计算核单元将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的输出数据;其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算;将输出缓存单元反馈的部分通道和输出数据与生成的所述Tm个输出通道的输出数据进行累加,并发送累加后的部分通道和输出数据;其中,所述反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;
所述输出缓存单元将接收的累加后的部分通道和输出数据存储为部分通道和输出数据,并向所述卷积计算核单元反馈存储的部分通道和输出数据;当b=m时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,b≤m,b为正整数。
14.根据权利要求13所述的可重构神经网络加速方法,其特征在于,所述依次发送各输入数据块,包括:沿Z轴方向依次发送各所述输入数据块。
15.根据权利要求14所述的可重构神经网络加速方法,其特征在于,该方法还包括:
判断当前卷积核的步长是否大于1;
如果是,将输入数据块交错映射到PE阵列与同一个卷积核进行卷积运算;
如果否,当输出数据块的尺寸小于输入数据块的尺寸时,将每个输入数据块均分割为尺寸相同的W个输入数据小块,将各输入数据块对应位置的输入数据小块重新拼接,生成具有尺寸相同的W个拼接后的输入数据块;将W个拼接后的输入数据块映射到PE阵列与同一个卷积核进行卷积运算。
16.一种可重构神经网络加速架构,其特征在于,包括:输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元;
所述输入缓存单元,用于将N个输入通道的输入数据分割成n个输入数据块;每个所述输入数据块具有Tn个输入通道;依次发送各输入数据块;其中,n=N/Tn,N,n,Tn均为正整数;
所述权重缓存单元,用于将M个卷积核分割成m组卷积组;每组所述卷积组具有Tm个卷积核,每个所述卷积核具有N个卷积通道;依次发送各卷积组;其中,m=M/Tm,M,m,Tm,N均为正整数;
所述卷积计算核单元,用于将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,生成Tm个输出通道的输出数据;其中,Tn个输入通道与每个卷积核的Tn个卷积通道一一对应进行卷积运算;将输出缓存单元反馈的部分通道和输出数据与生成的所述Tm个输出通道的输出数据进行累加,并发送累加后的部分通道和输出数据;其中,所述反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成;
所述输出缓存单元,用于将接收的累加后的部分通道和输出数据存储为部分通道和输出数据,并向所述卷积计算核单元反馈存储的部分通道和输出数据;当b=m时,所述输出缓存单元存储M个输出通道的全部输出数据;其中,b≤m,b为正整数。
17.根据权利要求16所述的可重构神经网络加速架构,其特征在于,所述输入缓存单元具体用于:沿Z轴方向依次发送各所述输入数据块。
18.根据权利要求16所述的可重构神经网络加速架构,其特征在于,所述卷积计算核单元包括:输入寄存单元、计算引擎单元及输出寄存单元;
所述输入寄存单元,用于从所述输入缓存单元逐一读取各输入数据块,并将所述输入数据块发送到所述计算引擎单元;
所述计算引擎单元,用于将读取的各所述输入数据块的Tn个输入通道依次与读取的第b组卷积组的Tm个卷积核的Tn个卷积通道进行卷积运算,均生成具有Tm个输出通道的输出数据块,直至与第n个输入数据块进行卷积运算完毕,发送生成的Tm个输出通道的输出数据;
所述输出寄存单元,用于将输出缓存单元反馈的部分通道和输出数据与生成的所述Tm个输出通道的输出数据进行累加,并发送累加后的部分通道和输出数据;其中,所述反馈的部分通道和输出数据由在读取第b组卷积组之前读取的第1至第(b-1)组卷积组依次与各所述输入数据块进行卷积后累加生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810084089.2A CN108241890B (zh) | 2018-01-29 | 2018-01-29 | 一种可重构神经网络加速方法及架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810084089.2A CN108241890B (zh) | 2018-01-29 | 2018-01-29 | 一种可重构神经网络加速方法及架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108241890A CN108241890A (zh) | 2018-07-03 |
CN108241890B true CN108241890B (zh) | 2021-11-23 |
Family
ID=62698691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810084089.2A Active CN108241890B (zh) | 2018-01-29 | 2018-01-29 | 一种可重构神经网络加速方法及架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108241890B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716751B (zh) * | 2018-07-12 | 2022-10-18 | 赛灵思公司 | 高并行度计算平台、***及计算实现方法 |
CN109032781A (zh) * | 2018-07-13 | 2018-12-18 | 重庆邮电大学 | 一种卷积神经网络算法的fpga并行*** |
CN109844774B (zh) * | 2018-08-28 | 2023-01-24 | 深圳鲲云信息科技有限公司 | 一种并行反卷积计算方法、单引擎计算方法及相关产品 |
CN112732601B (zh) * | 2018-08-28 | 2024-06-18 | 中科寒武纪科技股份有限公司 | 数据预处理方法、装置、计算机设备和存储介质 |
CN109284824B (zh) * | 2018-09-04 | 2021-07-23 | 复旦大学 | 一种基于可重构技术的用于加速卷积和池化运算的装置 |
US11367498B2 (en) * | 2018-09-07 | 2022-06-21 | Black Sesame Technologies Inc. | Multi-level memory hierarchy |
CN109447257B (zh) * | 2018-09-18 | 2021-08-17 | 复旦大学 | 一种通道自组织的深度神经网络加速芯片的运算装置 |
CN109447241B (zh) * | 2018-09-29 | 2022-02-22 | 西安交通大学 | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 |
CN109359735B (zh) * | 2018-11-23 | 2020-12-04 | 浙江大学 | 深度神经网络硬件加速的数据输入装置与方法 |
CN109598338B (zh) * | 2018-12-07 | 2023-05-19 | 东南大学 | 一种基于fpga的计算优化的卷积神经网络加速器 |
CN109740732B (zh) * | 2018-12-27 | 2021-05-11 | 深圳云天励飞技术有限公司 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
CN109711367B (zh) * | 2018-12-29 | 2020-03-06 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111523652B (zh) * | 2019-02-01 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 处理器及其数据处理方法、摄像装置 |
CN110110849B (zh) * | 2019-04-29 | 2023-04-07 | 西安电子科技大学 | 基于图分割的行固定数据流映射方法 |
CN110390384B (zh) * | 2019-06-25 | 2021-07-06 | 东南大学 | 一种可配置的通用卷积神经网络加速器 |
CN110414672B (zh) * | 2019-07-23 | 2022-11-01 | 江苏鼎速网络科技有限公司 | 卷积运算方法、装置及*** |
CN112308217B (zh) * | 2019-07-31 | 2024-06-04 | 北京欣奕华科技有限公司 | 一种卷积神经网络加速方法及*** |
CN110516801B (zh) * | 2019-08-05 | 2022-04-22 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器 |
CN110490302B (zh) * | 2019-08-12 | 2022-06-07 | 中科寒武纪科技股份有限公司 | 一种神经网络编译优化方法、装置以及相关产品 |
CN110533177B (zh) * | 2019-08-22 | 2023-12-26 | 安谋科技(中国)有限公司 | 一种数据读写装置、方法、设备、介质及卷积加速器 |
CN111126593B (zh) * | 2019-11-07 | 2023-05-05 | 复旦大学 | 可重构的自然语言深度卷积神经网络加速器 |
CN111199273B (zh) * | 2019-12-31 | 2024-03-26 | 深圳云天励飞技术有限公司 | 卷积计算方法、装置、设备及存储介质 |
CN111258574B (zh) * | 2020-01-14 | 2021-01-15 | 中科驭数(北京)科技有限公司 | 加速器体系结构的编程方法和*** |
TWI733334B (zh) | 2020-02-15 | 2021-07-11 | 財團法人工業技術研究院 | 卷積神經網路運算裝置及其運算的方法 |
CN111427895B (zh) * | 2020-04-01 | 2022-10-25 | 西安交通大学 | 一种基于两段式缓存的神经网络推理加速方法 |
CN111610963B (zh) * | 2020-06-24 | 2021-08-17 | 上海西井信息科技有限公司 | 芯片结构及其乘加计算引擎 |
CN111859797A (zh) * | 2020-07-14 | 2020-10-30 | Oppo广东移动通信有限公司 | 一种数据处理方法及装置、存储介质 |
CN112580774B (zh) * | 2020-09-01 | 2022-10-21 | 浙江大学 | 一种面向可重构神经网络处理器的神经网络布局方法 |
CN114089911B (zh) * | 2021-09-07 | 2024-01-05 | 上海新氦类脑智能科技有限公司 | 基于数据复用的块切分拼接处理方法、装置、设备及介质 |
CN116306840A (zh) * | 2021-12-03 | 2023-06-23 | 中兴通讯股份有限公司 | 神经网络运算方法、装置、芯片、电子设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的*** |
-
2018
- 2018-01-29 CN CN201810084089.2A patent/CN108241890B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的*** |
Non-Patent Citations (3)
Title |
---|
Optimizing loop operation and dataflow in FPGA acceleration of deep convolutional neural networks;Ma Y, Cao Y, Vrudhula S等;《Proceedings of the 2017 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays》;20171231;全文 * |
基于FPGA的卷积神经网络并行结构研究;陆志坚;《中国博士学位论文全文数据库信息科技辑》;20140415(第04期);全文 * |
深度学习算法可重构加速器关键技术研究;刘志强;《中国优秀硕士学位论文全文数据库信息科技辑》;20170315(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108241890A (zh) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
CN111178519B (zh) | 卷积神经网络加速引擎、卷积神经网络加速***及方法 | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
KR102443546B1 (ko) | 행렬 곱셈기 | |
Liang et al. | Evaluating fast algorithms for convolutional neural networks on FPGAs | |
JP7474586B2 (ja) | テンソル計算データフロー加速器半導体回路 | |
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
CN111667051B (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN106445471A (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
CN109948774A (zh) | 基于网络层捆绑运算的神经网络加速器及其实现方法 | |
CN111461311B (zh) | 基于众核处理器的卷积神经网络运算加速方法及装置 | |
CN107993186A (zh) | 一种基于Winograd算法的3D CNN加速方法及*** | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
KR20180123846A (ko) | 합성곱 신경망을 위한 논리적 3차원 구조의 재구성형 연산 가속기 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN113469350B (zh) | 一种适于npu的深度卷积神经网络加速方法和*** | |
CN110414672B (zh) | 卷积运算方法、装置及*** | |
Li et al. | Fsa: A fine-grained systolic accelerator for sparse cnns | |
CN116881618B (zh) | 通用矩阵乘计算优化方法、装置及处理器 | |
CN106484532A (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 |
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 |