一种基于向量处理器的矩阵卷积向量化实现方法与流程

文档序号:16401871发布日期:2018-12-25 20:10阅读:340来源:国知局
一种基于向量处理器的矩阵卷积向量化实现方法与流程

本发明涉及基于卷积神经网络的深度学习技术领域,尤其涉及一种基于向量处理器的矩阵卷积向量化实现方法。

背景技术

随着深度学习技术的兴起,基于卷积神经网络的目标识别技术在图像识别、语音识别、自然语言处理等领域均有广泛的使用。矩阵卷积是一种计算密集型和访存密集型计算,而卷积神经网络模型中的矩阵卷积运算往往占据一个卷积神经网络模型计算量的85%以上,因此如何加速矩阵卷积运算是当前研究的一个重点和难点。

随着高密度大型线性方程组的求解、高清视频编解码、4g通信、数字图像处理等高密集、实时运算应用的不断涌现,计算机的体系结构出现了显著的变化,一些新型体系结构不断涌现,如gpu的众核体系结构、异构多核体系结构和向量处理器体系结构等,这些新型的体系结构在单芯片上集成了多个处理器核,每个核上包含丰富的处理部件,进而大幅度提高了芯片的计算性能。向量处理器就是其中的一种新型的体系结构,如图1所示,其一般包括向量处理器单元(vpu)和标量处理单元(spu),向量处理部件中通常包含多个并行的向量处理单元(vpe),vpe之间可以通过规约和混洗进行数据交互,所有的vpe基于simd执行同样的操作。

矩阵卷积是卷积神经网络模型中常用的核心模块之一,其不仅是计算密集且访存密集,由于矩阵卷积计算中卷积核的规模一般比较小,因此若不能采取合理的计算方法,即使使用高性能的计算设备也难以发挥出应有的计算优势。具体来说,二维及多维矩阵卷积常用于图像处理中,若给定一个二维输入图像:

xij(1≤i≤m,1≤j≤n)和滤波器fij(1≤i≤m,1≤j≤n),一般m<m,n<n,则卷积的输出结果计算公式为:由该计算公式可知,二维矩阵卷积计算的是一个卷积滤波尺寸内的点乘求和的结果,而在存储体中数据一般是按照一维连续存储的,向量处理器在加载数据的时候是地址连续加载数据,因此目前矩阵卷积的方式难以发挥出向量处理器的并行性。



技术实现要素:

本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、并行性好、卷积以及处理器的计算效率高的基于向量处理器的矩阵卷积向量化实现方法,能够实现多维矩阵卷积计算的并行向量化,可提高向量处理器并行性、能提高处理器运算效率。

为解决上述技术问题,本发明提出的技术方案为:

一种基于向量处理器的矩阵卷积向量化实现方法,其特征在于,该方法包括:将卷积核数据进行按行展开的重排序,并将重排后的卷积核数据放置在向量处理器的核内存储体中,各向量处理单元vpe并行进行卷积计算,每个向量处理单元vpe独立的计算单个的输出特征图,各向量处理单元vpe每次计算时,将输入数据的一个元素广播至向量处理器中各向量处理单元vpe,同时从所述核内存储体中加载指定行的多个卷积核数据并与广播的元素进行乘累加计算,其中输入数据和计算过程中的中间计算结果放置在核外ddr。

作为本发明的进一步改进,该方法的步骤为:

s1.确定每次可以同时计算的输出特征图的数量p;

s2.将输入特征图置入向量处理器的核外ddr中,将m个卷积核矩阵按行展开成列模式,得到重排后的卷积核矩阵并置入向量处理器的核内am中,m为向量处理单元vpe的数量;

s3.每次广播核内am的输入特征图的一个元素至各向量处理单元vpe,同时从核内am中加载m个卷积核数据与广播的元素进行对应乘累加计算,直至完成n个输出特征图的计算,n为卷积核的数量。

作为本发明的进一步改进:所述步骤s1中具体根据向量处理器中向量处理单元vpe的数量m、卷积核的数量n、移动步长s以及卷积核的规模k×k,确定每次可以同时计算的输出特征图的数量p。

作为本发明的进一步改进:所述步骤s2中具体将m个卷积核中各个单核按行展开成列模式,即m个k×k规模的卷积核展开成k2行、m列的矩阵,使得m个k×k的卷积核按行排成一个k2×m的卷积核矩阵。

作为本发明的进一步改进,所述步骤s3的具体步骤为:

