首页 / 专利库 / 电脑零配件 / 重排序缓冲区 / 多样本神经网络前向传播向量化实现方法

多样本神经网络前向传播向量化实现方法

阅读:226发布:2020-05-15

专利汇可以提供多样本神经网络前向传播向量化实现方法专利检索,专利查询,专利分析的服务。并且本 发明 公开一种多样本神经网络前向传播向量化实现方法,步骤包括:步骤1:将输入特征数据按照样本维优先的方式存储,以及将权重数据按照输入特征维优先的方式存储;步骤2:按列将输入特征数据集数据矩阵划分为多个矩阵 块 ;步骤3:将权重数据矩阵传输到各个核的SM中,并将每个输入特征数据矩阵传输到各个核的AM中,通过向量化矩阵乘法和并行化矩阵乘法计算;步骤4:各个核将输出特征矩阵与偏置数据列向量进行并行加法计算;步骤5:将输出特征矩阵计算结果存储在 向量处理 器的片外 存储器 中;步骤6:重复步骤3至5,直到完成计算。本发明具有实现方法简单、能够充分发挥向量处理器计算性能且实现效率高、带宽需求小以及通用性强等优点。,下面是多样本神经网络前向传播向量化实现方法专利的具体信息内容。

1.一种多样本神经网络前向传播向量化实现方法,其特征在于,步骤包括:
步骤1:将神经网络计算的输入特征数据按照样本维优先的方式存储,以及将权重数据按照输入特征维优先的方式存储;
步骤2:向量处理器按列将所述输入特征数据集数据矩阵划分为多个矩阵,得到多个输入特征数据矩阵;
步骤3:向量处理器将所述权重数据矩阵传输到各个核的标量存储器SM中,并将所述步骤S2划分的每个输入特征数据矩阵传输到各个核的向量阵列存储器AM中,通过执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,得到输出特征数据矩阵;
步骤4:向量处理器的各个核将步骤3得到的所述输出特征矩阵与偏置数据列向量进行并行加法计算,得到输出特征矩阵计算结果;
步骤5:将步骤4得到的所述输出特征矩阵计算结果存储在向量处理器的片外存储器中;
步骤6:重复步骤3至5,直到完成全部输入特征数据矩阵计算。
2.根据权利要求1所述的多样本神经网络前向传播向量化实现方法,其特征在于,所述步骤1中将神经网络计算的输入特征数据按照样本维优先的方式存储具体为:输入特征数据集按照N*M阶的矩阵连续存储在向量处理器的片外存储器,M为数据集的总样本数目,N为输入特征数目;将权重数据按照输入特征维优先的方式存储具体为将权重数据重排序后,按照K*N阶的矩阵连续存储在向量处理器的片外存储器,得到权重数据矩阵,其中K为输出特征数目。
3.根据权利要求2所述的多样本神经网络前向传播向量化实现方法,其特征在于,所述步骤2中具体将所述输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中M=num*MB,MB=q*p,q为目标向量处理器的核数,p为每个核的向量处理单元VPE个数。
4.根据权利要求3所述的多样本神经网络前向传播向量化实现方法,其特征在于,所述步骤3中执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算的具体步骤包括:
步骤3.1:向量处理器将N*MB阶的所述输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为N*p阶;
步骤3.2:向量处理器将K*N阶的所述权重数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的权重数据缓冲区中,每个核传入的权重数据矩阵规模为K*N阶;
步骤3.3:向量处理器的各个核的向量处理部件VPU依次从所述输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器;
步骤3.4:向量处理器的各个核的标量处理部件SPU依次从所述权重数据缓冲区按行读取一个权重数据到一个标量寄存器中,通过标量广播指令广播到一个向量寄存器,该向量寄存器与步骤3.3得到的向量寄存器进行乘累加计算;
步骤3.5:判断是否遍历所述权重数据矩阵一行的N个元素数据,若不是则跳转至步骤
3.3,且步骤3.3中读取位置移到下一行、步骤3.4中读取位置移到下一元素;若是则每个核完成该行数据计算对应的p个输出特征数据的计算,跳转步骤3.6;
步骤3.6:判断是否遍历完所述权重数据矩阵的所有K行数据,若不是则跳转至步骤
3.3,且步骤3.3中读取位置回到输入特征数据缓冲区起始地址、步骤3.4中读取位置移到下一行首地址;若是则遍历完K行,向量处理器完成K*MB阶的输出特征数据的计算。
5.根据权利要求4所述的多样本神经网络前向传播向量化实现方法,其特征在于,上述所述步骤3.1中输入特征数据缓冲区和/或所述步骤3.2中权重数据缓冲区设置有两个,当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输。
6.根据权利要求2~5中任意一项所述的多样本神经网络前向传播向量化实现方法,其特征在于,所述步骤4的具体步骤包括:将步骤3得到的K*MB阶的所述输出特征矩阵的每个列向量与所述偏置数据列向量的每个对应元素进行加法计算,得到K*MB阶的输出特征矩阵计算结果。
7.根据权利要求1~5中任意一项所述的多样本神经网络前向传播向量化实现方法,其特征在于,所述步骤5中,具体将所述输出特征矩阵计算结果按照样本维优先的方式存储在向量处理器的片外存储器中。
8.根据权利要求1~5中任意一项所述的多样本神经网络前向传播向量化实现方法,其特征在于,若向量处理器包括SIMD指令同时进行并行数据处理,还包括根据待计算图像元素的数据位数调整每个核的向量处理单元VPE个数p值为d*p,其中d表示向量处理器中的每个VPE通过SIMD指令能同时处理的图像元素数据数量。
9.根据权利要求1~5中任意一项所述的多样本神经网络前向传播向量化实现方法,其特征在于,所述步骤3、步骤4并行执行。

