CN111626412B - 复数神经网络的一维卷积加速装置及方法 - Google Patents
复数神经网络的一维卷积加速装置及方法 Download PDFInfo
- Publication number
- CN111626412B CN111626412B CN202010396802.4A CN202010396802A CN111626412B CN 111626412 B CN111626412 B CN 111626412B CN 202010396802 A CN202010396802 A CN 202010396802A CN 111626412 B CN111626412 B CN 111626412B
- Authority
- CN
- China
- Prior art keywords
- unit
- buffer
- result
- calculation
- 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.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 55
- 230000001133 acceleration Effects 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims description 24
- 239000000872 buffer Substances 0.000 claims abstract description 204
- 238000004364 calculation method Methods 0.000 claims abstract description 148
- 238000010586 diagram Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 5
- 238000009825 accumulation Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000013518 transcription Methods 0.000 description 1
- 230000035897 transcription Effects 0.000 description 1
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/4806—Computations with complex numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了复数神经网络的一维卷积加速装置,包括加速装置模块和外部存储模块,加速装置模块包括复数计算单元和缓冲计算单元,缓冲计算单元包括一维卷积计算单元、权重缓冲和特征图缓冲,复数计算单元用于分别计算实部和虚部并将结果输出至输出特征图存储区,一维卷积计算单元用于从权重缓冲和特征图缓冲读取数据并分别进行计算,计算结果输出至复数计算单元,本发明还提供了基于上述装置的复数神经网络的一维卷积加速方法。本发明可提高计算单元利用率,针对复数数值存储格式,并行实部虚部计算,解决复数卷积的通道交叉问题,加速复数神经网络的一维卷积计算。
Description
技术领域
本发明属于神经网络算法的硬件加速实现设计领域,具体为复数神经网络的一维卷积加速装置及方法。
背景技术
复数神经网络是指权重参数和特征图均使用复数进行表示的神经网络结构,包括复数卷积、复数激活函数、复数批归一化等网络层。复数神经网络主要应用于需要幅值和相位两个参数来描述数据的领域。例如,射频领域依据I/Q信号进行无线电指纹识别传输,音频领域的自动音乐转录、语音识别等。这类问题的输入数据是一维复数时间序列,处理过程涉及到复数参数的计算。对于这种一维复数时间序列,复数一维卷积可以更好地利用复数数据所提供的信息量,获得更佳的系统性能。
随着复数神经网络结构层数越来越深,导致计算量和参数量的增多。复数神经网络每个参数包括实部和虚部两个数据,相同参数量下,复数神经网络的存储需求和传输需求是实数神经网络的两倍。根据复数卷积运算的定义,复数卷积的乘累加计算量是实数卷积计算量的四倍。
实数神经网络的卷积计算具有计算密集和访存密集的特点,传统的通用计算平台通用处理器无法提供足够的算力。研究人员提出了相应的加速计算装置和方法,例如脉动阵列结构、二维阵列结构、行缓冲结构等。然而,这些工作都是针对实数神经网络的计算特点设计的,仅支持卷积核与输入特征图的对应通道一一卷积的计算形式,不支持交叉通道的卷积计算。若将这些研究直接应用于复数神经网络加速,由于复数数值的存储格式和复数卷积的交叉卷积特性,会导致计算性能降低。
发明内容
本发明要解决的问题是提供复数神经网络的一维卷积加速装置,以及基于该加速装置进行的复数神经网络计算加速方法,提高计算单元利用率,针对复数数值存储格式,并行实部虚部计算,解决复数卷积的通道交叉问题,加速复数神经网络的卷积计算。
为解决上述问题,本发明提出复数神经网络的一维卷积加速装置,包括加速装置模块和外部存储模块,加速装置模块100包括复数计算单元140和缓冲计算单元,缓冲计算单元包括一维卷积计算单元110、权重缓冲120和特征图缓冲130。外部存储模块200包括用于输入权重数据的权重存储区210,用于输入特征图数据的输入特征图存储区220和输出特征图存储区230。权重缓冲120和权重存储区210总线连接,特征图缓冲和输入特征图存储区220总线连接;一维卷积计算单元110用于从权重缓冲120和特征图缓冲130读取数据并分别进行计算,计算结果输出至复数计算单元,复数计算单元140用于分别计算实部和虚部并将结果输出至输出特征图存储区230。
进一步的,一维卷积计算单元110包括控制单元111、卷积核单元112、行缓冲单元113、并行乘法单元114和部分结果缓冲单元115。控制单元111用于控制卷积核单元112、行缓冲单元113和部分结果缓冲单元115。卷积核单元112用于从权重缓冲120读取数据。行缓冲单元113用于从特征图缓冲130读取数据。并行乘法单元114从卷积核单元112和行缓冲单元113读取数据并进行计算。部分结果缓冲单元115保存并行乘法单元114的计算结果,并将结果输出至复数计算单元140。
进一步的,复数计算单元140包括实部计算单元141、虚部计算单元142和结果选择单元143;实部计算单元141输入一维卷积计算单元110计算结果,并计算之后输出至结果选择单元143;
所述虚部计算单元142输入一维卷积计算单元110计算结果,并计算之后输出至结果选择单元143;
所述结果选择单元143还接收一维卷积计算单元110的计算值,并计算将结果输出至输出特征图存储区230。
进一步的,卷积核单元112和行缓冲单元113包括L个独立的寄存器,分别用于存储L个卷积核数据和L个特征图数据;所述并行乘法单元114包括L个独立并行的乘法器,其中L为行缓冲长度。
为解决上述问题,本发明还提出复数神经网络的一维卷积加速方法,包括以下步骤:
S100,基于复数神经网络的一维卷积加速装置,权重数据和输入特征图数据分别从权重存储区210、输入特征图存储区220传输到权重缓冲120、特征图缓冲130;
S200,一维卷积计算单元110分别从与其相连的权重缓冲120、特征图缓冲130中读取数据进行计算;
S300,一维卷积计算单元110将S200的计算结果传输到复数计算单元140;
S400,复数计算单元140计算后将结果输出特征图存储区230。
进一步的,S200具体包括,
S210,所述控制单元111控制卷积核单元112与行缓冲单元113的取数逻辑、部分结果缓冲单元115将结果传输至复数计算单元;
S220,卷积核单元112从权重缓冲120中读取权重数据;
S230,行缓冲单元113从特征图缓冲130中读取特征图数据;
S240,并行乘法单元114分别从卷积核单元112和行缓冲单元113中读取L个数据进行L次乘法计算,其中L为行缓冲长度;
S250,部分结果缓冲单元115保存并行乘法单元114的计算结果,并将最终计算结果传输至复数计算单元140。
进一步的,S210中的控制单元的控制算法具体包括:
S211,卷积核单元112、行缓冲单元113初始化,根据卷积核尺寸Lkernel确定并行度R,其中并行度R为
S212,确定循环次数CNT和循环变量cnt初始;
S213,并行乘法计算;
S214,判断R的值,若R大于等于1,更新部分结果缓冲单元115和行缓冲单元113,否则,判断cnt%T的值,其中
S215,若cnt%T=T-1,更新部分结果缓冲单元115,缓冲清零,卷积核单元112、行缓冲单元113更新,否则,结果缓冲和卷积核单元112、行缓冲单元113更新;
S216,循环变量cnt递增加1,若cnt<CNT,则循环执行步骤S213~S216,否则,结束执行过程。
进一步的,S211具体包括,若R大于1,并行乘法单元114一次计算完成R次一维卷积,分别从权重缓冲120、特征图缓冲130读取Lkernel个数据,复制填充卷积核单元112、行缓冲单元113的R×Lkernel个寄存器;
若R等于1,并行乘法单元114一次计算完成一次一维卷积,分别从权重缓冲120、特征图缓冲130读取Lkernel个数据,填充卷积核单元112、行缓冲单元113的Lkernel个寄存器;
若R等于0,并行乘法单元114需要多次计算才能完成一次一维卷积,分别从权重缓冲120、特征图缓冲130读取L个数据,填充卷积核单元112、行缓冲单元113的L个寄存器。
进一步的,S214中,更新部分结果缓冲单元115结果输出和行缓冲单元113的具体方法包括,
若R大于1,第i×Lkernel开始的Lkernel个计算结果累加后得到第i个值,输出至复数计算单元140,其中i从0依次递增至R-1,从特征图缓冲130地址cnt*stride处连续读取Lkernel个数据,复制填充行缓冲单元113的R×Lkernel个寄存器;若R等于1,取前R×Lkernel个计算结果累加后输出至复数计算单元140,特征图缓冲130地址cnt×stride处连续读取Lkernel个数据,填充行缓冲单元113的Lkernel个寄存器。其中stride为卷积核步长,卷积核单元112不变。
进一步的,S400具体包括:
S410,一维卷积计算单元110将结果输入实部计算单元141,实部计算单元141根据输入的一维卷积计算单元110的值计算得到实部结果,得到输出特征图的实部数值;
S420,一维卷积计算单元110将结果输入虚部计算单元142,虚部计算单元142根据输入的一维卷积计算单元110的值计算得到虚部结果,得到输出特征图的虚部数值;
S430,实部计算单元141与虚部计算单元142将实部、虚部输入结果选择单元143,结果选择单元143将其整合为复数值,传输至输出特征图存储区230;
S440,所述结果选择单元143同时接受来自一维卷积计算单元110的实数值,如果当前网络是实数神经网络,结果选择单元143将实数计算结果输至输出特征图存储区230。
本发明相比现有技术具有如下有益效果:
1、采用一维卷积计算单元并行的设计,针对复数卷积的计算特点,通过实部虚部并行实现复数神经网络的一维卷积加速,解决了复数卷积的通道交叉问题。本装置通过输入间并行实现对实数神经网络的加速支持。
2、本发明通过对行缓冲单元的设计,支持不同的卷积核尺寸和卷积步长,解决了行缓冲在卷积核尺寸和卷积步长变化时乘法计算单元利用率下降的问题。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明复数神经网络的一维卷积计算加速装置实施例的结构示意图;
图2为本发明复数神经网络的一维卷积计算加速装置实施例加速计算过程示意图;
图3为本发明复数神经网络的一维卷积计算加速装置实施例中一维卷积计算单元的结构示意图;
图4为本发明复数神经网络的一维卷积计算加速装置实施例中复数计算单元的结构示意图;
图5本发明复数神经网络的一维卷积计算加速方法流程图;
图6为本发明复数神经网络的一维卷积计算加速方法中步骤S210的控制算法示意图。
图7为本发明复数神经网络的一维卷积计算加速方法中并行乘法单元利用率。
具体实施方式
为了进一步理解本发明,下面结合实施例对本发明优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。
实施例1
本发明的第一种实施例提供了复数神经网络的一维卷积计算加速装置,结构示意图如图1所示。加速装置100与外部存储200相连;外部存储200中存放用于输入计算的权重存储区210、输入特征图存储区220和计算结果输出特征图存储区230。
加速装置100包括一维卷积计算单元110、权重缓冲120、特征图缓冲130、复数计算单元140。其中,一维卷积计算单元110、权重缓冲120、特征图缓冲130个数均为4。每个权重缓冲120均通过总线与权重存储区210相连,每个特征图缓冲130均通过总线与输入特征图存储区220相连。每个权重缓冲120和特征图缓冲130与对应的一维卷积计算单元110一一相连。4个一维卷积计算单元110均与复数计算单元140相连。复数计算单元140与输出特征图存储区230相连。
如图2所示为一维卷积计算单元110的原理结构示意图。包括控制单元111、卷积核单元112、行缓冲单元113、并行乘法单元114和部分结果缓冲单元115。
控制单元111分别控制卷积核单元112、行缓冲单元113、部分结果缓冲单元115相连。卷积核单元112分别与权重缓冲120、并行乘法单元114相连。行缓冲单元113分别与特征图缓冲130、并行乘法单元114相连。并行乘法单元还与部分结果缓冲单元115相连,且部分结果缓冲单元115与复数计算单元140相连。卷积核单元112包含了7个独立的寄存器,可以存储7个卷积核数据。行缓冲单元113包含了7个独立的寄存器,可以存储7个特征图数据。并行乘法单元114包含了7个独立并行的乘法器。
一维卷积计算单元110在控制单元的控制下执行一维卷积计算。卷积核单元112保存7个卷积核数据,行缓冲单元113保存7个特征图数据,并行乘法单元114从卷积核单元112和行缓冲单元113中读取数据进行7次独立并行的乘法计算。计算结果传输至部分结果缓冲单元,如果该次一维卷积计算已完成,则将结果输出至复数计算单元;如果未完成,将结果保存至部分结果缓冲单元。卷积核单元112和行缓冲单元113更新数据,进行新一次计算。
如图3所示为复数计算单元140结构示意图。包括实部计算单元141、虚部计算单元142和结果选择单元143。
其中,实部计算单元141与第1个和第4个一维卷积计算单元110相连,还与结果选择单元143相连。虚部计算单元142与第2个和第3个一维卷积计算单元110相连,还与结果选择单元相连143。结果选择单元还与4个一维卷积计算单元110相连,还与输出特征图存储区230相连。
实部计算单元141的输入为第1、4个一维卷积计算单元110的卷积计算结果Ax和By。实部计算单元单元将其整合为输出特征图的实部结果Ax-By输出至结果选择单元143。虚部计算单元142的输入为第2、3个一维卷积计算单元110的卷积计算结果Bx和Ay。虚部计算单元单元将其整合为输出特征图的虚部结果Bx+Ay输出至结果选择单元143。结果选择单元143将其整合为复数(Ax-By)+i(Bx+Ay),并传输至输出特征图存储区230。
若当前神经网络为实数神经网络,结果选择单元143的输入为4个一维卷积计算单元110的卷积结果。结果选择单元143将这4个输出特征图数据传输至输出特征图存储区230。
如图4所示为复数神经网络的计算过程。复数神经网络的输入特征图、卷积核通道数为2Ci,其中前Ci个通道为卷积核的实部x或输入特征图的实部A,后Ci个通道为卷积核的虚部y或输入特征图的虚部B。2Ci个通道的数据构成了复数卷积核x+iy和复数输入特征图A+iB。复数神经网络的卷积计算表达式为:
其中,为卷积运算符,Ax为/>缩写,表示A与x做卷积运算。/>表示将Ax与By按位相减,得到输出特征图的实部。/>表示将Bx和Ay按位相加,得到输出特征图的虚部。一次复数卷积计算包括了4次实数计算。
第1、2个权重缓冲120均保存卷积核0的实部x,第3、4个权重缓冲120均保存卷积核0的虚部y。第1、3个特征图缓冲130保存输入特征图0的实部A,第2、4个特征图缓冲130保存输入特征图0的虚部B。
第1个一维卷积计算单元110执行A与x的卷积计算;第2个一维卷积计算单元110执行B与x的卷积计算;第3个一维卷积计算单元110执行A与y的卷积计算;第4个一维卷积计算单元110执行B与y的卷积计算。
计算完成的4个结果在复数计算单元140中整合为输出特征图的实部Ax-By和虚部Bx+Ay。输出特征图的前1个通道保存实部数据,后一个通道保存虚部数据,传输至输出特征图存储区。此时4个一维卷积计算单元通过实部虚部并行实现对复数神经网络的加速计算。
实施例2
本发明的第二种实施例提供了一种复数神经网络的一维卷积计算加速方法,流程图如图5所示,包括以下步骤:
S100,权重数据和输入特征图数据分别从权重存储区210、输入特征图存储区220传输到权重缓冲120、特征图缓冲130。
权重存储区210中存储神经网络的所有参数。如果为实数神经网络,输入特征图存储区220存储4张不同的输入特征图,输入特征图通道为Ci;如果为复数神经网络,输入特征图存储区220存储1张输入特征图,输入特征图通道为2Ci,其中前Ci个通道为实部数据,后Ci个通道为虚部数据。
S200,一维卷积计算单元110分别从与其相连的权重缓冲120、特征图缓冲130中读取数据进行计算。
具体的,S200具体包括,
S210,控制单元111控制卷积核单元112与行缓冲单元113的取数逻辑、部分结果缓冲单元115将结果传输至复数计算单元;
S220,卷积核单元112从权重缓冲120中读取权重数据;
S230,行缓冲单元113从特征图缓冲130中读取特征图数据;
S240,并行乘法单元114分别从卷积核单元112和行缓冲单元113中读取L个数据进行L次乘法计算;
S250,部分结果缓冲单元115保存并行乘法单元114的计算结果,并将最终计算结果传输至复数计算单元140。
一维卷积计算单元110中的卷积核单元112从权重缓冲120中读取权重数据。行缓冲单元113从特征图缓冲130中读取特征图数据。并行乘法单元114分别从卷积核单元和行缓冲单元中读取7个数据进行7次乘法计算。控制单元111控制卷积核单元112与行缓冲单元113的取数逻辑、部分结果缓冲单元115将结果传输至复数计算单元。
如图6所示为S210控制单元的控制算法流程图,其步骤如下:
S211,卷积核单元112、行缓冲单元113初始化,根据卷积核尺寸Lkernel确定并行度R,其中并行度R为
R如果大于1,表示并行乘法单元114一次计算可完成R次一维卷积,分别从权重缓冲120、特征图缓冲130读取Lkernel个数据,复制填充卷积核单元112、行缓冲单元113的R×Lkernel个寄存器;
R如果等于1,表示并行乘法单元114一次计算可完成1次一维卷积,分别从权重缓冲120、特征图缓冲130读取Lkernel个数据,填充卷积核单元112、行缓冲单元113的Lkernel个寄存器;
R如果等于0,表示并行乘法单元114需要多次计算才能完成一次一维卷积,分别从权重缓冲120、特征图缓冲130读取L个数据,填充卷积核单元112、行缓冲单元113的L个寄存器。
S212,确定循环次数CNT和循环变量cnt初始化:
循环次数CNT表示并行乘法单元114需要计算CNT次才能完成一个单通道特征图的卷积计算,CNT与输出特征图尺寸Lfmap有关;
如果R大于等于1,
如果R等于0,
循环变量cnt初始化为0。
S213,并行乘法计算:
并行乘法单元114分别从卷积核单元和行缓冲单元中读取L个数据进行L次乘法计算,得到L个计算结果;
S214,判断R的值,若R大于等于1,更新部分结果缓冲单元115和行缓冲单元113,否则,判断cnt%T的值,其中
R若大于1,取第i×Lkernel开始的Lkernel个计算结果累加后得到第i个值,输出至复数计算单元140,其中i从0依次递增至R-1,总计输出R个值;从特征图缓冲130地址cnt×stride处连续读取Lkernel个数据,复制填充行缓冲单元113的R×Lkernel个寄存器;
R若等于1,取前R×Lkernel个计算结果累加后输出至复数计算单元140。从特征图缓冲130地址cnt×stride处连续读取Lkernel个数据,填充行缓冲单元113的Lkernel个寄存器;
其中stride表示卷积核步长;无论R值,保持卷积核单元112不变;
T为表示并行乘法单元114需要T次计算才能完成一次一维卷积;
S215,如果cnt%T=T-1,更新部分结果缓冲单元115、缓冲清零,卷积核单元112、行缓冲单元113,否则,更新部分结果缓冲单元115、卷积核单元112和行缓冲单元113。
其中,结果输出、缓冲清零,卷积核单元112、行缓冲单元113更新具体包括:
将并行乘法单元114的L个计算结果累加后再加上部分结果缓冲单元115存储的值,并将结果输出至复数计算单元140,部分结果缓冲单元115清零;
从特征图缓冲130地址处连续读取L个数据,填充行缓冲单元113的L个寄存器;
从卷积核缓冲120地址0处连续读取L个数据,填充卷积核单元112的L个寄存器。
其中,结果缓冲和卷积核单元112、行缓冲单元113更新具体包括:
将并行乘法单元114的L个计算结果累加后再加上部分结果缓冲单元115存储的值,将新值存储于部分结果缓冲单元115;
从特征图缓冲130地址处连续读取L个数据,填充行缓冲单元113的L个寄存器;
从卷积核缓冲120地址(cnt%T+1)×L地址处连续读取L个数据,填充卷积核单元112的L个寄存器。
S216,循环变量cnt递增加1;若cnt<CNT,则循环执行步骤S213~S216;否则,结束执行过程。
本实施例的一维卷积计算单元110支持变化的卷积核尺寸和卷积步长,当卷积核尺寸Lkernel小于或等于当前缓冲长度L时,每次可并行完成R次卷积运算,并行乘法单元114的利用率为R×Lkernel/L。相比于通用串行行缓冲提高了并行乘法单元的利用率。如果卷积核尺寸Lkernel大于当前缓冲长度L,并行乘法单元114经过多次计算可以完成一次卷积运算。
本实施例中,行缓冲长度L=7,图7列出了在不同卷积核尺寸下串行行缓冲和本实施例中的行缓冲单元113的并行乘法单元利用率。
S300,卷积计算单元110将S200中的计算结果传输到复数计算单元140。
如果是复数神经网络,计算结果是实部和虚部的部分结果;如果网络是实数神经网络,计算结果是4个输出特征图数据。
S400,复数计算单元140计算后将结果输出特征图存储区230。
本实施例中,实部计算单元141的输入为第1、4个一维卷积计算单元110的卷积计算结果Ax和By。实部计算单元单元将其整合为输出特征图的实部结果Ax-By输出至结果选择单元143。虚部计算单元142的输入为第2、3个一维卷积计算单元110的卷积计算结果Bx和Ay。虚部计算单元单元将其整合为输出特征图的虚部结果Bx+Ay输出至结果选择单元143。结果选择单元143将其整合为复数(Ax-By)+i(Bx+Ay),并传输至输出特征图存储区230。
本发明的两个实施例具有以下优点:
1、本发明支持复数神经网络的一维卷积计算,采用一维卷积计算单元并行的设计,通过实部虚部并行实现并行加速计算,复数计算单元将其结果整合为复数值。并且通过输入间并行还可以支持实数神经网络的计算加速。
2、行缓冲单元相比于通用串行行缓冲单元,支持不同的卷积核尺寸和卷积步长,提高了卷积核尺寸与缓冲长度不匹配时计算单元利用率。如果卷积核尺寸小于缓冲长度,每次可并行完成多次卷积运算,提高了并行乘法单元利用率。如果卷积核尺寸大于当前缓冲长度L,并行乘法单元经过多次计算可以完成一次卷积运算。
最后,还需要值得注意的是,以上列举的仅仅是本发明的具体实施例。显然本发明不仅限于以上复数神经网络实施例。本领域的普通技术人员能从本发明公开的内容直接导出或者联想到的所有变形,均认为是本发明的保护范围。
Claims (8)
1.复数神经网络的一维卷积加速装置,其特征在于,包括加速装置模块和外部存储模块,所述加速装置模块(100)包括复数计算单元(140)和缓冲计算单元,所述缓冲计算单元包括一维卷积计算单元(110)、权重缓冲(120)和特征图缓冲(130);
所述外部存储模块(200)包括用于输入权重数据的权重存储区(210),用于输入特征图数据的输入特征图存储区(220)和输出特征图存储区(230);
所述权重缓冲(120)和权重存储区(210)总线连接,特征图缓冲和输入特征图存储区(220)总线连接;
所述一维卷积计算单元(110)用于从权重缓冲(120)和特征图缓冲(130)读取数据并分别进行计算,计算结果输出至复数计算单元,所述一维卷积计算单元(110)包括控制单元(111)、卷积核单元(112)、行缓冲单元(113)、并行乘法单元(114)和部分结果缓冲单元(115);所述控制单元(111)用于控制卷积核单元(112)、行缓冲单元(113)和部分结果缓冲单元(115);所述卷积核单元(112)用于从权重缓冲(120)读取数据;所述行缓冲单元(113)用于从特征图缓冲(130)读取数据;所述并行乘法单元(114)从卷积核单元(112)和行缓冲单元(113)读取数据并进行计算;
所述部分结果缓冲单元(115)保存并行乘法单元(114)的计算结果,并将结果输出至复数计算单元(140);
所述复数计算单元(140)用于分别计算实部和虚部并将结果输出至输出特征图存储区(230),所述复数计算单元(140)包括实部计算单元(141)、虚部计算单元(142)和结果选择单元(143);
所述实部计算单元(141)输入一维卷积计算单元(110)计算结果,并计算之后输出至结果选择单元(143);
所述虚部计算单元(142)输入一维卷积计算单元(110)计算结果,并计算之后输出至结果选择单元(143);
所述结果选择单元(143)还接收一维卷积计算单元(110)的计算值,并计算将结果输出至输出特征图存储区(230)。
2.根据权利要求1所述的复数神经网络的一维卷积加速装置,其特征在于:所述卷积核单元(112)和行缓冲单元(113)包括L个独立的寄存器,分别用于存储L个卷积核数据和L个特征图数据;所述并行乘法单元(114)包括L个独立并行的乘法器,其中,L为行缓冲长度。
3.复数神经网络的一维卷积加速方法,其特征在于,包括以下步骤:
S100,基于权利要求1-2任一所述的复数神经网络的一维卷积加速装置,权重数据和输入特征图数据分别从权重存储区(210)、输入特征图存储区(220)传输到权重缓冲(120)、特征图缓冲(130);
S200,一维卷积计算单元(110)分别从与其相连的权重缓冲(120)、特征图缓冲(130)中读取数据进行计算;
S300,一维卷积计算单元(110)将S200的计算结果传输到复数计算单元(140);
S400,复数计算单元(140)计算后将结果输出特征图存储区(230)。
4.根据权利要求3所述的一维卷积加速方法,其特征在于:S200具体包括,
S210,控制单元(111)控制卷积核单元(112)与行缓冲单元(113)的取数逻辑、部分结果缓冲单元(115)将结果传输至复数计算单元;
S220,卷积核单元(112)从权重缓冲(120)中读取权重数据;
S230,行缓冲单元(113)从特征图缓冲(130)中读取特征图数据;
S240,并行乘法单元(114)分别从卷积核单元(112)和行缓冲单元(113)中读取L个数据进行L次乘法计算,其中L为行缓冲长度;
S250,部分结果缓冲单元(115)保存并行乘法单元(114)的计算结果,并将最终计算结果传输至复数计算单元(140)。
5.根据权利要求4所述的一维卷积加速方法,其特征在于:S210所述的控制单元的控制算法具体包括,
S211,卷积核单元(112)、行缓冲单元(113)初始化,根据卷积核尺寸Lkernel确定并行度R,其中并行度R为
S212,确定循环次数CNT和循环变量cnt初始;
S213,并行乘法计算;
S214,判断R的值,若R大于等于1,更新部分结果缓冲单元(115)和行缓冲单元(113),否则,判断cnt%T的值,其中
S215,若cnt%T=T-1,更新部分结果缓冲单元(115)、缓冲清零,卷积核单元(112)和行缓冲单元(113),否则,更新部分结果缓冲单元(115)、卷积核单元(112)和行缓冲单元(113);
S216,循环变量cnt递增加1,若cnt<CNT,则循环执行步骤S213~S216,否则,结束执行过程。
6.根据权利要求5所述的复数神经网络的一维卷积加速方法,其特征在于,S211具体包括,
若R大于1,并行乘法单元(114)一次计算完成R次一维卷积,分别从权重缓冲(120)、特征图缓冲(130)读取Lkernel个数据,复制填充卷积核单元(112)、行缓冲单元(113)的R×Lkernel个寄存器;
若R等于1,并行乘法单元(114)一次计算完成一次一维卷积,分别从权重缓冲(120)、特征图缓冲(130)读取Lkernel个数据,填充卷积核单元(112)、行缓冲单元(113)的Lkernel个寄存器;
若R等于0,并行乘法单元(114)需要多次计算才能完成一次一维卷积,分别从权重缓冲(120)、特征图缓冲(130)读取L个数据,填充卷积核单元(112)、行缓冲单元(113)的L个寄存器。
7.根据权利要求5所述的复数神经网络的一维卷积加速方法,其特征在于,S214中,更新部分结果缓冲单元(115)结果输出和行缓冲单元(113)的具体方法包括,
若R大于1,第i×Lkernel开始的Lkernel个计算结果累加后得到第i个值,输出至复数计算单元(140),其中i从0依次递增至R-1,从特征图缓冲(130)地址cnt×stride处连续读取Lkernel个数据,复制填充行缓冲单元(113)的R×Lkernel个寄存器;
若R等于1,取前R×Lkernel个计算结果累加后输出至复数计算单元(140),特征图缓冲(130)地址cnt×stride处连续读取Lkernel个数据,填充行缓冲单元(113)的Lkernel个寄存器;
其中stride为卷积核步长,卷积核单元(112)不变。
8.根据权利要求3所述的复数神经网络的一维卷积加速方法,其特征在于,S400具体包括:
S410,一维卷积计算单元(110)将结果输入实部计算单元(141),实部计算单元(141)根据输入的一维卷积计算单元(110)的值计算得到实部结果,得到输出特征图的实部数值;
S420,一维卷积计算单元(110)将结果输入虚部计算单元(142),虚部计算单元(142)根据输入的一维卷积计算单元(110)的值计算得到虚部结果,得到输出特征图的虚部数值;
S430,实部计算单元(141)与虚部计算单元(142)将实部、虚部输入结果选择单元(143),结果选择单元(143)将其整合为复数值,传输至输出特征图存储区(230);
S440,结果选择单元(143)同时接受来自一维卷积计算单元(110)的实数值,如果当前网络是实数神经网络,结果选择单元(143)将实数计算结果输至输出特征图存储区(230)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010396802.4A CN111626412B (zh) | 2020-05-12 | 2020-05-12 | 复数神经网络的一维卷积加速装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010396802.4A CN111626412B (zh) | 2020-05-12 | 2020-05-12 | 复数神经网络的一维卷积加速装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111626412A CN111626412A (zh) | 2020-09-04 |
CN111626412B true CN111626412B (zh) | 2023-10-31 |
Family
ID=72271879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010396802.4A Active CN111626412B (zh) | 2020-05-12 | 2020-05-12 | 复数神经网络的一维卷积加速装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111626412B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112508957B (zh) * | 2020-12-08 | 2023-12-01 | 深圳先进技术研究院 | 图像分割方法和装置、电子设备、机器可读存储介质 |
CN112528869B (zh) * | 2020-12-14 | 2023-04-25 | 北京航空航天大学杭州创新研究院 | 一种基于复数神经网络的无相位数据成像方法 |
CN113052299B (zh) * | 2021-03-17 | 2022-05-31 | 浙江大学 | 基于通信下界的神经网络存内计算装置及加速方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4181968A (en) * | 1978-06-14 | 1980-01-01 | The United States Of America As Represented By The Secretary Of The Army | Method and apparatus for forming convolutions of two complex number sequences using the fermat number transform |
JPS6280767A (ja) * | 1985-10-04 | 1987-04-14 | Hitachi Ltd | 合成開口レ−ダ画像の再生処理方式 |
CN103810144A (zh) * | 2012-11-08 | 2014-05-21 | 无锡汉兴电子有限公司 | 一种质数长度fft/ifft方法和装置 |
CN107025317A (zh) * | 2015-10-07 | 2017-08-08 | 阿尔特拉公司 | 用于实施卷积神经网络加速器上的层的方法和装置 |
CN110659445A (zh) * | 2018-06-29 | 2020-01-07 | 龙芯中科技术有限公司 | 一种运算装置及其处理方法 |
CN111124995A (zh) * | 2019-12-24 | 2020-05-08 | 上海寒武纪信息科技有限公司 | 通过人工智能处理器处理一维复数数组的方法和设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7953958B2 (en) * | 2006-09-29 | 2011-05-31 | Mediatek Inc. | Architecture for joint detection hardware accelerator |
US10671349B2 (en) * | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
-
2020
- 2020-05-12 CN CN202010396802.4A patent/CN111626412B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4181968A (en) * | 1978-06-14 | 1980-01-01 | The United States Of America As Represented By The Secretary Of The Army | Method and apparatus for forming convolutions of two complex number sequences using the fermat number transform |
JPS6280767A (ja) * | 1985-10-04 | 1987-04-14 | Hitachi Ltd | 合成開口レ−ダ画像の再生処理方式 |
CN103810144A (zh) * | 2012-11-08 | 2014-05-21 | 无锡汉兴电子有限公司 | 一种质数长度fft/ifft方法和装置 |
CN107025317A (zh) * | 2015-10-07 | 2017-08-08 | 阿尔特拉公司 | 用于实施卷积神经网络加速器上的层的方法和装置 |
CN110659445A (zh) * | 2018-06-29 | 2020-01-07 | 龙芯中科技术有限公司 | 一种运算装置及其处理方法 |
CN111124995A (zh) * | 2019-12-24 | 2020-05-08 | 上海寒武纪信息科技有限公司 | 通过人工智能处理器处理一维复数数组的方法和设备 |
Non-Patent Citations (3)
Title |
---|
Kaiyuan Guo.Angel-Eye: A Complete Design Flow for Mapping CNN Onto Embedded FPGA.IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems .2017,第37卷(第1期),第35-47页. * |
Yun Liang.Evaluating Fast Algorithms for Convolutional Neural Networks on FPGAs.IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.2019,第39卷(第4期),第857-870页. * |
吴焕.卷积神经网络压缩与前向推理加速技术研究.中国优秀硕士学位论文集信息科技辑.2019,(第01期),I140-790. * |
Also Published As
Publication number | Publication date |
---|---|
CN111626412A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111626412B (zh) | 复数神经网络的一维卷积加速装置及方法 | |
KR102258414B1 (ko) | 처리 장치 및 처리 방법 | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
CN111580864B (zh) | 一种向量运算装置及运算方法 | |
CN113033765A (zh) | 用于实现卷积神经网络的可配置处理器元件阵列 | |
US20170061279A1 (en) | Updating an artificial neural network using flexible fixed point representation | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
CN111325321A (zh) | 基于多神经网络融合的类脑计算系统及指令集的执行方法 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN113743599B (zh) | 一种卷积神经网络的运算装置及服务器 | |
US11983616B2 (en) | Methods and apparatus for constructing digital circuits for performing matrix operations | |
CN111144556B (zh) | 面向深度神经网络训练和推理的范围批处理归一化算法的硬件电路 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
EP3709225A1 (en) | System and method for efficient utilization of multipliers in neural-network computations | |
CN113807998A (zh) | 图像处理方法、目标检测装置、机器视觉设备和存储介质 | |
CN110716751B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN113313252B (zh) | 一种基于脉动阵列的深度可分离卷积实现方法 | |
CN114492753A (zh) | 一种应用于片上训练的稀疏加速器 | |
CN107783935B (zh) | 基于动态精度可配运算的近似计算可重构阵列 | |
KR20200020117A (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
CN116888591A (zh) | 一种矩阵乘法器、矩阵计算方法及相关设备 | |
US20230259578A1 (en) | Configurable pooling processing unit for neural network accelerator | |
US20230244599A1 (en) | Programmable Multi-Level Data Access Address Generator | |
CN112639836A (zh) | 数据处理装置、电子设备和数据处理方法 | |
CN116090518A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |