CN108985450A - 面向向量处理器的卷积神经网络运算向量化方法 - Google Patents
面向向量处理器的卷积神经网络运算向量化方法 Download PDFInfo
- Publication number
- CN108985450A CN108985450A CN201810687639.XA CN201810687639A CN108985450A CN 108985450 A CN108985450 A CN 108985450A CN 201810687639 A CN201810687639 A CN 201810687639A CN 108985450 A CN108985450 A CN 108985450A
- Authority
- CN
- China
- Prior art keywords
- data
- convolution
- vector
- input feature
- feature vector
- 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
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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Algebra (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种面向向量处理器的卷积神经网络运算向量化方法,步骤包括:S1.将向量存储器的L1D设置为SRAM方式,并划分为两个缓冲区;S2.依次将输入特征数据传入到两个缓冲区中;S3.依次将卷积核数据传入到向量存储器的向量阵列中;S4.依次开启两个缓冲区的计算,每个缓冲区计算时依次选取一个移动卷积运算窗口进行卷积运算,每个移动卷积运算窗口进行运算时,依次读取一个输入特征数据并扩展为向量数据,各卷积核分别与扩展得到的向量数据进行乘累加;S5.由向量处理部件将卷积计算结果传输到片外存储中;S6.循环执行步骤S2~S5。本发明具有实现方法简单、处理器的并行性以及计算效率高等优点。
Description
技术领域
本发明涉及基于卷积神经网络的深度学习技术领域,尤其涉及一种面向向量处理器的卷积神经网络运算向量化方法。
背景技术
目前基于卷积神经网络(Convolutional Neural Networks,CNN)的深度学习模型在图像识别和分类、机器翻译、文本自动处理、语音识别、自动驾驶、视频分析等各个方面均取得了令人瞩目的成就,成为各领域的研究热点。卷积神经网络是一种深度前馈神经网络,通常由若干个卷积层、激活层和池化层交替组成,其中卷积层通过卷积核与输入特征做卷积运算进行特征提取,从而学习到各个分级的特征。卷积神经网络计算中卷积层计算占据整个网络结构90%的计算量,因而优化和加速卷积层计算成为提升卷积神经网络计算性能的关键。
为了提高卷积神经网络的性能,当前不断的提出越来越深和复杂的网络结构,典型的如LeNet,AlexNet,VGGNet,GoogleNet等,但是随着网络规模的不断扩大,网络参数的规模也越来越大,相应的大规模的卷积神经网络计算对处理器的处理性能和数据存储带宽也越来越高。目前业界普遍是采用高性能GPU来满足卷积神经网络计算要求,甚至通过设计专用的卷积神经网络处理器来加速卷积神经网络计算,但是高性能GPU的计算性能有限,实现卷积神经网络计算效率仍有待提高,尤其是无法满足大规模卷积神经网络的计算性能要求,而设计专用的卷积神经网络处理器成本高,实现复杂。
向量处理器是一种新颖的体系结构,在保持较低功耗的同时,具有强大的计算能力,适合加速卷积神经网络计算。向量处理器通常包括标量处理部件(Scalar ProcessingUnit,SPU)和向量处理部件(Vector Processing Unit,VPU),SPU负责标量任务计算和流控,VPU负责向量计算,提供主要的计算能力,包括若干向量处理单元(Vector ProcessingElement,VPE),每个VPE包含MAC、ALU、BP等多个运算功能部件,SPU和VPU之间提供数据传输和交换机制,实现标、向量数据的共享和通信,向量数据访问单元支持向量数据的Load/Store,提供大容量的专用向量存储器,而不是单核处理器的Cache机制。但是现有的卷积神经网络计算方法并不能直接适用于上述向量处理器中,目前还尚未有有效的方案可以面向向量处理器实现高效的卷积神经网络运算,因而亟需提供一种面向向量处理器的卷积神经网络运算向量化方法,以发挥向量处理器的计算效率,加速卷积神经网络的计算。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、卷积运算效率高,且向量处理器并行性以及计算效率高的面向向量处理器的卷积神经网络运算向量化方法。
为解决上述技术问题,本发明提出的技术方案为:
一种面向向量处理器的卷积神经网络运算向量化方法,步骤包括:
S1.将向量存储器的标量存储L1D设置为SRAM方式,并根据向量处理器的体系结构特征参数、输入特征参数和卷积核参数将L1D划分为两个缓冲区以存储输入特征数据;
S2.依次将输入特征数据传入到L1D的两个缓冲区中;
S3.依次将卷积核数据传入到向量存储器的向量阵列中进行存储;
S4.依次开启L1D中两个缓冲区的计算,每个缓冲区计算时从缓冲区中依次选取一个移动卷积运算窗口与向量阵列中存储的所述卷积核数据进行卷积运算,每个所述移动卷积运算窗口进行运算时,依次读取一个输入特征数据并扩展为向量数据,各卷积核分别从向量阵列中读取对应的所述卷积核数据后与扩展得到的向量数据进行乘累加;
S5.由向量处理部件将得到的卷积计算结果传输到片外存储中;
S6.循环执行步骤S2~S5,直至完成所有输入特征数据的卷积运算。
作为本发明的进一步改进:两个所述缓冲区的数据传输与计算过程为相互重叠,即当一个缓冲区中数据就绪以后进行计算,同时开启另一个缓冲区的数据传输,完成一个缓冲区的计算以后再开启另一个缓冲区的计算。
作为本发明的进一步改进:所述步骤S1中划分两个缓冲区的具体步骤为:令t=(w+2p-k)/s+1,若t为偶数,则令t1=t2=t/2,若t为奇数,则令t1=(t+1)/2,t2=(t-1)/2,且令w1=(t1-1)*s+k,w2=(t2-1)*s+k;将L1D划分为第一缓冲区Buffer1和第二缓冲区Buffer2,所述第一缓冲区Buffer1存储的输入特征数据的规模为c*r*w1,所述第二缓冲区Buffer2存储的输入特征数据的规模为c*r*w2,其中c为通道数目,r为满足所述第一缓冲区Buffer1与所述第二缓冲区Buffer2的存储数据量之和不超过L1D容量的最大值。
作为本发明的进一步改进,所述步骤S2的具体步骤为:每次传入输入特征数据时,所述第一缓冲区Buffer1存储每个通道的前w1列数据,所述第二缓冲区Buffer2存储的是每个通道的后w2列数据,其中将输入特征数据传入到所述第一缓冲区Buffer1时,将c个通道的输入特征数据依次进行存储,且每个通道的输入特征数据存储时,按照r*w1矩阵模式存储数据,即矩阵的行数为r,矩阵的列数为w1;将输入特征数据传入至所述第二缓冲区Buffer2时,将c个通道的输入特征数据依次存储,且每个通道的输入特征数据存储时,按照r*w2矩阵模式存储数据,即矩阵的行数为r,矩阵的列数为w2。
作为本发明的进一步改进:所述步骤S3的具体步骤为:将各个通道的卷积核数据依次存储,且每个通道的n个卷积核数据存储时,按照(k2)*n矩阵模式存储数据,其中k为卷积核的行、列数,n为卷积核的个数,即矩阵的行数为卷积核的行列数乘积(k2),矩阵的列数为卷积核的个数n,使得卷积核的元素全部依次存储在一列上。
作为本发明的进一步改进:所述步骤S4中,具体根据卷积步长s选取所述移动卷积运算窗口,将所述移动卷积运算窗口中输入特征数据与所有需要进行卷积计算的n个卷积核分别进行计算,完成所述移动卷积运算窗口内输入特征数据的卷积运算。
作为本发明的进一步改进:所述步骤S4中,若选取的所述移动卷积运算窗口与卷积核的大小一致,则直接完成一次卷积核的完整卷积计算;若选取的所述移动卷积运算窗口小于卷积核的大小,则选取与所述移动卷积运算窗口对应的部分卷积核进行该次的卷积计算,在下次相邻输入特征数据传入L1D缓冲区时,选取上次移动卷积运算窗口中未覆盖部分与对应的部分卷积核进行卷积计算,再将计算结果与上一次对应的部分卷积计算结果进行累加,完成卷积核本次的完整卷积计算。
作为本发明的进一步改进:所述步骤S4中在片外存储的最终数据规模是(t2)的矩阵模式存储数据,即矩阵的行数为(t2),矩阵的列数为n。
作为本发明的进一步改进:所述步骤S4中每个所述移动卷积运算窗口进行运算的具体步骤为:由向量处理器的标量处理部件SPU依次从所述移动卷积运算窗口中读取一个输入特征数据,并扩展到向量处理部件的一个向量数据,得到扩展后向量数据,由向量处理部件VPU对n个卷积核依次读取对应的卷积核的一个卷积核数据后,分别与所述扩展后向量数据进行乘累加,当遍历完所述移动卷积运算窗口内所有输入特征数据后,完成当前移动卷积运算窗口的卷积计算。
作为本发明的进一步改进:所述步骤S4中从所述移动卷积运算窗口中具体按照特征数据优先加载数据,即按照所述移动卷积运算窗口的数据顺序,依次遍历各通道的所述移动卷积运算窗口的所有特征数据;或所述步骤S4中从所述移动卷积运算窗口中具体按照通道数据优先加载数据,即按照通道的数据顺序,依次遍历所有通道的各数据
与现有技术相比,本发明的优点在于:
1)本发明面向向量处理器的卷积神经网络运算向量化方法,结合向量处理器的体系特征,通过将向量存储器的标量存储L1D划分为两个缓冲区,依次将输入特征数据传入缓冲区中进行卷积运算,全部输入特征数据只需要传入一次,每次传入的输入特征数据所需要参与的全部卷积计算均能够完成,同时运算时将输入特征的每个数据扩展一个向量数据参与卷积计算,可以大幅度减少计算数据的传输量,从而显著降低了输入特征数据的带宽需求,以及降低输入特征数据的传输时间。
2)本发明面向向量处理器的卷积神经网络运算向量化方法,每次进行卷积运算时,将输入特征数据扩展成向量数据,再与全部的卷积核同时进行向量计算,能够充分发挥向量处理器的SIMD并行性,大幅度提升了卷积计算效率。
3)本发明面向向量处理器的卷积神经网络运算向量化方法,通过将卷积核的所有元素存储在一个列上,且移动卷积运算窗口与卷积核的全部计算都是在同一个处理单元上进行乘累加操作,可以避免多个处理单元之间的规约求和,有效提高了向量处理器的整体计算效率。
附图说明
图1是本实施例采用的向量处理器的结构示意图。
图2是本实施例面向向量处理器的卷积神经网络运算向量化方法的实现流程示意图。
图3是本发明具体应用实施例中进行卷积运算的实现流程示意图。
图4是本发明具体应用实施例中采用两种方式加载数据的实现原理示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
本实施例采用的向量处理器如图1所示,包括标量处理部件(Scalar ProcessingUnit,SPU)和向量处理部件(Vector Processing Unit,VPU),SPU负责标量任务计算和流控,VPU负责向量计算,提供主要的计算能力,包括若干向量处理单元(Vector ProcessingElement,VPE),每个VPE包含MAC、ALU、BP等多个运算功能部件;SPU和VPU之间提供数据传输和交换机制,实现标、向量数据的共享和通信,向量数据访问单元支持向量数据的Load/Store,提供大容量的专用向量存储器。本实施例在上述结构的基础上,将向量存储器的标量存储L1D设置为SRAM方式,L1D划分为存储输入特征数据的两个缓冲区Buffer1和Buffer2。
设输入特征的数据规模为c*w*w,其中c为通道数目,w分别为输入特征的行数、列数,即行列数相等,填充(padding)的数量为p;卷积核的数据规模为c*k*k,c为通道数目,通常与输入特征的通道数目保持一致,卷积核的行和列相等且均为k,卷积核的个数为n,卷积计算的步长设为s。如图2所示,本实施例面向向量处理器的卷积神经网络运算向量化方法,步骤包括:
S1.将向量存储器的标量存储L1D设置为SRAM方式,而不是cache方式,并根据向量处理器的体系结构特征参数、输入特征参数和卷积核参数将L1D划分为两个缓冲区(第一缓冲区Buffer1和第二缓冲区Buffer2)以存储输入特征数据,如图1所示。
上述划分两个缓冲区的具体步骤为:令t=(w+2p-k)/s+1,若t为偶数,则令t1=t2=t/2,若t为奇数,则令t1=(t+1)/2,t2=(t-1)/2,且令w1=(t1-1)*s+k,w2=(t2-1)*s+k;
将L1D划分为第一缓冲区Buffer1和第二缓冲区Buffer2,第一缓冲区Buffer1存储的输入特征数据的规模为c*r*w1,第二缓冲区Buffer2存储的输入特征数据的规模为c*r*w2,其中c为通道数目,r根据L1D的容量确定,即参数c,w1,w2确定之后,r为满足Buffer1与Buffer2的存储数据量之和不超过L1D容量的最大值。每次传入数据到L1D缓冲区时,Buffer1存储的是每个通道的前w1列数据,Buffer2存储的是每个通道的后w2列数据。
S2.依次将输入特征数据传入到L1D的两个缓冲区中。
每次传入输入特征数据时,第一缓冲区Buffer1存储每个通道的前w1列数据,第二缓冲区Buffer2存储的是每个通道的后w2列数据,其中将输入特征数据传入到所述第一缓冲区Buffer1时,将c个通道的输入特征数据依次进行存储,且每个通道的输入特征数据存储时,按照r*w1矩阵模式存储数据,即矩阵的行数为r,矩阵的列数为w1;将输入特征数据传入至所述第二缓冲区Buffer2时,将c个通道的输入特征数据依次存储,且每个通道的输入特征数据存储时,按照r*w2矩阵模式存储数据,即矩阵的行数为r,矩阵的列数为w2。
即输入特征的数据在缓冲区Buffer1中按照如下方式存储:c个通道的输入特征数据依次存储,并且每个通道的输入特征数据存储时,按照r*w1矩阵模式存储数据;输入特征的数据在缓冲区Buffer2中按照如下方式存储:c个通道的输入特征数据依次存储,且每个通道的输入特征数据存储时,按照r*w2矩阵模式存储数据。
S3.依次将卷积核数据传入到向量存储器的向量阵列中进行存储。
将c个通道的卷积核数据依次存储,且每个通道的n个卷积核数据存储时,按照(k2)*n矩阵模式存储数据,其中k为卷积核的行、列数,n为卷积核的个数,即矩阵的行数为卷积核的行列数乘积(k2),矩阵的列数为卷积核的个数n,使得卷积核的元素全部依次存储在一列上,后续移动卷积运算窗口与卷积核的全部计算都是在同一个处理单元上进行乘累加操作,可以避免了多个处理单元之间的规约求和,提高了向量处理器的整体计算效率。
S4.依次开启L1D中两个缓冲区的计算,每个缓冲区计算时从缓冲区中依次选取一个移动卷积运算窗口与向量阵列中存储的所述卷积核数据进行卷积运算,每个移动卷积运算窗口进行运算时,依次读取一个输入特征数据并扩展为向量数据,各卷积核分别从向量阵列中读取对应的所述卷积核数据后与扩展得到的向量数据进行乘累加,直至完成当前移动卷积运算窗口内所有输入特征数据的卷积运算。
两个缓冲区的数据传输与计算过程具体为相互重叠,即当一个缓冲区中数据就绪以后进行计算,同时开启另一个缓冲区的数据传输,完成一个缓冲区的计算以后再开启另一个缓冲区的计算。
本实施例具体根据卷积步长s依次从L1D的缓冲区Buffer1(Buffer2)选取一个移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与向量阵列存储的对应卷积核数据进行卷积运算,包括与对应的n个卷积核进行计算,即移动卷积运算窗口的输入特征数据与所有需要与该部分输入特征数据进行卷积计算的n个卷积核完成计算,直至完成移动卷积运算窗口内输入特征数据的卷积运算。上述每次将输入特征数据扩展成向量数据后,与全部的卷积核同时进行向量计算,可以充分发挥向量处理器的SIMD并行性,从而大幅度提升卷积计算效率。
上述执行运算时,若选取的移动卷积运算窗口与卷积核的大小一致,则直接完成一次卷积核的完整卷积计算;若选取的所述移动卷积运算窗口小于卷积核的大小,则选取与所述移动卷积运算窗口对应的部分卷积核进行该次的卷积计算,在下次相邻输入特征数据传入L1D缓冲区时,选取上次移动卷积运算窗口未覆盖的那部分移动卷积运算窗口,并将该部分移动卷积运算窗口与对应的部分卷积核进行卷积计算,再将计算结果与上一次对应的部分卷积计算结果进行累加,完成卷积核本次的完整卷积计算。
上述每个移动卷积运算窗口进行运算的具体步骤为:由向量处理器的标量处理部件SPU依次从所述移动卷积运算窗口中读取一个输入特征数据,并扩展到向量处理部件的一个向量数据,得到扩展后向量数据,由向量处理部件VPU对n个卷积核依次读取对应的卷积核的一个卷积核数据后,分别与所述扩展后向量数据进行乘累加,当遍历完所述移动卷积运算窗口内所有输入特征数据后,完成当前移动卷积运算窗口的卷积计算。
S5.由向量处理部件将得到的卷积计算结果传输到片外存储中。
完成卷积运算后,通过向量处理部件将得到的卷积计算结果传输到片外存储中,向量阵列存储中的卷积计算结果达到输出缓冲区容量或者全部计算完毕时,向量处理部件将完成的向量阵列存储中的卷积计算结果传输到片外存储,在片外存储的最终数据规模是(t2)的矩阵模式存储数据,即矩阵的行数为(t2),矩阵的列数为n。
S6.循环执行步骤S2~S5,直至完成所有输入特征数据的卷积运算。
通过上述方法,由于全部输入特征数据只需要传入一次,每次传入的输入特征数据所需要参与的全部卷积计算均能够完成,并且输入特征的每个数据都被扩展一个向量数据参与卷积计算,相当于大幅度减少了计算数据的传输量,可以显著降低输入特征数据的带宽需求,以及降低输入特征数据的传输时间;且每次输入特征数据扩展成向量数据与全部的卷积核同时进行向量计算,能够充分发挥向量处理器的SIMD并行性,大幅度提升卷积计算效率。
如图3所示,以一个通道输入特征数据的卷积运算为例,本发明具体应用实施例中通过依次选取移动卷积运算窗口(图中填充部分所示)进行卷积运算的流程如下所示,其中步长s=2,卷积核大小为5*5,L1D的缓冲区Buffer1为7*w:
步骤1:如图3(a)所示,在横向方面,以步长2依次从L1D的缓冲区Buffer1选取一个5*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的5*5的卷积核数据进行卷积运算,直到该轮横向方面的输入特征数据计算完毕。
步骤2:如图3(b),首先是在纵向方面,以步长2从L1D的缓冲区Buffer1选取一个5*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的5*5的卷积核数据进行卷积运算;再按照上述步骤1,如图3(a),在横向方面,以步长2依次从L1D的缓冲区Buffer1选取一个5*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的5*5的卷积核数据进行卷积运算,直到该轮横向方面的输入特征数据计算完毕。
步骤3:如图3(b),首先是在纵向方面,以步长2从L1D的缓冲区Buffer1选取一个3*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的3*5的卷积核数据进行卷积运算;再按照上述步骤1,如图3(a),在横向方面,以步长2依次从L1D的缓冲区Buffer1选取一个3*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的3*5的卷积核数据进行卷积运算,直到该轮横向方面的输入特征数据计算完毕。
步骤4:如图3(b),首先是在纵向方面,以步长2从L1D的缓冲区Buffer1选取一个1*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的1*5的卷积核数据进行卷积运算;再按照上述步骤1,如图3(a),在横向方面,以步长2依次从L1D的缓冲区Buffer1选取一个1*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的1*5的卷积核数据进行卷积运算,直到该轮横向方面的输入特征数据计算完毕。
步骤5:新一轮相邻输入特征数据传入L1D缓冲区时,如图3(c),首先是在纵向方面,以步长2从L1D的缓冲区Buffer1选取一个2*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的2*5的卷积核数据进行卷积运算,计算结果与步骤3对应的部分卷积计算结果累加,完成本轮次的完整卷积计算。再按照上述步骤1,如图3(a),在横向方面,以步长2依次从L1D的缓冲区Buffer1选取一个2*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的2*5的卷积核数据进行卷积运算,直到该轮横向方面的输入特征数据计算完毕。
步骤6:如图3(c),首先是在纵向方面,以步长2从L1D的缓冲区Buffer1选取一个4*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的4*5的卷积核数据进行卷积运算,计算结果与步骤4对应的部分卷积计算结果累加,完成本轮次的完整卷积计算。再按照上述步骤1,如图3(a),在横向方面,以步长2依次从L1D的缓冲区Buffer1选取一个4*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的4*5的卷积核数据进行卷积运算,直到该轮横向方面的输入特征数据计算完毕。
步骤7:如图3(c),首先是在纵向方面,以步长2从L1D的缓冲区Buffer1选取一个5*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的5*5的卷积核数据进行卷积运算。再按照上述步骤1,如图3(a),在横向方面,以步长2依次从L1D的缓冲区Buffer1选取一个5*5的移动卷积运算窗口,将该移动卷积运算窗口的输入特征数据与对应的5*5的卷积核数据进行卷积运算,直到该轮横向方面的输入特征数据计算完毕。
步骤8:重复步骤1至7,直到所有卷积计算完成。
即上述计算过程中,若从L1D缓冲区选取移动卷积运算窗口与卷积核的大小一致,则直接完成卷积核的一次完整的卷积计算;若从L1D缓冲区选取移动卷积运算窗口小于卷积核的大小,则选取与移动卷积运算窗口对应的部分卷积核进行该次的卷积计算,并且在下次相邻输入特征数据传入L1D缓冲区时,选取上次移动卷积运算窗口未覆盖的那部分移动卷积运算窗口,该部分移动卷积运算窗口与对应的部分卷积核进行卷积计算,计算结果再与上一次对应的部分卷积计算结果累加,完成卷积核本轮次的完整卷积计算。
本实施例中,从移动卷积运算窗口中可以按照两种方式加载数据:
一种是按照特征数据优先加载数据,即按照所述移动卷积运算窗口的数据顺序,依次遍历各通道的移动卷积运算窗口的所有特征数据,如首先遍历通道0的移动卷积运算窗口的所有特征数据,接着遍历通道1的移动卷积运算窗口的所有特征数据,依次下去,直到完成所有通道的移动卷积运算窗口特征数据。
另一种是按照通道数据优先加载数据,即按照通道的数据顺序,依次遍历所有通道的各数据,如首先遍历所有通道的第一个元素数据,接着遍历所有通道的第二个元素数据,依次下去,直到完成所有通道的最后一个元素数据。
如图4(1)所示,在具体应用实施例中按照特征数据优先方式加载数据时,首先遍历通道R的移动卷积运算窗口的所有特征数据,即R[0][0],R[0][1],R[0][2],R[1][0],R[1][1],R[1][2],R[2][0],R[2][1],R[2][2],接着遍历通道G的移动卷积运算窗口的所有特征数据,即G[0][0],G[0][1],G[0][2],G[1][0],G[1][1],G[1][2],G[2][0],G[2][1],G[2][2],最后遍历通道B的移动卷积运算窗口的所有特征数据,即B[0][0],B[0][1],B[0][2],B[1][0],B[1][1],B[1][2],B[2][0],B[2][1],B[2][2]。
如图4(2)所示,在具体应用实施例中按照通道优先方式加载数据时,按照通道的数据顺序,首先遍历3个通道的第一个元素数据即R[0][0],G[0][0],B[0][0],接着遍历3个通道的第二个元素数据R[0][1],G[0][1],B[0][1],依次下去,直到完成3个通道的最后一个元素数据R[2][2],G[2][2],B[2][2]。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (9)
1.一种面向向量处理器的卷积神经网络运算向量化方法,其特征在于,步骤包括:
S1.将向量存储器的标量存储L1D设置为SRAM方式,并根据向量处理器的体系结构特征参数、输入特征参数和卷积核参数将L1D划分为两个缓冲区以存储输入特征数据;
S2.依次将输入特征数据传入到L1D的两个缓冲区中;
S3.依次将卷积核数据传入到向量存储器的向量阵列中进行存储;
S4.依次开启L1D中两个缓冲区的计算,每个缓冲区计算时从缓冲区中依次选取一个移动卷积运算窗口与向量阵列中存储的所述卷积核数据进行卷积运算,每个所述移动卷积运算窗口进行运算时,依次读取一个输入特征数据并扩展为向量数据,各卷积核分别从向量阵列中读取对应的所述卷积核数据后与扩展得到的向量数据进行乘累加;
S5.由向量处理部件将得到的卷积计算结果传输到片外存储中;
S6.循环执行步骤S2~S5,直至完成所有输入特征数据的卷积运算。
2.根据权利要求1所述的面向向量处理器的卷积神经网络运算向量化方法,其特征在于,两个所述缓冲区的数据传输与计算过程为相互重叠,即当一个缓冲区中数据就绪以后进行计算,同时开启另一个缓冲区的数据传输,完成一个缓冲区的计算以后再开启另一个缓冲区的计算。
3.根据权利要求1所述的面向向量处理器的卷积神经网络运算向量化方法,其特征在于,所述步骤S1中划分两个缓冲区的具体步骤为:令t=(w+2p-k)/s+1,若t为偶数,则令t1=t2=t/2,若t为奇数,则令t1=(t+1)/2,t2=(t-1)/2,且令w1=(t1-1)*s+k,w2=(t2-1)*s+k;将L1D划分为第一缓冲区Buffer1和第二缓冲区Buffer2,所述第一缓冲区Buffer1存储的输入特征数据的规模为c*r*w1,所述第二缓冲区Buffer2存储的输入特征数据的规模为c*r*w2,其中c为通道数目,r为满足所述第一缓冲区Buffer1与所述第二缓冲区Buffer2的存储数据量之和不超过L1D容量的最大值。
4.根据权利要求3所述的面向向量处理器的卷积神经网络运算向量化方法,其特征在于,所述步骤S2的具体步骤为:每次传入输入特征数据时,所述第一缓冲区Buffer1存储每个通道的前w1列数据,所述第二缓冲区Buffer2存储的是每个通道的后w2列数据,其中将输入特征数据传入到所述第一缓冲区Buffer1时,将c个通道的输入特征数据依次进行存储,且每个通道的输入特征数据存储时,按照r*w1矩阵模式存储数据,即矩阵的行数为r,矩阵的列数为w1;将输入特征数据传入至所述第二缓冲区Buffer2时,将c个通道的输入特征数据依次存储,且每个通道的输入特征数据存储时,按照r*w2矩阵模式存储数据,即矩阵的行数为r,矩阵的列数为w2。
5.根据权利要求1~4中任意一项所述的面向向量处理器的卷积神经网络运算向量化方法,其特征在于,所述步骤S3的具体步骤为:将各个通道的卷积核数据依次存储,且每个通道的n个卷积核数据存储时,按照(k2)*n矩阵模式存储数据,其中k为卷积核的行、列数,n为卷积核的个数,即矩阵的行数为卷积核的行列数乘积(k2),矩阵的列数为卷积核的个数n,使得卷积核的元素全部依次存储在一列上。
6.根据权利要求1~4中任意一项所述的面向向量处理器的卷积神经网络运算向量化方法,其特征在于,所述步骤S4中,具体根据卷积步长s选取所述移动卷积运算窗口,将所述移动卷积运算窗口中输入特征数据与所有需要进行卷积计算的n个卷积核分别进行计算,完成所述移动卷积运算窗口内输入特征数据的卷积运算。
7.根据权利要求1~4中任意一项所述的面向向量处理器的卷积神经网络运算向量化方法,其特征在于,所述步骤S4中,若选取的所述移动卷积运算窗口与卷积核的大小一致,则直接完成一次卷积核的完整卷积计算;若选取的所述移动卷积运算窗口小于卷积核的大小,则选取与所述移动卷积运算窗口对应的部分卷积核进行该次的卷积计算,在下次相邻输入特征数据传入L1D缓冲区时,选取上次移动卷积运算窗口中未覆盖部分与对应的部分卷积核进行卷积计算,再将计算结果与上一次对应的部分卷积计算结果进行累加,完成卷积核本次的完整卷积计算。
8.根据权利要求1~4中任意一项所述的面向向量处理器的卷积神经网络运算向量化方法,其特征在于,所述步骤S4中每个所述移动卷积运算窗口进行运算时,具体由向量处理器的标量处理部件SPU依次从所述移动卷积运算窗口中读取一个输入特征数据,并扩展到向量处理部件的一个向量数据,得到扩展后向量数据,由向量处理部件VPU对n个卷积核依次读取对应的卷积核的一个卷积核数据后,分别与所述扩展后向量数据进行乘累加,当遍历完所述移动卷积运算窗口内所有输入特征数据后,完成当前移动卷积运算窗口的卷积计算。
9.根据权利要求1~4中任意一项所述的面向向量处理器的卷积神经网络运算向量化方法,其特征在于,所述步骤S4中从所述移动卷积运算窗口中具体按照特征数据优先加载数据,即按照所述移动卷积运算窗口的数据顺序,依次遍历各通道的所述移动卷积运算窗口的所有特征数据;或所述步骤S4中从所述移动卷积运算窗口中具体按照通道数据优先加载数据,即按照通道的数据顺序,依次遍历所有通道的各数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810687639.XA CN108985450B (zh) | 2018-06-28 | 2018-06-28 | 面向向量处理器的卷积神经网络运算向量化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810687639.XA CN108985450B (zh) | 2018-06-28 | 2018-06-28 | 面向向量处理器的卷积神经网络运算向量化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108985450A true CN108985450A (zh) | 2018-12-11 |
CN108985450B CN108985450B (zh) | 2019-10-29 |
Family
ID=64539340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810687639.XA Active CN108985450B (zh) | 2018-06-28 | 2018-06-28 | 面向向量处理器的卷积神经网络运算向量化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108985450B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858622A (zh) * | 2019-01-31 | 2019-06-07 | 福州瑞芯微电子股份有限公司 | 深度学习神经网络的数据搬运电路和方法 |
CN109948789A (zh) * | 2019-03-21 | 2019-06-28 | 百度在线网络技术(北京)有限公司 | 用于卷积神经网络的数据加载方法和装置 |
CN110009103A (zh) * | 2019-03-26 | 2019-07-12 | 深兰科技(上海)有限公司 | 一种深度学习卷积计算的方法和装置 |
CN110399971A (zh) * | 2019-07-03 | 2019-11-01 | Oppo广东移动通信有限公司 | 一种卷积神经网络加速方法及装置、存储介质 |
CN110490308A (zh) * | 2019-09-16 | 2019-11-22 | 普联技术有限公司 | 加速库的设计方法、终端设备及存储介质 |
CN110766157A (zh) * | 2019-10-21 | 2020-02-07 | 中国人民解放军国防科技大学 | 多样本神经网络前向传播向量化实现方法 |
CN110796235A (zh) * | 2019-10-21 | 2020-02-14 | 中国人民解放军国防科技大学 | 卷积神经网络Valid卷积的向量化实现方法 |
CN110796236A (zh) * | 2019-10-21 | 2020-02-14 | 中国人民解放军国防科技大学 | 多样本多通道卷积神经网络池化的向量化实现方法 |
CN110807170A (zh) * | 2019-10-21 | 2020-02-18 | 中国人民解放军国防科技大学 | 多样本多通道卷积神经网络Same卷积向量化实现方法 |
CN110866598A (zh) * | 2019-09-30 | 2020-03-06 | 上海寒武纪信息科技有限公司 | block的合并方法、block的划分方法、组合处理装置及编译系统 |
CN111340224A (zh) * | 2020-02-27 | 2020-06-26 | 杭州雄迈集成电路技术股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN111859277A (zh) * | 2020-07-23 | 2020-10-30 | 中国人民解放军国防科技大学 | 一种稀疏矩阵向量乘法向量化实现方法 |
CN112133342A (zh) * | 2019-06-25 | 2020-12-25 | 中电海康集团有限公司 | 存储器 |
CN112446471A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于异构众核处理器的卷积加速方法 |
CN114444658A (zh) * | 2021-12-31 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种深度学习模型推理方法、系统、设备及计算机介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294648A (zh) * | 2013-05-08 | 2013-09-11 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
CN103440121A (zh) * | 2013-08-20 | 2013-12-11 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
US20160321074A1 (en) * | 2015-05-01 | 2016-11-03 | Nvidia Corporation | Programmable Vision Accelerator |
CN106970896A (zh) * | 2017-03-30 | 2017-07-21 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
US20180096226A1 (en) * | 2016-10-04 | 2018-04-05 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
US20180173676A1 (en) * | 2016-12-20 | 2018-06-21 | Mediatek Inc. | Adaptive execution engine for convolution computing systems |
CN108205702A (zh) * | 2017-12-29 | 2018-06-26 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
-
2018
- 2018-06-28 CN CN201810687639.XA patent/CN108985450B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294648A (zh) * | 2013-05-08 | 2013-09-11 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
CN103440121A (zh) * | 2013-08-20 | 2013-12-11 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
US20160321074A1 (en) * | 2015-05-01 | 2016-11-03 | Nvidia Corporation | Programmable Vision Accelerator |
US20180096226A1 (en) * | 2016-10-04 | 2018-04-05 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
US20180173676A1 (en) * | 2016-12-20 | 2018-06-21 | Mediatek Inc. | Adaptive execution engine for convolution computing systems |
CN106970896A (zh) * | 2017-03-30 | 2017-07-21 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
CN108205702A (zh) * | 2017-12-29 | 2018-06-26 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858622A (zh) * | 2019-01-31 | 2019-06-07 | 福州瑞芯微电子股份有限公司 | 深度学习神经网络的数据搬运电路和方法 |
CN109858622B (zh) * | 2019-01-31 | 2021-03-02 | 瑞芯微电子股份有限公司 | 深度学习神经网络的数据搬运电路和方法 |
CN109948789A (zh) * | 2019-03-21 | 2019-06-28 | 百度在线网络技术(北京)有限公司 | 用于卷积神经网络的数据加载方法和装置 |
CN110009103A (zh) * | 2019-03-26 | 2019-07-12 | 深兰科技(上海)有限公司 | 一种深度学习卷积计算的方法和装置 |
CN112133342A (zh) * | 2019-06-25 | 2020-12-25 | 中电海康集团有限公司 | 存储器 |
CN112133342B (zh) * | 2019-06-25 | 2022-05-06 | 中电海康集团有限公司 | 存储器 |
CN110399971A (zh) * | 2019-07-03 | 2019-11-01 | Oppo广东移动通信有限公司 | 一种卷积神经网络加速方法及装置、存储介质 |
CN112446471B (zh) * | 2019-08-28 | 2022-09-13 | 无锡江南计算技术研究所 | 基于异构众核处理器的卷积加速方法 |
CN112446471A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于异构众核处理器的卷积加速方法 |
CN110490308A (zh) * | 2019-09-16 | 2019-11-22 | 普联技术有限公司 | 加速库的设计方法、终端设备及存储介质 |
CN110490308B (zh) * | 2019-09-16 | 2022-02-18 | 普联技术有限公司 | 加速库的设计方法、终端设备及存储介质 |
CN110866598A (zh) * | 2019-09-30 | 2020-03-06 | 上海寒武纪信息科技有限公司 | block的合并方法、block的划分方法、组合处理装置及编译系统 |
CN110766157A (zh) * | 2019-10-21 | 2020-02-07 | 中国人民解放军国防科技大学 | 多样本神经网络前向传播向量化实现方法 |
CN110807170A (zh) * | 2019-10-21 | 2020-02-18 | 中国人民解放军国防科技大学 | 多样本多通道卷积神经网络Same卷积向量化实现方法 |
CN110766157B (zh) * | 2019-10-21 | 2022-03-18 | 中国人民解放军国防科技大学 | 多样本神经网络前向传播向量化实现方法 |
CN110796236A (zh) * | 2019-10-21 | 2020-02-14 | 中国人民解放军国防科技大学 | 多样本多通道卷积神经网络池化的向量化实现方法 |
CN110796236B (zh) * | 2019-10-21 | 2022-06-17 | 中国人民解放军国防科技大学 | 多样本多通道卷积神经网络池化的向量化实现方法 |
CN110796235A (zh) * | 2019-10-21 | 2020-02-14 | 中国人民解放军国防科技大学 | 卷积神经网络Valid卷积的向量化实现方法 |
CN111340224A (zh) * | 2020-02-27 | 2020-06-26 | 杭州雄迈集成电路技术股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN111340224B (zh) * | 2020-02-27 | 2023-11-21 | 浙江芯劢微电子股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN111859277A (zh) * | 2020-07-23 | 2020-10-30 | 中国人民解放军国防科技大学 | 一种稀疏矩阵向量乘法向量化实现方法 |
CN111859277B (zh) * | 2020-07-23 | 2022-10-21 | 中国人民解放军国防科技大学 | 一种稀疏矩阵向量乘法向量化实现方法 |
CN114444658A (zh) * | 2021-12-31 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种深度学习模型推理方法、系统、设备及计算机介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108985450B (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108985450B (zh) | 面向向量处理器的卷积神经网络运算向量化方法 | |
CN108171317B (zh) | 一种基于soc的数据复用卷积神经网络加速器 | |
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
CN109948774B (zh) | 基于网络层捆绑运算的神经网络加速器及其实现方法 | |
CN111445012B (zh) | 一种基于fpga的分组卷积硬件加速器及其方法 | |
CN111242289B (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
CN108205702B (zh) | 一种多输入多输出矩阵卷积的并行处理方法 | |
CN106951395A (zh) | 面向压缩卷积神经网络的并行卷积运算方法及装置 | |
CN107341544A (zh) | 一种基于可分割阵列的可重构加速器及其实现方法 | |
CN107301456A (zh) | 基于向量处理器的深度神经网络多核加速实现方法 | |
CN112395092B (zh) | 数据处理方法及人工智能处理器 | |
KR20180123846A (ko) | 합성곱 신경망을 위한 논리적 3차원 구조의 재구성형 연산 가속기 | |
CN110163338A (zh) | 具有运算阵列的芯片运算方法、装置、终端及芯片 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN110175670A (zh) | 一种基于FPGA实现YOLOv2检测网络的方法及系统 | |
CN116720549A (zh) | 一种基于cnn输入全缓存的fpga多核二维卷积加速优化方法 | |
CN108197075B (zh) | 一种Inception结构的多核实现方法 | |
CN114491402A (zh) | 一种稀疏矩阵向量乘访存优化的计算方法 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN109993293A (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
Duan et al. | Energy-efficient architecture for FPGA-based deep convolutional neural networks with binary weights | |
CN109740619B (zh) | 用于目标识别的神经网络终端运行方法和装置 | |
CN109359735B (zh) | 深度神经网络硬件加速的数据输入装置与方法 | |
CN112732630A (zh) | 针对深度学习的浮点矩阵乘算子众核并行优化方法 | |
CN114519425A (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 |