说明书全文

多样本神经网络前向传播向量化实现方法

技术领域

[0001] 本发明涉及向量处理器技术领域,尤其涉及一种多样本神经网络前向传播向量化实现方法。

背景技术

[0002] 近年来基于神经网络的深度学习模型在图像识别和分类、自然语言处理语音识别、自动驾驶、视频分析、在线广告、推荐购物等各个方面取得了令人瞩目的成就,成为学术界和工业界的研究热点,并且促进了人工智能、大数据处理、处理器等相关技术的快速发展。通常神经网络(Neural Networks)包括输入层、若干隐藏层输出层,输入层包含了神经网络的输入,输出层负责产生神经网络的预测值。通过监督学习训练一个神经网络时,训练集中包含了输入数据以及目标的输出值,而中间的隐藏层的信息是不确定的,需要通过训练学习获得,训练集的规模以及训练学习效率、方法都会得到不同的隐藏层数据。隐藏层的权重、层数、每层的神经元数目等数据则直接决定了该神经网络模型的计算性能和效率,因此隐藏层的计算,尤其是卷积层计算,对处理器计算要求很高。
[0003] 神经网络计算采用较多的是基于梯度下降(Gradient Descent)的优化算法,主要包括随机梯度下降法(Stochastic Gradient Descent)、批梯度下降法(Batch Gradient Descent)、小批梯度下降法(Mini-batch Gradient Descent),其中随机梯度下降法针对单个样本的数据计算梯度方向,准确度低、不易收敛,而批梯度下降法是针对所有样本的数据计算求解梯度的方向,在样本数量很多时效率低下,小批梯度下降法则是将所有样本划分为若干个子样本集,每次针对一个子样本集求解梯度的方向,兼顾了效率和准确度,而且还可以根据处理平台设置不同的Mini-batch大小,是目前主要的优化算法
[0004] 随着神经网络规模的不断扩大,神经网络参数规模以及训练数据集也越来越大,大规模的神经网络计算对处理器的处理性能和数据存储带宽也越来越高。目前业界广泛是采用高性能GPU,甚至设计专用的神经网络处理器来加速神经网络计算。
[0005] 向量处理器是一种新颖的体系结构,在保持较低功耗的同时,具有强大的计算能,适合加速神经网络计算。如图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)以及标、向量共享的片外存储器。
[0006] 针对向量处理器的体系结构特点,目前存在各种卷积计算的向量化实现方法,如中国专利申请201810687639.X公开的一种向量处理器的卷积神经网络运算向量化方法、专利申请201810689646.3公开的一种面向GPDSP的卷积神经网络多核并行计算方法、专利申请201710201589.5公开的一种面向向量处理器的二维矩阵卷积的向量化实现方法等,但是上述方案都是采用将权重数据加载到向量阵列存储器AM中,将输入图像特征数据加载到向量阵列存储器的标量存储SM中来完成卷积计算的方式,且大多是采用按照第三维顺序对数据进行重排序,因而要实现神经网络前向传播向量化,则会存在以下问题:
[0007] 1、不能有效共享权重数据,会浪费存储带宽,而不能充分发挥向量处理器计算效率。
[0008] 2、由于第三维的大小不确定,与向量处理器的处理单元数量不匹配,且不同卷积神经网络模型、不同卷积层的第三维大小各异,上述各类方案的加载数据效率会大受影响,且不具有通用性。