s31.取输入特征图的一个卷积核窗口;

s32.在当前卷积核窗口内取第一个元素广播至各向量处理单元vpe,同时加载m个卷积核元素,对应相乘并累加到向量累加寄存器中;

s33.重复执行步骤s32,直至完成当前卷积核窗口内各元素的计算,并行输出m个输出特征图的第一个结果元素;

s34.顺移至输入特征图的下一个卷积核窗口,同时将卷积核的加载地址复位至起始地址,返回执行步骤s32,直至完成n个输出特征图的计算。

作为本发明的进一步改进:所述卷积核窗口大小按照卷积核规模k×k进行设定。

作为本发明的进一步改进:所述步骤s32具体重复步骤s32k2次,即循环执行k×k次,完成当前卷积核窗口的计算。

作为本发明的进一步改进:所述步骤s34中具体按照移动步长s顺移卷积核窗口,即水平移动s个元素,顺移时按照先水平后垂直的顺序移动。

作为本发明的进一步改进:具体通过重复执行步骤s32~s34n/m次,以完成n个输出特征图的计算。

与现有技术相比,本发明的优点在于:

1)本发明基于向量处理器的矩阵卷积向量化实现方法,通过将卷积神经网络中的卷积核数据进行重排序,将重复使用率较高的重排后的卷积核数据放置在核内存储体,将输入数据和每层中间结果放置在核外ddr,使用广播的方式对多核处理器的所有核广播输入元素,可以将不易并行的多维矩阵卷积计算转换成易于并行的向量化操作,能够在降低卷积神经网络计算时间的同时,大大提高了向量处理器的计算效率。

2)本发明基于向量处理器的矩阵卷积向量化实现方法,进一步依据向量处理器的体系结构特点和卷积核的数量和规模,确定最优的多输出特征图的实现方式,有效地提高了向量处理器的计算访存比,将复用次数较多的卷积核按行展开置于核内am中,避免了卷积核数据的重复访问,同时可以100%的利用向量处理器的向量处理单元vpe,每个pe独立的计算单个的输出特征图,避免了常规计算中的vpes之间的数据交互,使得卷积的计算得以高效实现,实现简单,操作方便,能够充分挖掘向量处理器的指令、数据、任务等各个层次的并行性,从而充分发挥多mac运算部件向量处理器所具有的高性能计算能力的优点。

附图说明

图1是向量处理器的一般结构示意图。

图2是本实施例基于向量处理器的矩阵卷积向量化实现方法的实现流程示意图。

图3是本实施例单个k×k规模的卷积核按行展开的实现原理示意图。

图4是本实施例n个3×3的卷积核展开成9×n的卷积核矩阵的实现原理示意图。

图5是本实施例输入特征图矩阵按行展开的实现原理示意图。

具体实施方式

以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。

本发明基于向量处理器的矩阵卷积向量化实现方法包括:将卷积核数据进行按行展开的重排序,并将重排后的卷积核数据放置在向量处理器的核内存储体中,各向量处理单元vpe并行进行卷积计算,每个向量处理单元vpe独立的计算单个的输出特征图,各向量处理单元vpe每次计算时,将输入数据的一个元素广播至向量处理器中各向量处理单元vpe,同时从核内存储体中加载指定行的多个卷积核数据并与广播的元素进行乘累加计算,其中输入数据和计算过程中的中间计算结果放置在核外ddr。

本发明上述方法,通过将卷积神经网络中的卷积核数据进行重排序,将重复使用率较高的重排后的卷积核数据放置在核内存储体,将输入数据和每层中间结果放置在核外ddr,使用广播的方式对多核处理器的所有核广播输入元素,可以将不易并行的多维矩阵卷积计算转换成易于并行的向量化操作,能够在降低卷积神经网络计算时间的同时,大大提高了向量处理器的计算效率。

如图2所示,本实施例基于向量处理器的矩阵卷积向量化实现方法的具体步骤为:

s1.确定每次可以同时计算的输出特征图的数量p;

s2.将输入特征图置入向量处理器的核外ddr中,将m个卷积核矩阵按行展开成列模式,得到重排后的卷积核矩阵并置入向量处理器的核内am中,m为向量处理单元vpe的数量;

s3.每次广播核内am的输入特征图的一个元素至各向量处理单元vpe,同时从核内am中加载m个卷积核数据与广播的元素进行对应乘累加计算,直至完成n个输出特征图的计算,n为卷积核的数量。

