CN110796235A - 卷积神经网络Valid卷积的向量化实现方法 - Google Patents
卷积神经网络Valid卷积的向量化实现方法 Download PDFInfo
- Publication number
- CN110796235A CN110796235A CN201911000691.4A CN201911000691A CN110796235A CN 110796235 A CN110796235 A CN 110796235A CN 201911000691 A CN201911000691 A CN 201911000691A CN 110796235 A CN110796235 A CN 110796235A
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- convolution
- vector
- calculation
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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/08—Learning methods
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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种卷积神经网络Valid卷积的向量化实现方法,步骤包括:步骤1:将输入特征数据集数据按照样本维优先的方式存储,以及将卷积核的数据按照卷积核的数量维优先的方式存储;步骤2:按列将输入特征数据集数据矩阵划分为多个矩阵块;步骤3:每次将卷积核数据矩阵传输到各个核的SM中,以及将从输入特征数据矩阵中按行抽取K行数据组成的子矩阵传输到各个核的AM中;步骤4:执行向量化矩阵乘法计算和并行化矩阵乘法计算;步骤5:将输出特征矩阵计算结果存储在向量处理器的片外存储器中;步骤6:重复步骤4、5,直到完成全部输入特征数据矩阵计算。本发明具有实现方法简单、执行效率及精度高且带宽需求小等优点。
Description
技术领域
本发明涉及向量处理器,尤其涉及一种卷积神经网络Valid卷积的向量化实现方法。
背景技术
近年来基于深度卷积神经网络的深度学习模型在图像识别和分类、目标检测、视频分析等方面取得了令人瞩目的成就,成为学术界和工业界的研究热点,并且促进了人工智能、大数据处理、处理器等相关技术的快速发展。卷积神经网络(Convolutional NeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeural Networks),是深度学习的代表算法之一。卷积神经网络的输入层可以处理多维数据,由于卷积神经网络在计算机视觉领域应用最为广泛,因此在设计卷积神经网络结构时通常都是设定三维的输入数据,即二维平面上的图像像素数据和RGB通道。
卷积神经网络主要有Valid卷积和Same卷积两种,其中Valid卷积不对输入图像填充0元素,而Same卷积则需要对输入图像的边缘填充0元素。在Valid卷积计算过程中,每一个新图像特征值的计算都是通过6层循环,将卷积核与输入数据在通道方向分别卷积,之后将卷积后的数值相加,得到一个新的图像特征值,因此完成单个样本的单层卷积操作的计算总量较大;另一方面,卷积神经网络模型的准确度非常依赖于训练的样本数据量,样本数据量越大,获得的模型越准确,当然所需要的计算量也越大,训练样本数可能高达数百万,甚至数千万量级。因此,完成大型卷积神经网络Valid卷积计算所需的计算量是巨大的,如何加速大型卷积神经网络Valid卷积计算的计算也是当前研究热点,对于卷积神经网络的加速,目前广泛采用高性能GPU,甚至会设计专用的神经网络处理器来加速大型卷积神经网络计算。
向量处理器是一种新颖的体系结构,能够在保持较低功耗的同时,具有强大的计算能力,尤其适合加速大型卷积神经网络计算。如图1所示,向量处理器通常包括标量处理部件(Scalar Processing Unit,SPU)和向量处理部件(Vector Processing Unit,VPU),SPU负责标量任务计算和流控,VPU负责向量计算,提供主要的计算能力,包括若干向量处理单元(Vector Processing Element,VPE),每个VPE包含MAC、ALU、BP等多个运算功能部件。SPU和VPU之间提供数据传输和交换机制,实现标、向量数据的共享和通信。向量数据访问单元支持向量数据的Load/Store,提供大容量的专用向量阵列存储器(Array Memory,AM)以及标、向量共享的片外存储器。
针对向量处理器的体系结构特点,目前存在各种卷积计算的向量化实现方法,例如中国专利申请201810687639.X公开的一种向量处理器的卷积神经网络运算向量化方法、专利申请201810689646.3公开的一种面向GPDSP的卷积神经网络多核并行计算方法、专利申请201710201589.5公开的一种面向向量处理器的二维矩阵卷积的向量化实现方法等等,但是该类方案都是采用将权重数据加载到向量阵列存储器AM中,将输入图像特征数据加载到向量阵列存储器的标量存储SM中来完成卷积计算的方式,且大多是采用按照第三维顺序对数据进行重排序,而Valid卷积计算量大,目前还尚未有针对卷积神经网络中Valid卷积的向量化实现方法,将上述传统方案应用于Valid卷积向量化实现时会存在以下问题:
1、不能有效共享权重数据,会浪费存储带宽,而不能充分发挥向量处理器计算效率。
2、由于第三维的大小不确定,与向量处理器的处理单元数量不匹配,且不同卷积神经网络模型、不同卷积层的第三维大小各异,上述各类方案的加载数据效率会大受影响,且不具有通用性。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、执行效率及精度高且带宽需求小的卷积神经网络Valid卷积的向量化实现方法,能够充分发挥向量处理器的计算性能实现卷积神经网络Valid卷积的向量化。
为解决上述技术问题,本发明提出的技术方案为:
一种卷积神经网络Valid卷积的向量化实现方法,步骤包括:
步骤1:将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储,即所述输入特征数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其中M为数据集的总样本数目;N为单个样本的输入特征数目;以及将卷积核的数据按照卷积核的数量维优先的方式存储;
步骤2:向量处理器按列将所述输入特征数据集数据矩阵划分为多个矩阵块,得到多个输入特征数据矩阵;
步骤3:向量处理器每次将所述卷积核数据矩阵传输到各个核的标量存储器SM中,以及将从所述输入特征数据矩阵中按行抽取K行数据组成的子矩阵传输到各个核的向量阵列存储器AM中,K为单个卷积核的像素数据数目;
步骤4:对各个核的标量存储器SM、向量阵列存储器AM中数据执行向量化矩阵乘法计算以及并行化矩阵乘法计算,得到输出特征数据矩阵计算结果;
步骤5:将所述输出特征矩阵计算结果存储在向量处理器的片外存储器中;
步骤6:重复步骤3~5,直到完成全部输入特征数据矩阵计算。
进一步的,所述步骤1中将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储包括:第一层卷积神经网络计算时,将输入特征的数据集数据重排序,使得输入特征的数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其他层计算的输入特征数据矩阵为上一层计算结果的输出特征矩阵,且是按照样本维优先的方式存储在向量处理器的片外存储器中,其中M为数据集的总样本数目,N为单个样本的输入特征数目。
进一步的,所述步骤1中将卷积核的数据按照卷积核的数量维优先的方式存储包括:将卷积核的数据按照K*nextC阶的矩阵连续存储在向量处理器的片外存储器中,其中nextC为卷积核的数量。
进一步的,所述步骤2中,具体按列将所述输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中MB=q*p,M=num*MB,q为目标向量处理器的核数,p为每个核的向量处理单元VPE个数。
进一步的,所述步骤3中,所述按行抽取K行数据组成的子矩阵的总次数具体为nextH*nextW,其中:
nextH=((preH-kernelH)/stepLen+1),nextW=((preW-kernelW)/stepLen+1)
其中,nextH为输出图像数据的高度,nextW为输出图像数据的宽度,preH、preW分别为当前计算层的卷积神经网络的二维图像输入数据的图像高度、图像宽度,stepLen为步长。
进一步的,所述步骤3中,所述按行抽取K行数据组成的子矩阵的具体步骤为:
步骤3.1:令执行次数t=nextW*r0+c0,其中0<=r0<nextH,0<=c0<nextW,t的取值范围是{0,1,2,...,nextH*nextW-1};
步骤3.2:令pos=stepLen*preC*(c0+preW*r0),从所述输入特征数据矩阵的第pos行连续抽取kernelW*preC行;
步骤3.3:间隔preW*preC行,连续抽取kernelW*preC行;
步骤3.4:判断是否已经抽取K行,若不是跳转步骤3.3,若是则抽取结束。
进一步的,所述步骤4的具体步骤包括:
步骤4.1:向量处理器所述输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为K*p阶,p为每个核的向量处理单元VPE个数;
步骤4.2:向量处理器将所述卷积核数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的卷积核数据缓冲区中,每个核传入的卷积核数据矩阵规模为K*nextC阶;
步骤4.3:向量处理器的各个核的向量处理部件VPU依次从所述输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器;
步骤4.4:向量处理器的各个核的标量处理部件SPU依次从所述卷积核数据缓冲区按列读取一个卷积核数据到一个标量寄存器中,通过标量广播指令广播到一个向量寄存器,该向量寄存器与步骤4.3:得到的向量寄存器进行乘累加计算;
步骤4.5:判断是否遍历卷积核数据一列的K个元素数据,若不是,则跳转步骤4.3,且所述步骤4.3读取位置移到下一行、步骤4.4读取位置移到下一元素,若是则每个核完成该列数据计算对应的p个输出特征数据的计算,跳转步骤4.6;
步骤4.6:判断是否遍历完卷积核数据的所有nextC列数据,若不是,则跳转步骤4.3,且所述步骤4.3中读取位置回到输入特征数据缓冲区起始地址、步骤4.4读取位置移到下一列首地址;若是,则遍历完nextC列,向量处理器完成nextC*MB阶的输出特征数据的计算。
进一步的,所述步骤4.1中和/或所述步骤4.2中设置两个所述数据缓冲区,两个所述数据缓冲区中当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输。
进一步的,若向量处理器包括SIMD指令同时进行并行数据处理,还包括根据待计算图像元素的数据位数调整p值为d*p,d值表示向量处理器中的每个VPE通过SIMD指令能同时处理的图像元素数据量,p为每个核的向量处理单元VPE的个数。
与现有技术相比,本发明的优点在于:
1、本发明卷积神经网络Valid卷积的向量化实现方法,能够将复杂的多重循环Valid卷积操作转化为高效率的向量化和并行化矩阵乘法计算,而向量处理器对于矩阵乘法计算的效率最高并且非常适合向量化和并行化计算,因而能够充分发挥向量处理器的特性实现Valid卷积的向量化;
2、本发明卷积神经网络Valid卷积的向量化实现方法,通过每个核的卷积核数据通过标量存储器传输,并广播到向量处理单元计算,实现了卷积核数据的共享,可以大幅度减少计算数据的传输量,从而显著降低卷积核数据的带宽需求,同时降低了卷积核数据的传输时间,
3、本发明卷积神经网络Valid卷积的向量化实现方法,通过将每个卷积核数据扩展成向量数据后与全部的输入特征数据同时进行向量乘累加计算,可以充分发挥向量处理器的SIMD和核间并行性,大幅度提升了卷积神经网络的计算效率;
4、本发明卷积神经网络Valid卷积的向量化实现方法,通过同一样本的所有输入特征数据存储在一个列上,卷积核数据与输入特征数据的全部乘累加计算都是在同一个VPE处理单元上操作,可以避免多个处理单元之间的规约求和,提高向量处理器的整体计算效率,从而能够兼顾效率和准确度,还能够支持方便灵活设置Mini-batch大小。
附图说明
图1是向量处理器的一般结构示意图。
图2是本实施例卷积神经网络Valid卷积的向量化实现方法的流程示意图。
图3本发明在具体应用实施例中对输入特征数据集数据重排序的原理示意图。
图4是本发明具体应用实施例中执行向量化以及并行化矩阵乘法计算的原理示意图。
图5是本实施例中步骤3抽取子矩阵的详细流程示意图。
图6是本实施例中步骤4的详细流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图2所示,本实施例卷积神经网络Valid卷积的向量化实现方法的步骤包括:
步骤1:将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储,即输入特征数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其中M为数据集的总样本数目;N=preH*preW*preC为单个样本的输入特征数目;以及将卷积核的数据按照卷积核的数量维优先的方式存储;
步骤2:向量处理器按列将输入特征数据集数据矩阵划分为多个矩阵块,得到多个输入特征数据矩阵;
步骤3:向量处理器每次将卷积核数据矩阵传输到各个核的标量存储器SM中,以及将从输入特征数据矩阵中按行抽取K行数据组成的子矩阵传输到各个核的向量阵列存储器AM中,K为单个卷积核的像素数据数目;
步骤4:对各个核的标量存储器SM、向量阵列存储器AM中数据执行向量化矩阵乘法计算以及并行化矩阵乘法计算,得到输出特征数据矩阵计算结果;
步骤5:将输出特征矩阵计算结果存储向量处理器的片外存储器中;
步骤6:重复步骤3~5,直到完成全部输入特征数据矩阵计算。
本实施例通过上述方法,针对向量处理器的结构特性以及Valid卷积的特性,能够将复杂的多重循环的Valid卷积操作转化为高效率的向量化和并行化矩阵乘法计算,而向量处理器对于矩阵乘法计算的效率最高并且非常适合向量化和并行化计算,因而能够充分发挥向量处理器的特性实现Valid卷积的向量化,同时通过每个核的卷积核数据通过标量存储器传输,并广播到向量处理单元计算,实现了卷积核数据的共享,可以大幅度减少计算数据的传输量,从而显著降低卷积核数据的带宽需求,同时降低了卷积核数据的传输时间,
本实施例通过上述方法,通过将每个卷积核数据扩展成向量数据后与全部的输入特征数据同时进行向量乘累加计算,可以充分发挥向量处理器的SIMD和核间并行性,大幅度提升了卷积神经网络的计算效率,且同一样本的所有输入特征数据存储在一个列上,卷积核数据与输入特征数据的全部乘累加计算都是在同一个VPE处理单元上操作,可以避免多个处理单元之间的规约求和,提高向量处理器的整体计算效率,从而能够兼顾效率和准确度,还能够支持方便灵活设置Mini-batch大小。
本实施例中,步骤1中将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储具体包括:第一层卷积神经网络计算时,将输入特征的数据集数据重排序,使得输入特征的数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其他层计算的输入特征数据矩阵为上一层计算结果的输出特征矩阵,且是按照样本维优先的方式存储在向量处理器的片外存储器中,其中M为数据集的总样本数目,N为单个样本的输入特征数目。
由于是按照样本维优先的方式存储,本实施例上述N*M阶矩阵的每一列存储单个样本的输入特征,并且在该列的存储顺序为通道preC方向优先,接着是图像宽度preW方向优先,最后是图像高度preH方向优先。输入特征数据矩阵的元素具体表示为x[i][m],其中列坐标m表示第m+1个样本,取值范围为{0,1,2,...,M-1};行坐标i表示该样本的第i+1个输入特征值,取值范围为{0,1,2,...,preH*preW*preC-1},preH*preW为当前计算层的卷积神经网络的二维图像输入数据,preC为通道数。
在具体应用实施例(preH=2、preW=2、通道数为preC=3、总样本数为m)中,按照上述方法,图3(a)为重排序前的m个样本的输入特征数据。第一层卷积神经网络计算时按照上述步骤对输入特征的数据集数据重排序如图3所示,其中图3(a)为重排序前的m个样本的输入特征数据,图3(b)为重排序后的输入特征数据集矩阵,经过重排后输入特征数据集数据即是按照样本维优先的方式存储。
本实施例中,步骤1中将卷积核的数据按照卷积核的数量维优先的方式存储包括:将卷积核的数据按照K*nextC阶的矩阵连续存储在向量处理器的片外存储器中,其中nextC为卷积核的数量,卷积核大小为kernelH*kernelW*preC。即K*nextC阶矩阵的每一列存储单个卷积核的像素数据,并且在该列的存储顺序为通道preC方向优先,接着是卷积核宽度kernelW方向优先,最后是卷积核高度kernelH方向优先。卷积核数据矩阵的元素具体表示为w[j][c],其中列坐标c表示第c+1个卷积核,取值范围为{0,1,2,...,nextC-1},行坐标j表示该卷积核的第j+1个像素数据值,取值范围为{0,1,2,...,kernelH*kernelW*preC-1}。偏置数据列向量的元素表示为b[c],其中坐标c对应第c+1个卷积核,取值范围为{0,1,2,...,nextC-1},每个卷积核对应一个偏置数据值。
本实施例步骤2中,具体按列将输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中MB=q*p为Mini-batch大小,M=num*MB,num为正整数,q为目标向量处理器的核数,p为每个核的向量处理单元VPE个数。
在步骤2将将输入特征数据集数据矩阵划分num个N*MB阶的矩阵块后,对每个N*MB阶的矩阵块,本实施例步骤3具体向量处理器每次将K*nextC阶的卷积核数据矩阵传输到各个核的标量存储器SM中,从N*MB阶的输入特征数据集数据矩阵中按行抽取组成的K*MB阶的输入特征数据集数据的子矩阵传输到各个核的向量阵列存储器AM中,通过标、向量协作的向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,得到nextC*MB阶的输出特征数据矩阵,其中向量处理器的各个核对nextC*MB阶的输出特征数据矩阵与偏置数据列向量进行并行加法计算得到计算结果即为nextC*MB阶的输出特征矩阵。
本实施例通过将输入特征数据集数据按照样本维优先的方式存储、卷积核的数据按照卷积核的数量维优先的方式存储,将每个核的卷积核数据通过标量存储器传输,广播到向量处理单元计算,可以实现卷积核数据的共享,从而大幅度减少计算数据的传输量及传输时间。
本实施例上述将nextC*MB阶的输出特征数据矩阵与偏置数据列向量进行加法计算具体为将nextC*MB阶的输出特征矩阵的每个列向量与偏置数据列向量的每个对应元素进行加法计算。
本实施例中,从N*MB阶的输入特征数据矩阵中按行抽取的K*MB阶的输入特征数据集数据的子矩阵的总次数为nextH*nextW,其中:
nextH=((preH-kernelH)/stepLen+1),nextW=((preW-kernelW)/stepLen+1)
其中,nextH为输出图像数据的高度,nextW为输出图像数据的宽度,stepLen为卷积计算的步长。
在具体应用实施例(preH=64,preW=64,preC=3,kernelH=2,kernelW=2,stepLen=2,nextC=16)中,采用本实施例上述方法对K*nextC阶的卷积核数据矩阵与K*M阶的输入特征数据矩阵进行并行化矩阵乘法计算如图4所示,其中nextH=((preH-kernelH)/stepLen+1)=32,nextW=((preW-kernelW)/stepLen+1)=32,K=kernelH*kernelW*preC=12;q=4,p=16,d=1,MB=q*p=4*16=64,M=640000,num=M/MB=10000,实现并行化矩阵乘法计算流程包括:
向量处理器将K*M=12*640000阶的输入特征数据集数据的子矩阵按列划分为num=10000个相同大小的子块,每个子块的大小是K*MB=12*64阶矩阵;
向量处理器依次对K*nextC=12*16阶的卷积核数据矩阵与K*MB=12*64阶的输入特征数据子块矩阵进行向量化和并行化矩阵乘法计算;循环执行num=10000次,即完成K*nextC=12*16阶的卷积核数据矩阵与按行抽取组成的K*M=12*640000阶的输入特征数据集数据的子矩阵的矩阵乘法计算,得到nextC*M=16*640000阶的输出特征数据矩阵。
在Valid卷积计算过程中不需要对输入图像填充0元素,本实施例通过输入特征数据矩阵中按行抽取K*MB阶的子矩阵,通过标、向量协作的向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,即可实现Valid卷积的计算。
如图5所示,本实施例步骤3中,按行抽取K行数据组成的子矩阵的具体步骤为:
步骤3.1:令执行次数t=nextW*r0+c0,其中0<=r0<nextH,0<=c0<nextW,t的取值范围是{0,1,2,...,nextH*nextW-1};
步骤3.2:令pos=stepLen*preC*(c0+preW*r0),从输入特征数据矩阵的第pos行连续抽取kernelW*preC行;
步骤3.3:间隔preW*preC行,连续抽取kernelW*preC行;
步骤3.4:判断是否已经抽取K行,若不是跳转步骤3.3,若是则抽取结束。
如图6所示,本实施例中步骤4的具体步骤包括:
步骤4.1:向量处理器输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为K*p=12*16阶,p为每个核的向量处理单元VPE个数;
步骤4.2:向量处理器将卷积核数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的卷积核数据缓冲区中,每个核传入的卷积核数据矩阵规模为K*nextC阶=12*16阶;
步骤4.3:向量处理器的各个核的向量处理部件VPU依次从输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器;
步骤4.4:向量处理器的各个核的标量处理部件SPU依次从卷积核数据缓冲区按列读取一个卷积核数据到一个标量寄存器中,通过标量广播指令广播到一个向量寄存器,该向量寄存器与步骤4.3:得到的向量寄存器进行乘累加计算;
步骤4.5:判断是否遍历卷积核数据一列的K=12个元素数据,若不是,则跳转步骤4.3,且步骤4.3读取位置移到下一行、步骤4.4读取位置移到下一元素,若是则每个核完成该列数据计算对应的p个输出特征数据的计算,跳转步骤4.6;
步骤4.6:判断是否遍历完卷积核数据的所有nextC=16列数据,若不是,则跳转步骤4.3,且步骤4.3中读取位置回到输入特征数据缓冲区起始地址、步骤4.4读取位置移到下一列首地址;若是,则遍历完nextC=16列,向量处理器完成nextC*MB=16*64阶阶的输出特征数据的计算。
通过上述步骤即可实现Valid卷积计算,能够将复杂的多重循环的Valid卷积计算操作转化为nextH*nextW次高效率的向量化和并行化矩阵乘法计算,且计算过程中能充分发挥向量处理器的并行计算性能。
本实施例中,上述步骤4.1中、步骤4.2中具体设置两个数据缓冲区,两个数据缓冲区中当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输,使得数据传输与计算时间重叠,提升计算效率。
通过执行上述步骤1~6后,得到的输出特征数据矩阵规模为S*M阶矩阵,S=nextH*nextW*nextC为单个样本的输出特征数目,S*M阶的输出特征矩阵是按照样本维优先的方式连续存储到向量处理器的片外存储器,即S*M阶矩阵的每一列存储单个样本的输出特征,并且在该列的存储顺序为通道nextC方向优先,接着是图像宽度nextW方向优先,最后是图像高度nextH方向优先,得到的计算结果即为该层的卷积神经网络计算结果,并且计算结果的存储仍然是步骤1所要求的样本维优先的方式存储,该输出特征数据矩阵为后续层的卷积神经网络计算提供输入特征数据矩阵。输出特征数据矩阵的元素具体表示为a[j][m],其中列坐标m表示第m+1个样本,取值范围为{0,1,2,...,M-1},行坐标j表示该样本的第j+1个输出特征值,取值范围为{0,1,2,...,nextH*nextW*nextC-1}。
本实施例中,若向量处理器提供了SIMD指令同时进行并行数据处理,还包括根据待计算图像元素的数据位数,调整上述p值为d*p,相应的MB也变化为原来MB的d倍,d表示向量处理器中的每个VPE通过SIMD指令能同时处理d个图像元素数据。确定d值时,具体如64位处理器的字长为64位,若待计算图像元素的数据位数分别为64、32、16、8位,则对应的d值分别为64/64=1、64/32=2、64/16=4、64/8=8;32位处理器的字长为32位,若待计算图像元素的数据位数分别为32、16、8位,则对应的d值分别为32/32=1、32/16=2、32/8=4。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (9)
1.一种卷积神经网络Valid卷积的向量化实现方法,其特征在于,步骤包括:
步骤1:将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储,即所述输入特征数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其中M为数据集的总样本数目;N为单个样本的输入特征数目;以及将卷积核的数据按照卷积核的数量维优先的方式存储;
步骤2:向量处理器按列将所述输入特征数据集数据矩阵划分为多个矩阵块,得到多个输入特征数据矩阵;
步骤3:向量处理器每次将所述卷积核数据矩阵传输到各个核的标量存储器SM中,以及将从所述输入特征数据矩阵中按行抽取K行数据组成的子矩阵传输到各个核的向量阵列存储器AM中,K为单个卷积核的像素数据数目;
步骤4:对各个核的标量存储器SM、向量阵列存储器AM中数据执行向量化矩阵乘法计算以及并行化矩阵乘法计算,得到输出特征数据矩阵计算结果;
步骤5:将所述输出特征矩阵计算结果存储在向量处理器的片外存储器中;
步骤6:重复步骤3~5,直到完成全部输入特征数据矩阵计算。
2.根据权利要求1所述的卷积神经网络Valid卷积的向量化实现方法,其特征在于,所述步骤1中将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储包括:第一层卷积神经网络计算时,将输入特征的数据集数据重排序,使得输入特征的数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其他层计算的输入特征数据矩阵为上一层计算结果的输出特征矩阵,且是按照样本维优先的方式存储在向量处理器的片外存储器中,其中M为数据集的总样本数目,N为单个样本的输入特征数目。
3.根据权利要求2所述的卷积神经网络Valid卷积的向量化实现方法,其特征在于,所述步骤1中将卷积核的数据按照卷积核的数量维优先的方式存储包括:将卷积核的数据按照K*nextC阶的矩阵连续存储在向量处理器的片外存储器中,其中nextC为卷积核的数量。
4.根据权利要求3所述的卷积神经网络Valid卷积的向量化实现方法,其特征在于,所述步骤2中,具体按列将所述输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中MB=q*p,M=num*MB,q为目标向量处理器的核数,p为每个核的向量处理单元VPE个数。
5.根据权利要求1~4中任意一项所述的卷积神经网络Valid卷积的向量化实现方法,其特征在于,所述步骤3中,所述按行抽取K行数据组成的子矩阵的总次数具体为nextH*nextW,其中:
nextH=((preH-kernelH)/stepLen+1),nextW=((preW-kernelW)/stepLen+1)
其中,nextH为输出图像数据的高度,nextW为输出图像数据的宽度,preH、preW分别为当前计算层的卷积神经网络的二维图像输入数据的图像高度、图像宽度,stepLen为步长。
6.根据权利要求1~4中任意一项所述的卷积神经网络Valid卷积的向量化实现方法,其特征在于,所述步骤3中,所述按行抽取K行数据组成的子矩阵的具体步骤为:
步骤3.1:令执行次数t=nextW*r0+c0,其中0<=r0<nextH,0<=c0<nextW,t的取值范围是{0,1,2,...,nextH*nextW-1};
步骤3.2:令pos=stepLen*preC*(c0+preW*r0),从所述输入特征数据矩阵的第pos行连续抽取kernelW*preC行;
步骤3.3:间隔preW*preC行,连续抽取kernelW*preC行;
步骤3.4:判断是否已经抽取K行,若不是跳转步骤3.3,若是则抽取结束。
7.根据权利要求1~4中任意一项所述的卷积神经网络Valid卷积的向量化实现方法,其特征在于,所述步骤4的具体步骤包括:
步骤4.1:向量处理器所述输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为K*p阶,p为每个核的向量处理单元VPE个数;
步骤4.2:向量处理器将所述卷积核数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的卷积核数据缓冲区中,每个核传入的卷积核数据矩阵规模为K*nextC阶;
步骤4.3:向量处理器的各个核的向量处理部件VPU依次从所述输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器;
步骤4.4:向量处理器的各个核的标量处理部件SPU依次从所述卷积核数据缓冲区按列读取一个卷积核数据到一个标量寄存器中,通过标量广播指令广播到一个向量寄存器,该向量寄存器与步骤4.3:得到的向量寄存器进行乘累加计算;
步骤4.5:判断是否遍历卷积核数据一列的K个元素数据,若不是,则跳转步骤4.3,且所述步骤4.3读取位置移到下一行、步骤4.4读取位置移到下一元素,若是则每个核完成该列数据计算对应的p个输出特征数据的计算,跳转步骤4.6;
步骤4.6:判断是否遍历完卷积核数据的所有nextC列数据,若不是,则跳转步骤4.3,且所述步骤4.3中读取位置回到输入特征数据缓冲区起始地址、步骤4.4读取位置移到下一列首地址;若是,则遍历完nextC列,向量处理器完成nextC*MB阶的输出特征数据的计算。
8.根据权利要求7所述的卷积神经网络Valid卷积的向量化实现方法,其特征在于,所述步骤4.1中和/或所述步骤4.2中设置两个所述数据缓冲区,两个所述数据缓冲区中当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输。
9.根据权利要求1~4中任意一项所述的卷积神经网络Valid卷积的向量化实现方法,其特征在于,若向量处理器包括SIMD指令同时进行并行数据处理,还包括根据待计算图像元素的数据位数调整p值为d*p,d值表示向量处理器中的每个VPE通过SIMD指令能同时处理的图像元素数据量,p为每个核的向量处理单元VPE的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911000691.4A CN110796235B (zh) | 2019-10-21 | 2019-10-21 | 卷积神经网络Valid卷积的向量化实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911000691.4A CN110796235B (zh) | 2019-10-21 | 2019-10-21 | 卷积神经网络Valid卷积的向量化实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110796235A true CN110796235A (zh) | 2020-02-14 |
CN110796235B CN110796235B (zh) | 2022-03-18 |
Family
ID=69439507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911000691.4A Active CN110796235B (zh) | 2019-10-21 | 2019-10-21 | 卷积神经网络Valid卷积的向量化实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110796235B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111340224A (zh) * | 2020-02-27 | 2020-06-26 | 杭州雄迈集成电路技术股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN112465932A (zh) * | 2020-12-10 | 2021-03-09 | 上海眼控科技股份有限公司 | 一种图像填充方法、装置、设备及存储介质 |
CN113344172A (zh) * | 2020-02-18 | 2021-09-03 | 脸谱公司 | 将卷积映射到通道卷积引擎 |
CN114202071A (zh) * | 2022-02-17 | 2022-03-18 | 浙江光珀智能科技有限公司 | 一种基于数据流模式的深度卷积神经网络推理加速方法 |
CN114281755A (zh) * | 2021-12-30 | 2022-04-05 | 中国人民解放军国防科技大学 | 一种面向向量处理器的半精度向量化卷积方法及系统 |
CN114330669A (zh) * | 2021-12-30 | 2022-04-12 | 中国人民解放军国防科技大学 | 一种面向向量处理器的半精度向量化conv1×1卷积方法及系统 |
CN115114575A (zh) * | 2022-08-30 | 2022-09-27 | 中国人民解放军国防科技大学 | 面向向量处理器的图像到矩阵行转换方法、装置及介质 |
CN116126750A (zh) * | 2023-02-24 | 2023-05-16 | 之江实验室 | 一种基于硬件特性的数据处理的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106970896A (zh) * | 2017-03-30 | 2017-07-21 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
CN108985450A (zh) * | 2018-06-28 | 2018-12-11 | 中国人民解放军国防科技大学 | 面向向量处理器的卷积神经网络运算向量化方法 |
-
2019
- 2019-10-21 CN CN201911000691.4A patent/CN110796235B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106970896A (zh) * | 2017-03-30 | 2017-07-21 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
CN108985450A (zh) * | 2018-06-28 | 2018-12-11 | 中国人民解放军国防科技大学 | 面向向量处理器的卷积神经网络运算向量化方法 |
Non-Patent Citations (2)
Title |
---|
JIMMY SJ. REN,LI XU: "On Vectorization of Deep Convolutional Neural Networks for Vision Tasks", 《PROCEEDINGS OF THE TWENTY-NINTH AAAI CONFERENCE ON ARTIFICIAL INTELLIGENCE》 * |
张军阳,郭阳: "二维矩阵卷积在向量处理器中的设计与实现", 《国防科技大学学报》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113344172A (zh) * | 2020-02-18 | 2021-09-03 | 脸谱公司 | 将卷积映射到通道卷积引擎 |
CN111340224A (zh) * | 2020-02-27 | 2020-06-26 | 杭州雄迈集成电路技术股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN111340224B (zh) * | 2020-02-27 | 2023-11-21 | 浙江芯劢微电子股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN112465932A (zh) * | 2020-12-10 | 2021-03-09 | 上海眼控科技股份有限公司 | 一种图像填充方法、装置、设备及存储介质 |
CN114281755A (zh) * | 2021-12-30 | 2022-04-05 | 中国人民解放军国防科技大学 | 一种面向向量处理器的半精度向量化卷积方法及系统 |
CN114330669A (zh) * | 2021-12-30 | 2022-04-12 | 中国人民解放军国防科技大学 | 一种面向向量处理器的半精度向量化conv1×1卷积方法及系统 |
CN114202071A (zh) * | 2022-02-17 | 2022-03-18 | 浙江光珀智能科技有限公司 | 一种基于数据流模式的深度卷积神经网络推理加速方法 |
CN114202071B (zh) * | 2022-02-17 | 2022-05-27 | 浙江光珀智能科技有限公司 | 一种基于数据流模式的深度卷积神经网络推理加速方法 |
CN115114575A (zh) * | 2022-08-30 | 2022-09-27 | 中国人民解放军国防科技大学 | 面向向量处理器的图像到矩阵行转换方法、装置及介质 |
CN115114575B (zh) * | 2022-08-30 | 2023-01-31 | 中国人民解放军国防科技大学 | 面向向量处理器的图像到矩阵行转换方法、装置及介质 |
CN116126750A (zh) * | 2023-02-24 | 2023-05-16 | 之江实验室 | 一种基于硬件特性的数据处理的方法及装置 |
CN116126750B (zh) * | 2023-02-24 | 2023-08-22 | 之江实验室 | 一种基于硬件特性的数据处理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110796235B (zh) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110796235B (zh) | 卷积神经网络Valid卷积的向量化实现方法 | |
CN110807170A (zh) | 多样本多通道卷积神经网络Same卷积向量化实现方法 | |
CN110796236B (zh) | 多样本多通道卷积神经网络池化的向量化实现方法 | |
CN110073359B (zh) | 用于卷积神经网络的有效数据布局 | |
TW201913460A (zh) | 芯片裝置及相關産品 | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
CN106846235B (zh) | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 | |
CN111461311B (zh) | 基于众核处理器的卷积神经网络运算加速方法及装置 | |
TW202215304A (zh) | 用於分層權重稀疏卷積處理之方法和系統 | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
US20240265234A1 (en) | Digital Processing Circuits and Methods of Matrix Operations in an Artificially Intelligent Environment | |
US11709911B2 (en) | Energy-efficient memory systems and methods | |
CN117273101B (zh) | 用于均衡权重稀疏卷积处理的方法及系统 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN112703511B (zh) | 运算加速器和数据处理方法 | |
US11481994B2 (en) | Method and apparatus for extracting image data in parallel from multiple convolution windows, device, and computer-readable storage medium | |
CN111381968A (zh) | 一种高效运行深度学习任务的卷积运算优化方法及系统 | |
CN112395092A (zh) | 数据处理方法及人工智能处理器 | |
CN110766157B (zh) | 多样本神经网络前向传播向量化实现方法 | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
CN117035028A (zh) | 一种基于fpga的卷积加速器高效计算方法 | |
EP3757821A1 (en) | Apparatus and method for transforming matrix, and dataprocessing system | |
CN111191774B (zh) | 面向精简卷积神经网络的低代价加速器架构及其处理方法 | |
CN112149794A (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 |