发明内容

[0009] 本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、能够充分发挥向量处理器计算性能且实现效率高、带宽需求小以及通用性强的多样本神经网络前向传播向量化实现方法。
[0010] 为解决上述技术问题,本发明提出的技术方案为:
[0011] 一种多样本神经网络前向传播向量化实现方法,步骤包括:
[0012] 步骤1:将神经网络计算的输入特征数据按照样本维优先的方式存储,以及将权重数据按照输入特征维优先的方式存储;
[0013] 步骤2:向量处理器按列将所述输入特征数据集数据矩阵划分为多个矩阵,得到多个输入特征数据矩阵;
[0014] 步骤3:向量处理器将所述权重数据矩阵传输到各个核的标量存储器SM中,并将所述步骤S2划分的每个输入特征数据矩阵传输到各个核的向量阵列存储器AM中,通过执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,得到输出特征数据矩阵;
[0015] 步骤4:向量处理器的各个核将步骤3得到的所述输出特征矩阵与偏置数据列向量进行并行加法计算,得到输出特征矩阵计算结果;
[0016] 步骤5:将步骤4得到的所述输出特征矩阵计算结果存储在向量处理器的片外存储器中;
[0017] 步骤6:重复步骤3至5,直到完成全部输入特征数据矩阵计算。
[0018] 进一步的,所述步骤1中将神经网络计算的输入特征数据按照样本维优先的方式存储具体为:输入特征数据集按照N*M阶的矩阵连续存储在向量处理器的片外存储器,M为数据集的总样本数目,N为输入特征数目;将权重数据按照输入特征维优先的方式存储具体为将权重数据重排序后,按照K*N阶的矩阵连续存储在向量处理器的片外存储器,得到权重数据矩阵,其中K为输出特征数目。
[0019] 进一步的,所述步骤2中具体将所述输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中M=num*MB,MB=q*p,q为目标向量处理器的核数,p为每个核的向量处理单元VPE个数。
[0020] 进一步的,所述步骤3中执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算的具体步骤包括:
[0021] 步骤3.1:向量处理器将N*MB阶的所述输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为N*p阶;
[0022] 步骤3.2:向量处理器将K*N阶的所述权重数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的权重数据缓冲区中,每个核传入的权重数据矩阵规模为K*N阶;
[0023] 步骤3.3:向量处理器的各个核的向量处理部件VPU依次从所述输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器;
[0024] 步骤3.4:向量处理器的各个核的标量处理部件SPU依次从所述权重数据缓冲区按行读取一个权重数据到一个标量寄存器中,通过标量广播指令广播到一个向量寄存器,该向量寄存器与步骤3.3得到的向量寄存器进行乘累加计算;
[0025] 步骤3.5:判断是否遍历所述权重数据矩阵一行的N个元素数据,若不是则跳转至步骤3.3,且步骤3.3中读取位置移到下一行、步骤3.4中读取位置移到下一元素;若是则每个核完成该行数据计算对应的p个输出特征数据的计算,跳转步骤3.6;
[0026] 步骤3.6:判断是否遍历完所述权重数据矩阵的所有K行数据,若不是则跳转至步骤3.3,且步骤3.3中读取位置回到输入特征数据缓冲区起始地址、步骤3.4中读取位置移到下一行首地址;若是则遍历完K行,向量处理器完成K*MB阶的输出特征数据的计算。
[0027] 进一步的,上述所述步骤3.1中输入特征数据缓冲区和/或所述步骤3.2中权重数据缓冲区设置有两个,当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输。
[0028] 进一步的,所述步骤4的具体步骤包括:将步骤3得到的K*MB阶的所述输出特征矩阵的每个列向量与所述偏置数据列向量的每个对应元素进行加法计算,得到K*MB阶的输出特征矩阵计算结果。
[0029] 进一步的,所述步骤5中,具体将所述输出特征矩阵计算结果按照样本维优先的方式存储在向量处理器的片外存储器中。
[0030] 进一步的,若向量处理器包括SIMD指令同时进行并行数据处理,还包括根据待计算图像元素的数据位数调整每个核的向量处理单元VPE个数p值为d*p,其中d表示向量处理器中的每个VPE通过SIMD指令能同时处理的图像元素数据数量。
[0031] 进一步的,所述步骤3、步骤4并行执行。
[0032] 与现有技术相比,本发明的优点在于:
[0033] 1、本发明多样本神经网络前向传播向量化实现方法,能够基于向量处理器实现多样本的神经网络前向传播向量化,输入图像特征数据按照样本维优先的方式存储,权重数据按照输入特征维优先的方式存储,每个核的权重数据通过标量存储器传输,并广播到向量处理单元计算,可以实现多样本数据集的权重数据的共享,大幅度减少了计算数据的传输量,能够显著降低权重数据的带宽需求,同时能够降低权重数据的传输时间;
[0034] 2、本发明多样本神经网络前向传播向量化实现方法,通过将每个权重数据扩展成向量数据与全部的输入特征数据同时进行向量乘累加计算,能够充分发挥向量处理器的SIMD和核间并行性,大幅度提升了神经网络的计算效率;
[0035] 3、本发明多样本神经网络前向传播向量化实现方法,通过同一样本的所有输入特征数据存储在一个列上,使得权重数据与输入特征数据的全部乘累加计算都是在同一个VPE处理单元上操作,可以避免多个处理单元之间的规约求和,从而提高向量处理器的整体计算效率。
[0036] 4、本发明多样本神经网络前向传播向量化实现方法,能够同时兼顾效率和准确度,且支持方便灵活设置Mini-batch大小。附图说明
[0037] 图1是向量处理器的一般结构示意图。
[0038] 图2是本实施例多样本神经网络前向传播向量化实现方法的流程示意图。
[0039] 图3是本发明在具体应用实施例中执行向量化矩阵乘法计算和并行化矩阵乘法计算的原理示意图。
[0040] 图4是本发明在具体应用实施例中执行向量化矩阵乘法计算和并行化矩阵乘法计算详细流程示意图。