由于当前卷积神经网络模型中,卷积核的尺寸一般为方阵,本实施例中取卷积核的规模为k×k,即长等于高;输入数据可以是单/双精度图像数据或者经过激活函数处理后的单/双精度浮点值或者8/16位定点值。

本实施例中,步骤s1中具体根据向量处理器中向量处理单元vpe的数量m、卷积核的数量n、移动步长s以及卷积核的规模k×k,确定每次可以同时计算的输出特征图的数量p。vpe的数量m为每次计算得出的输出特征图的数量,即m=p,且一般n为m的整数倍,在实际的计算过程中,若n不为m的整数倍,则多余的输出特征图单独进行处理。

本实施例中,步骤s2中将m个卷积核矩阵进行重排时,具体将m个卷积核中各个单核按行展开成列模式,即m个k×k规模的卷积核展开成k2行、m列的矩阵,使得m个k×k的卷积核按行排成一个k2×m的卷积核矩阵。单个k×k规模的卷积核按行展开如图3所示,将卷积核数据按行展开为一列,将n个3×3的卷积核展开成9×n的卷积核矩阵如图4所示。

本实施例中,步骤s3的具体步骤为:

s31.取输入特征图的一个卷积核窗口;

s32.在当前卷积核窗口内取第一个元素广播至各向量处理单元vpe,同时加载m个卷积核元素,对应相乘并累加到向量累加寄存器中;

s33.重复执行步骤s32k2次,直至完成当前卷积核窗口内各元素的计算,并行输出m个输出特征图的第一个结果元素;

s34.顺移至输入特征图的下一个卷积核窗口,同时将卷积核的加载地址复位至起始地址,返回执行步骤s32,重复执行步骤s32~s34n/m次,完成n个输出特征图的计算。

本实施例中,卷积核窗口大小具体按照卷积核规模k×k进行设定,即卷积核窗口大小设定为k×k,。

本实施例中,步骤s34中具体按照移动步长s顺移卷积核窗口,即水平移动s个元素,一般移动步长为1、2或3,且设定水平步长与垂直步长相同,顺移时按照先水平后垂直的顺序移动。本实施例输入特征图按行展开如图5所示,即ddr中输入特征图每次取一个与k×k对应大小的卷积核窗口,且该窗口根据移动步长先水平移动,后垂直移动,移动顺序为从左到右、从上到下,从左上角开始按行取数,循环k×k次之后,水平移动s个元素,后续按同样的方式进行取数。

本实施例上述方法,能够依据向量处理器的体系结构特点和卷积核的数量和规模,确定最优的多输出特征图的实现方式,有效地提高了向量处理器的计算访存比,将复用次数较多的卷积核按行展开置于核内am中,避免了卷积核数据的重复访问,同时可以100%的利用向量处理器的向量处理单元vpe,每个pe独立的计算单个的输出特征图,避免了常规计算中的vpes之间的数据交互,使得卷积的计算得以高效实现,实现简单,操作方便,能够充分挖掘向量处理器的指令、数据、任务等各个层次的并行性,从而充分发挥多mac运算部件向量处理器所具有的高性能计算能力的优点。

在具体应用实施例中,本发明基于向量处理器的矩阵卷积向量化实现方法的具体流程为:

(1)首先依据向量处理器中向量处理单元vpe的数量m、卷积核的数量n,卷积核的规模k×k,移动步长s,确定向量处理器可以同时计算出的输出特征图的数量p,其中取m为16、n取16、k取3、s取1,因此确定p=16,即可以同时计算得出16个输出特征图;

(2)将16个3×3的卷积核矩阵,毎个独立的卷积核按行展开成列模式组成9行16列的卷积核矩阵;

(3)将输入特征图置入向量处理器的ddr中,将步骤(2)中组成的卷积核矩阵由dma传输置核内am中;

(4)取输入特征图对应3×3的小方框(卷积核窗口),取第一个元素并广播至16个vpe中,同时使用向量指令从am中加载16个卷积核矩阵的第一行的16个元素,使用乘加指令完成输入特征图第一个元素与16个卷积核元素相乘并累加至向量寄存器中;

(5)重复步骤(4)9次,同时完成16个输出特征图第一个输出元素的计算;

(6)将步骤(4)中输入特征图上的小方框按行移动1个步长,同时将am中的卷积核矩阵的加载地址复位至起始地址;

(7)重复步骤(4)-(6)直至完成整个16幅输出特征图的计算。

上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1