面向向量处理器的卷积神经网络运算向量化方法技术

技术编号:19746453 阅读:39 留言:0更新日期:2018-12-12 04:56
本发明专利技术公开一种面向向量处理器的卷积神经网络运算向量化方法,步骤包括:S1.将向量存储器的L1D设置为SRAM方式,并划分为两个缓冲区;S2.依次将输入特征数据传入到两个缓冲区中;S3.依次将卷积核数据传入到向量存储器的向量阵列中;S4.依次开启两个缓冲区的计算,每个缓冲区计算时依次选取一个移动卷积运算窗口进行卷积运算,每个移动卷积运算窗口进行运算时,依次读取一个输入特征数据并扩展为向量数据,各卷积核分别与扩展得到的向量数据进行乘累加;S5.由向量处理部件将卷积计算结果传输到片外存储中;S6.循环执行步骤S2~S5。本发明专利技术具有实现方法简单、处理器的并行性以及计算效率高等优点。

【技术实现步骤摘要】
面向向量处理器的卷积神经网络运算向量化方法
本专利技术涉及基于卷积神经网络的深度学习
,尤其涉及一种面向向量处理器的卷积神经网络运算向量化方法。
技术介绍
目前基于卷积神经网络(ConvolutionalNeuralNetworks,CNN)的深度学习模型在图像识别和分类、机器翻译、文本自动处理、语音识别、自动驾驶、视频分析等各个方面均取得了令人瞩目的成就,成为各领域的研究热点。卷积神经网络是一种深度前馈神经网络,通常由若干个卷积层、激活层和池化层交替组成,其中卷积层通过卷积核与输入特征做卷积运算进行特征提取,从而学习到各个分级的特征。卷积神经网络计算中卷积层计算占据整个网络结构90%的计算量,因而优化和加速卷积层计算成为提升卷积神经网络计算性能的关键。为了提高卷积神经网络的性能,当前不断的提出越来越深和复杂的网络结构,典型的如LeNet,AlexNet,VGGNet,GoogleNet等,但是随着网络规模的不断扩大,网络参数的规模也越来越大,相应的大规模的卷积神经网络计算对处理器的处理性能和数据存储带宽也越来越高。目前业界普遍是采用高性能GPU来满足卷积神经网络计算要求,甚至通过设计专用的卷积神经网络处理器来加速卷积神经网络计算,但是高性能GPU的计算性能有限,实现卷积神经网络计算效率仍有待提高,尤其是无法满足大规模卷积神经网络的计算性能要求,而设计专用的卷积神经网络处理器成本高,实现复杂。向量处理器是一种新颖的体系结构,在保持较低功耗的同时,具有强大的计算能力,适合加速卷积神经网络计算。向量处理器通常包括标量处理部件(ScalarProcessingUnit,SPU)和向量处理部件(VectorProcessingUnit,VPU),SPU负责标量任务计算和流控,VPU负责向量计算,提供主要的计算能力,包括若干向量处理单元(VectorProcessingElement,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中从所述移动卷积运算窗口中具体按照特征数据优先本文档来自技高网
...

【技术保护点】
1.一种面向向量处理器的卷积神经网络运算向量化方法,其特征在于,步骤包括:S1.将向量存储器的标量存储L1D设置为SRAM方式,并根据向量处理器的体系结构特征参数、输入特征参数和卷积核参数将L1D划分为两个缓冲区以存储输入特征数据;S2.依次将输入特征数据传入到L1D的两个缓冲区中;S3.依次将卷积核数据传入到向量存储器的向量阵列中进行存储;S4.依次开启L1D中两个缓冲区的计算,每个缓冲区计算时从缓冲区中依次选取一个移动卷积运算窗口与向量阵列中存储的所述卷积核数据进行卷积运算,每个所述移动卷积运算窗口进行运算时,依次读取一个输入特征数据并扩展为向量数据,各卷积核分别从向量阵列中读取对应的所述卷积核数据后与扩展得到的向量数据进行乘累加;S5.由向量处理部件将得到的卷积计算结果传输到片外存储中;S6.循环执行步骤S2~S5,直至完成所有输入特征数据的卷积运算。

【技术特征摘要】
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时...

【专利技术属性】
技术研发人员:刘仲田希陈海燕郭阳扈啸孙永节陈跃跃王丽萍
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南,43

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

1