具体实施方式

[0041] 以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
[0042] 设目标向量处理器的核数为q,每个核的向量处理单元VPE个数为p,当前计算层的神经网络的输入特征数目为N,输出特征数目为K,数据集的总样本数目为M,Mini-batch大小为MB,其中MB=q*p,M=num*MB,num为正整数。如图2所示,本实施例多样本神经网络前向传播向量化实现方法的详细步骤包括:
[0043] 步骤1:将神经网络计算的输入特征数据按照样本维优先的方式存储,以及将权重数据按照输入特征维优先的方式存储。
[0044] 上述将神经网络计算的输入特征数据按照样本维优先的方式存储具体为:输入特征数据集按照N*M阶的矩阵连续存储在向量处理器的片外存储器,M为数据集的总样本数目,N为输入特征数目。具体在第一层神经网络计算时,将输入特征数据重排序,使得输入特征数据是按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其他层计算的输入特征数据矩阵为上一层计算结果的输出特征数据矩阵,且是按照样本维优先的方式存储在向量处理器的片外存储器中。输入特征数据矩阵的元素具体表示为x[i][m],其中列坐标m表示第m+1个样本,取值范围为{0,1,2,...,M-1},行坐标i表示该样本的第i+1个输入特征,取值范围为{0,1,2,...,N-1}。
[0045] 上述将权重数据按照输入特征维优先的方式存储具体为:将权重数据重排序后,按照K*N阶的矩阵连续存储在向量处理器的片外存储器,得到权重数据矩阵,其中K为输出特征数目。权重数据矩阵的元素具体表示为w[i][j],其中行坐标i对应输出层第i+1个单元,取值范围为{0,1,2,...,K-1};列坐标j对应输入层第j+1个单元,取值范围为{0,1,2,...,N-1};w[i][j]表示为输入层第j+1个单元与输出层第i+1个单元间的权重值。偏置数据列向量的元素表示为b[i],其中坐标i对应输出层第i+1个单元,输出层的每个单元对应一个偏置值。
[0046] 步骤2:向量处理器按列将输入特征数据集数据矩阵划分为多个矩阵块,得到多个输入特征数据矩阵。
[0047] 上述具体将N*M阶的输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中M=num*MB,MB=q*p,q为目标向量处理器的核数,p为每个核的向量处理单元VPE个数。
[0048] 步骤3:向量处理器将权重数据矩阵传输到各个核的标量存储器SM中,并将步骤S2划分的每个输入特征数据矩阵传输到各个核的向量阵列存储器AM中,通过执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,得到输出特征数据矩阵。
[0049] 步骤2划分得到num个N*MB阶的矩阵块后,具体对每个N*MB阶的矩阵块,通过向量处理器将K*N阶的权重数据矩阵传输到各个核的标量存储器SM中,将N*MB阶的输入特征数据矩阵传输到各个核的向量阵列存储器AM中,通过标、向量协作的向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,得到K*MB阶的输出特征数据矩阵。
[0050] 步骤4:向量处理器的各个核将步骤3得到的输出特征矩阵与偏置数据列向量进行并行加法计算,得到输出特征矩阵计算结果。
[0051] 具体将向量处理器的各个核对步骤3得到的K*MB阶的输出特征矩阵的每个列向量与偏置数据列向量的每个对应元素进行加法计算,得到K*MB阶的输出特征矩阵计算结果。
[0052] 步骤5:将步骤4得到的输出特征矩阵计算结果存储在向量处理器的片外存储器中。
[0053] 具体将输出特征矩阵计算结果按照样本维优先的方式存储在向量处理器的片外存储器中。
[0054] 步骤6:重复步骤3至5,直到完成全部输入特征数据矩阵计算。
[0055] 上述计算完成后得到K*M阶的输出特征数据矩阵,且K*M阶的输出特征数据矩阵是按照样本维优先的方式连续存储到向量处理器的片外存储器,其中M为数据集的总样本数目,K为输出特征数目。输出特征数据矩阵的元素具体表示为a[j][m],其中列坐标m表示第m+1个样本,取值范围为{0,1,2,...,M-1},行坐标j表示该样本的第j+1个输出特征,取值范围为{0,1,2,...,K-1}。
[0056] 通过执行上述步骤1至6后,得到的计算结果即为该层的神经网络计算结果,并且计算结果的存储仍然是步骤1所要求的样本维优先的方式存储,该输出特征数据矩阵为后续层的神经网络计算提供输入特征数据矩阵。
[0057] 本实施例上述方法,输入图像特征数据按照样本维优先的方式存储,权重数据按照输入特征维优先的方式存储,每个核的权重数据通过标量存储器传输,并广播到向量处理单元计算,可以实现多样本数据集的权重数据的共享,大幅度减少了计算数据的传输量,能够显著降低权重数据的带宽需求,同时能够降低权重数据的传输时间,同时通过将每个权重数据扩展成向量数据与全部的输入特征数据同时进行向量乘累加计算,能够充分发挥向量处理器的SIMD和核间并行性,大幅度提升了神经网络的计算效率;且同一样本的所有输入特征数据存储在一个列上,权重数据与输入特征数据的全部乘累加计算都是在同一个VPE处理单元上操作,可以避免多个处理单元之间的规约求和,从而提高向量处理器的整体计算效率,能够同时兼顾效率和准确度。
[0058] 在具体应用实施例(N=16,K=8,q=4,p=8,d=1,MB=q*p=4*8=32,M=320000,num=M/MB=10000)中,上述步骤3中将K*N阶权重数据矩阵与N*MB阶输入特征数据矩阵执行向量化矩阵乘法计算和并行化矩阵乘法计算如图3所示,包括:
[0059] 向量处理器将N*M=16*320000阶的输入特征数据矩阵按列划分为num=10000个相同大小的子块,每个子块的大小是N*MB=16*32阶矩阵;
[0060] 然后向量处理器依次对K*N=8*16阶的权重数据矩阵与N*MB=16*32阶的输入特征数据子块矩阵进行向量化矩阵乘法计算;循环num=10000次,即完成K*N=8*16阶权重数据矩阵与N*M=16*320000阶输入特征数据矩阵的矩阵乘法计算。
[0061] 在具体应用实施例中,上述步骤3中将K*N阶权重数据矩阵与N*MB阶输入特征数据矩阵,执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算的具体步骤包括:
[0062] 步骤3.1:向量处理器将N*MB阶的输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为N*p阶;
[0063] 步骤3.2:向量处理器将K*N阶的权重数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的权重数据缓冲区中,每个核传入的权重数据矩阵规模为K*N阶;
[0064] 步骤3.3:向量处理器的各个核的向量处理部件VPU依次从输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器;
[0065] 步骤3.4:向量处理器的各个核的标量处理部件SPU依次从权重数据缓冲区按行读取一个权重数据到一个标量寄存器中,通过标量广播指令广播到一个向量寄存器,该向量寄存器与步骤3.3得到的向量寄存器进行乘累加计算;
[0066] 步骤3.5:判断是否遍历权重数据矩阵一行的N个元素数据,若不是则跳转至步骤3.3,且步骤3.3中读取位置移到下一行、步骤3.4中读取位置移到下一元素;若是则每个核完成该行数据计算对应的p个输出特征数据的计算,跳转步骤3.6;
[0067] 步骤3.6:判断是否遍历完权重数据矩阵的所有K行数据,若不是则跳转至步骤3.3,且步骤3.3中读取位置回到输入特征数据缓冲区起始地址、步骤3.4中读取位置移到下一行首地址;若是则遍历完K行,向量处理器完成K*MB阶的输出特征数据的计算。
[0068] 上述步骤3.1中输入特征数据缓冲区、步骤3.2中权重数据缓冲区设置有两个,当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输,可以使得数据传输与计算时间重叠,进一步提升计算效率。
[0069] 以下以N=16、K=8、q=4、p=8、d=1、MB=q*p=32,采用上述方法进行向量化和并行化矩阵乘法计算为例,对上述步骤3执行向量化矩阵乘法计算和并行化矩阵乘法计算进行进一步说明,如图4所示,详细步骤为:
[0070] 步骤3.1:向量处理器将N*MB=16*32阶的输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为N*p=16*8阶;
[0071] 步骤3.2:向量处理器将K*N=8*16阶的权重数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的权重数据缓冲区中,每个核传入的权重数据矩阵规模为K*N=8*16阶;
[0072] 步骤3.3:向量处理器的各个核的向量处理部件VPU依次从输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器;
[0073] 步骤3.4:向量处理器的各个核的标量处理部件SPU依次从权重数据缓冲区按行读取一个权重数据到一个标量寄存器中,通过标量广播指令广播到一个向量寄存器,该向量寄存器与步骤,3.3得到的向量寄存器进行乘累加计算;
[0074] 步骤4.5:判断是否遍历权重数据一行的N=16个元素数据,若不是则步骤3.3读取位置移到下一行、步骤3.4读取位置移到下一元素,跳转步骤3.3,若是则每个核完成该行数据计算对应的p=8个输出特征数据的计算,则跳转步骤3.6;
[0075] 步骤3.6:判断是否遍历完权重数据的所有K=8行数据,若不是,则步骤3.3中读取位置回到输入特征数据缓冲区起始地址、步骤3.4读取位置移到下一行首地址,跳转步骤3.3;若是则遍历完K=8行,则向量处理器完成K*MB=8*32阶的输出特征数据的计算。
[0076] 在具体应用实施例中,上述步骤3、步骤4可以合并在一起并行执行计算,可以进一步提高计算效率。
[0077] 在具体应用实施例中,若向量处理器包括SIMD指令同时进行并行数据处理,还包括根据待计算图像元素的数据位数调整每个核的向量处理单元VPE个数p值为d*p,其中d表示向量处理器中的每个VPE通过SIMD指令能同时处理的图像元素数据数量。确定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。
[0078] 在另一个实施例中,还提供一种存储有计算机程序的计算机可读存储介质,计算机程序执行时实现上述多样本神经网络前向传播向量化实现方法。
[0079] 上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