一种神经网络运算的系统、方法、装置及存储介质

文档序号:510376 发布日期:2021-05-28 浏览:26次 >En<

阅读说明:本技术 一种神经网络运算的系统、方法、装置及存储介质 (System, method and device for neural network operation and storage medium ) 是由 刘文峰 于 2019-11-27 设计创作,主要内容包括:本发明提供一种神经网络运算的系统、方法、装置及存储介质,用于减少神经网络计算过程中的数据搬移,提升神经网络处理器的运算效率。神经网络运算系统包括至少两个神经网络处理单元、第一存储单元和第二存储单元,其中:第一存储单元,用于存储神经网络的输入数据、输出数据和每层神经网络运算所需的运算参数;第二存储单元,用于为至少两个神经网络处理单元中的每个神经网络单元提供输入缓存和输出缓存,每个神经网络处理单元包括两个输入缓存和两个输出缓存,相邻两个神经网络处理单元中的一个神经网络处理单元的两个输出缓存为另一个神经网络处理单元的两个输入缓存;至少两个神经网络处理单元进行环形连接。(The invention provides a system, a method, a device and a storage medium for neural network operation, which are used for reducing data movement in the neural network calculation process and improving the operation efficiency of a neural network processor. The neural network operation system comprises at least two neural network processing units, a first storage unit and a second storage unit, wherein: the first storage unit is used for storing input data and output data of the neural network and operation parameters required by operation of each layer of the neural network; the second storage unit is used for providing an input buffer and an output buffer for each neural network unit in at least two neural network processing units, each neural network processing unit comprises two input buffers and two output buffers, and the two output buffers of one neural network processing unit in two adjacent neural network processing units are the two input buffers of the other neural network processing unit; at least two neural network processing units are connected in a ring.)

一种神经网络运算的系统、方法、装置及存储介质

技术领域

本发明涉及一种处理器,尤其涉及一种神经网络运算的系统、方法、装置及存储介质。

背景技术

在运行神经网络模型的过程中,神经网络处理器(Neural network ProcessingUnit,NPU)能够为深度神经网络的训练和推理提供足够的运算能力。由于深度神经网络是按层计算的,每层的输入输出数据量较大,因此需要提供相当大的内存来存储中间数据和权重数据,从而导致大量资源都浪费在缓存和内存之间的数据搬运中,产生存储墙问题,降低了处理器的运算效率。

发明内容

本申请实施例提供一种神经网络运算的系统、方法、装置及存储介质,用于减少神经网络计算过程中的数据搬移,提升神经网络处理器的运算效率。

第一方面,提供一种神经网络运算系统,所述神经网络运算系统包括至少两个神经网络处理单元、第一存储单元和第二存储单元,其中:

所述第一存储单元,用于存储神经网络的输入数据、输出数据和每层神经网络运算所需的运算参数;

所述第二存储单元,用于为所述至少两个神经网络处理单元中的每个神经网络单元提供输入缓存和输出缓存,每个神经网络处理单元包括两个输入缓存和两个输出缓存,相邻两个神经网络处理单元中的一个神经网络处理单元的两个输出缓存为另一个神经网络处理单元的两个输入缓存;

所述至少两个神经网络处理单元进行环形连接,且所述至少两个神经网络处理单元中的每个神经网络处理单元,依次对神经网络的每层网络的部分行列数据进行卷积运算,并将得到的卷积运算结果存储至该神经网络处理单元的一个输出缓存,以使与该神经网络处理单元相邻的下游神经网络处理单元从该输出缓存中获得所述卷积运算结果,并根据所述卷积运算结果进行下一层网络的卷积运算。

第二方面,提供一种神经网络运算方法,所述方法应用于神经网络运算系统,所述神经网络运算系统包括至少两个神经网络处理单元,所述至少两个神经网络处理单元包括相邻的第一神经网络处理单元和第二神经网络处理单元,所述方法包括:

所述第一神经网络处理单元依次对一层网络的部分行列数据进行卷积运算,并将得到的第一卷积运算结果存储至所述第一神经网络处理单元的第一输出缓存;并在满足缓存切换触发条件时,所述第一神经网络处理单元将输出缓存从所述第一输出缓存切换至第二输出缓存;

所述第二神经网络处理单元从所述第一输出缓存中获得所述第一卷积运算结果,并根据所述第一卷积运算结果进行与所述一层网络相邻的下一层网络的卷积运算,以及将得到的第二卷积运算结果存储至所述第二神经网络处理单元的一个输出缓存。

可选的,确定满足缓存切换触发条件,包括:

确定完成对所述部分行列数据的全部运算。

可选的,所述方法还包括:

在所述第二神经网络处理单元对所述第一卷积运算结果运算完成后,确定所述第二输出缓存中的数据已完成存储准备;

若所述第二输出缓存中的数据已完成存储准备,则将所述第二神经网络单元的输入缓存由所述第一输出缓存切换至所述第二输出缓存,以从所述第二输出缓存中获取数据进行运算;

若所述第二输出缓存中的数据未完成存储准备,则进行等待。

可选的,所述第一神经网络处理单元依次对一层网络的部分行列数据进行卷积运算,包括:

所述第一神经网络处理单元按照预定间隔步长依次对一层网络的部分行列数据进行卷积运算,所述预定间隔步长是根据所述第一输出缓存和所述第二输出缓存确定的。

可选的,所述第一神经网络处理单元依次对一层网络的部分行列数据进行卷积运算,包括:

若按行进行运算,则所述第一神经网络处理单元对预定数行的全部列和全部输入通道的数据进行卷积运算。

可选的,所述第一神经网络处理单元依次对一层网络的部分行列数据进行卷积运算,包括:

若按列进行运算,则所述第一神经网络处理单元对预定数列的全部行和全部输入通道的数据进行卷积运算。

第三方面,提供一种神经网络运算装置,所述装置包括:

第一处理模块,用于第一神经网络处理单元依次对一层网络的部分行列数据进行卷积运算,并将得到的第一卷积运算结果存储至所述第一神经网络处理单元的第一输出缓存;并在满足缓存切换触发条件时,所述第一神经网络处理单元将输出缓存从所述第一输出缓存切换至第二输出缓存;

第二处理模块,用于第二神经网络处理单元从所述第一输出缓存中获得所述第一卷积运算结果,并根据所述第一卷积运算结果进行与所述一层网络相邻的下一层网络的卷积运算,以及将得到的第二卷积运算结果存储至所述第二神经网络处理单元的一个输出缓存。

可选的,所述第一处理模块,用于:

确定完成对所述部分行列数据的全部运算。

可选的,所述第一处理模块,还用于:

在所述第二神经网络处理单元对所述第一卷积运算结果运算完成后,确定所述第二输出缓存中的数据已完成存储准备;

若所述第二输出缓存中的数据已完成存储准备,则将所述第二神经网络单元的输入缓存由所述第一输出缓存切换至所述第二输出缓存,以从所述第二输出缓存中获取数据进行运算;

若所述第二输出缓存中的数据未完成存储准备,则进行等待。

可选的,所述第一处理模块,用于:

所述第一神经网络处理单元按照预定间隔步长依次对一层网络的部分行列数据进行卷积运算,所述预定间隔步长是根据所述第一输出缓存和所述第二输出缓存确定的。

可选的,所述第一处理模块,用于:

若按行进行运算,则所述第一神经网络处理单元对预定数行的全部列和全部输入通道的数据进行卷积运算。

可选的,所述第一处理模块,用于:

若按列进行运算,则所述第一神经网络处理单元对预定数列的全部行和全部输入通道的数据进行卷积运算。

第四方面,提供一种计算设备,所述计算设备包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第二方面中任一所述的方法包括的步骤。

第五方面,提供一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第二方面中任一所述的方法包括的步骤。

第六方面,提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行上述各种可能的实现方式中所描述的计算设备的方法。

在本申请实施例中,提供一种神经网络运算系统,此神经网络运算系统包括至少两个神经网络处理单元、第一存储单元和第二存储单元,其中,第一存储单元用于存储神经网络的输入数据、输出数据和每层神经网络运算所需的运算参数,第二存储单元用于为至少两个神经处理单元中的每个神经网络单元提供输入缓存和输出缓存,且每个神经网络处理单元包括两个输入缓存和两个输出缓存,相邻两个神经网络处理单元中的一个神经网络处理单元的两个输出缓存为另一个神经网络处理单元的两个输入缓存,将至少两个神经网络处理单元进行环形连接,其中至少两个神经网络处理单元中的每个神经网络处理单元,依次对神经网络的每层网络的部分行列数据进行卷积运算,并将得到的卷积运算结果存储至该神经网络处理单元的一个输出缓存,以使与该神经网络处理单元相邻的下游神经网络处理单元从该输出缓存中获得卷积运算结果,并根据所述卷积运算结果进行下一层网络的卷积运算。

也就是说,采用环形连接的至少两个神经网络处理单元,每个神经网络处理单元负责神经网络某层计算,相邻下一个神经网络处理单元则计算下一层神经网络,且每个神经网络处理单元有两个输入缓存和两个输出缓存,上一个神经网络处理单元的两个输出缓存和相邻下一个神经网络处理单元的两个输入缓存共享,当前神经网络处理单元得到部分行列数据的计算结果之后,即切换输出缓存,使得相邻下一个神经网络处理单元获得上一层神经网络中部分行列数据的计算结果进行下一层神经网络计算,通过这种层间流水线并行运算方法减少了中间层数据的搬运,实现了相邻层的流水线并行计算,提升了运算资源利用率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。

图1为本申请实施例提供的神经网络运算系统的一个结构示意图;

图2为本申请实施例提供的神经网络运算系统的另一结构示意图;

图3为本申请实施例提供的神经网络运算的方法流程图;

图4为本申请实施例提供的神经网络运算方法的具体实现过程的流程图;

图5为本申请实施例提供的神经网络运算装置的结构框图;

图6为本申请实施例提供的计算设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。

为了便于理解,下面先对本发明实施例的技术背景进行介绍。

如前文所述的,目前,在运行神经网络模型的过程中,由于深度神经网络是按层计算的,一般是计算完一层的数据之后,才会开始计算下一层的数据,因此,每一层的数据计算完之后会全部放在内存里,下一层进行计算时去内存里面读取,从而导致每层的输入输出数据量较大,以致于大量的运算资源都浪费在数据的搬运中,例如,第一层神经网络的数据计算完之后,将计算的结果搬运到缓存中,第二层神经网络要进行计算时需要从缓存中去搬运第一层的计算结果,以致于会耗费大量的运算资源去进行数据搬运,造成了大量的运算资源浪费,降低了处理器的运算效率。

鉴于此,为了提升运算资源利用率和处理器的运算效率,本申请实施例提供了一种神经网络运算系统、方法及装置,该方案采用环形连接的方式将多个神经网络处理单元(Neural Processing Unit,NPU)连在一起,请参见图1所示,图1中将至少两个NPU进行环形连接,每个NPU单元负责神经网络某层计算,相邻计算单元则计算下一层神经网络,其中,每个NPU单元有两个输入缓存和两个输出缓存,本单元的两个输出缓存共享相邻计算单元的两个输入缓存,因此当上一层的NPU单元计算得到该层的部分行列数据时,即将此部分的计算结果放入输出缓存,然后将当前输出缓存切换到两个输出缓存中的另一个输出缓存,继续对剩余部分的数据进行计算,将计算得到的结果放入另一输出缓存中,此时相邻下一个NPU单元读取上一NPU缓存切换之前的输出缓存中存储的数据,进行相邻下一层的计算,也就是说,神经网络中上一层的第二部分数据和下一层中的第一部分数据同时进行计算,其中,下一层的第一部分数据是通过上一层的第一部分数据计算得到的。这样,通过这种层间流水线并行运算方法,大大减少了中间数据保存需要,从而减少了数据的搬移,以及减少了计算时数据等待的时间,提高了处理器的运算效率。

下面结合说明书附图介绍本申请实施例提供的技术方案。

请参见图2所示,图2为本申请实施例提供的一种神经网络运算系统,该神经网络运算系统包含了第一存储单元201、第二存储单元202和至少两个神经网络处理单元203。

第一存储单元201,用于存储神经网络的输入数据、输出数据和每层神经网络运算所需的运算参数;

第二存储单元202,用于为所述至少两个神经网络处理单元中的每个神经网络单元提供输入缓存和输出缓存,每个神经网络处理单元包括两个输入缓存和两个输出缓存,相邻两个神经网络处理单元中的一个神经网络处理单元的两个输出缓存为另一个神经网络处理单元的两个输入缓存;

至少两个神经网络处理单元203,进行环形连接,且所述至少两个神经网络处理单元中的每个神经网络处理单元,依次对神经网络的每层网络的部分行列数据进行卷积运算,并将得到的卷积运算结果存储至该神经网络处理单元的一个输出缓存,以使与该神经网络处理单元相邻的下游神经网络处理单元从该输出缓存中获得所述卷积运算结果,并根据所述卷积运算结果进行下一层网络的卷积运算。

基于同一发明构思,请参见图3所示,图3为本申请实施例提供了一种神经网络运算方法。图3所示方法的流程图描述如下:

步骤301:将至少两个NPU进行环形连接。

在本申请实施例中,将至少两个NPU进行环形连接;其中,一个NPU用于计算一层神经网络,相邻NPU用于计算下一层神经网络,每个NPU包括两个输入缓存和两个输出缓存,且上一个NPU的两个输出缓存和相邻下一个NPU的两个输入缓存共享。其中,采用两个输入缓存和两个输出缓存的原因主要是因为如果只有一个缓存,那么当一层的输出和另一层的输入同时进行时,需要仲裁之后分时访问,影响处理效率,所以设计两个缓存,当上一层的输出充满一个缓存之后,相邻下一层的NPU将该缓存中存储的数据作为输入进行下一层的运算,同时将上一层的输出切换到另一缓存继续输出,这样两个NPU不会同时访问一个缓存,并且相邻两个神经网络处理单元进行连接时,通过缓存的首尾连接形成一个环形结构,例如,将上一个神经网络处理单元的输出缓存1和下一神经处理单元的输入缓存1相连,将上一层的神经处理单元的输出缓存2和下一层神经处理单元的输入缓存2进行连接。

步骤302:第一神经网络处理单元依次对一层网络的部分行列数据进行卷积运算,并将得到的第一卷积运算结果存储至第一神经网络处理单元的第一输出缓存。

在本申请实施例中,由于神经网络的中间层数据是一个三维数组,每个输入通道都是一个二维数组,二维数组里有行有列,如果只计算部分行列数据,可以只装载部分行列的数据,并只对装载的部分行列数据的进行卷积运算,然后将运算的结果存储至当前神经网络处理单元的第一输出缓存,然后第一神经网络处理单元继续依次对剩余部分行列的数据进行卷积运算。

在一种可能的实施方式中,第一神经网络处理单元根据第一输出缓存和第二输出缓存的缓存能力确定每次装载的部分行或者部分列的数量(例如可以是间隔步长),然后根据确定的部分行列数据进行卷积运算。

在一种可能的实施方式中,数据的输出方式是按行进行计算(即按行进行输出),则NPU按照输入列、输入通道计算预定数行的全部列和全部输入通道的卷积数据,将部分行的数据的计算结果输出到第一输出缓存,例如,数据的输出方式是按行进行输出,且预先设定的每批次进行计算的行数是10行,则首先计算1-10行的所有输入列和输入通道的数据,然后将1-10行计算的结果放到当前的输出缓存中,由于输出缓存里只有行这个维度是不完整的,也就是说,列和输入通道这两个维度的数据是完整的,因为卷积运算具有局部性,部分行输入可得部分行输出,并不需要输入全部行才可以计算,因此,这些部分行数据可以供相邻NPU启动另一层的卷积运算,提升运算效率。

在另一种可能的实施方式中,数据的输出方式是按列进行计算(即按列进行输出),则NPU按照输入行、输入通道计算预定数列的全部行和全部输入通道的卷积数据,将部分列的数据的计算结果输出到第一输出缓存,例如,数据的输出方式是按列进行输出,且预先设定的每批次进行计算的列数是10列,则首先计算1-10列的所有输入行和输入通道的数据,然后将1-10列计算的结果放到当前的输出缓存中,由于输出缓存里只有列这个维度是不完整的,也就是说,行和输入通道这两个维度的数据是完整的,因为卷积运算具有局部性,部分列输入可得部分列输出,并不需要输入全部列才可以计算,因此,这些部分列数据可以供相邻NPU启动另一层的卷积运算,提升运算效率。

步骤303:确定是否满足缓存切换触发条件。

在一种可能的实施方式中,当第一神经网络处理单元计算完部分行列数据的全部运算时,例如是只装载了10行或者10列的数据,那么当计算完当前10行或者10列数据的全部运算时,确定满足缓存切换触发条件。

步骤304:在满足缓存切换触发条件时,第一神经网络处理单元将输出缓存从第一输出缓存切换至第二输出缓存。

在本申请实施例中,第一神经网络处理单元将部分行列的数据计算完之后会将当前的第一输出缓存切换到第二输出缓存,当前的输出缓存中的数据用于跟下一层神经处理单元的输入缓存进行数据共享。

在一种可能的实施方式中,数据输出方式是按行或按列进行输出时,则神经处理单元在计算完当前批次的数据时(如,计算完1-10行或者1-10列的数据时),将当前的输出缓存切换到另一输出缓存(当前输出缓存是第一输出缓存,则将第一输出缓存切换成第二输出缓存),缓存切换之后,继续计算11-20行或者11-20列的所有数据,然后将11-20行或者11-20列的计算结果放在切换之后的输出缓存里(第二输出缓存)。

步骤305:第二神经网络处理单元从第一输出缓存中获得所述第一卷积运算结果,并根据所述第一卷积运算结果进行与所述一层网络相邻的下一层网络的卷积运算

在本申请实施例中,第二神经网络处理单元从第一输出缓存里获取部分行列的数据的第一卷积运算结果,并根据该运算结果执行本层的卷积运算。

步骤306:将得到的第二卷积运算结果存储至第二神经网络处理单元的一个输出缓存。

在本申请实施例中,第二神经网络处理单元将本层针对第一卷积运算结果进行运算得到的第二卷积运算结果存储至第二神经处理单元的一个输出缓存中。

在一种可能的实施方式中,当第二神经网络处理单元对第一卷积运算结果运算完成后,判断第一神经网络处理单元的第二输出缓存中的数据是否已完成存储准备,若第二输出缓存中的数据已完成存储准备,则将第二神经网络单元的输入缓存由第一输出缓存切换至第二输出缓存,以从第二输出缓存中获取数据继续进行运算;若第二输出缓存中的数据未完成存储准备,则进行等待,直到第二输出缓存中的数据已完成存储准备,则将第二神经网络单元的输入缓存由第一输出缓存切换至第二输出缓存,以从第二输出缓存中获取数据继续进行运算。

具体的,请参见图4所示,以神经网络系统中有4个NPU进行举例说明,其中二级缓存或随机存储器用于存储神经网络的输入输出数据和神经网络处理单元运算过程中需要的运算参数,NPU1用于计算神经网络第1层的数据,NPU2用于计算神经网络第2层的数据,NPU3用于计算神经网络第3层的数据,NPU4用于计算神经网络第4层的数据,输出缓存11和输出缓存12是NPU1的两个输出缓存,其中NPU1的输出缓存11和NPU2的输入缓存21共享,也就是说,NPU1的输出缓存11和NPU2的输入缓存21为同一个缓存,同理NPU1的输出缓存12和NPU2的输入缓存22为同一个缓存,NPU2的输出缓存21和NPU3的输入缓存31为同一个缓存,NPU2的输出缓存22和NPU3的输入缓存32为同一个缓存,NPU3的输出缓存31和NPU4的输入缓存41为同一个缓存,NPU3的输出缓存32和NPU4的输入缓存42为同一个缓存,NPU4的输出缓存41和NPU1的输入缓存11为同一个缓存,NPU4的输出缓存42和NPU1的输入缓存12为同一个缓存。

在运算过程中,NPU2依次从两个输入缓存中获取输入数据,以每批次计算10行数据为例,NPU1计算完1-10行的数据,将计算结果存入输出缓存11,NPU2从输入缓存21(也可以说是输出缓存11)中获取数据,此时,NPU1将输出缓存切换到输出缓存12,计算11-20行的数据,并将计算结果存入输出缓存12,当输入缓存21中的数据用完之后,则将输入缓存21切换到输入缓存22继续获取数据,此时如果输出缓存12的数据还没准备好,则进行等待,等输出缓存12的数据准备好之后NPU2再执行本层第二批次卷积计算,同时NPU1将输出缓存12切换回输出缓存11,每个神经网络处理单元的两个输入缓存和两个输出缓存交替进行,直至该层的的所有数据都计算完成,其中,当NPU1完成了神经网络第一层所有的数据计算之后,NPU1还用于在神经网络第5层等待神经网络第4层的输出数据。这样,利用卷积相邻层计算的并行性使得每一层的数据边计算边共享,节约了需要将每层数据都计算完的等待时间,提升了处理器的运算效率,同时,由于相邻层的NPU可以将中间数据通过缓存共享的方式进行传输,使得在网络推理过程中减少了中间数据的搬运,提升了运算资源的利用率。

本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

基于同一发明构思,本申请实施例提供了一种神经网络运算的装置,该神经网络运算的装置能够实现前述的神经网络运算的方法对应的功能。该神经网络运算的装置可以是硬件结构、软件模块、或者硬件结构加软件模块。该神经网络运算的装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。请参见图5所示,该神经网络运算装置包括第一处理模块501、第二处理模块502。其中:

第一处理模块501,用于第一神经网络处理单元依次对一层网络的部分行列数据进行卷积运算,并将得到的第一卷积运算结果存储至所述第一神经网络处理单元的第一输出缓存;并在满足缓存切换触发条件时,所述第一神经网络处理单元将输出缓存从所述第一输出缓存切换至第二输出缓存;

第二处理模块502,用于第二神经网络处理单元从所述第一输出缓存中获得所述第一卷积运算结果,并根据所述第一卷积运算结果进行与所述一层网络相邻的下一层网络的卷积运算,以及将得到的第二卷积运算结果存储至所述第二神经网络处理单元的一个输出缓存。

在一种可能的实施方式中,第一处理模块501,用于:

确定完成对所述部分行列数据的全部运算。

在一种可能的实施方式中,第一处理模块501,还用于:

在所述第二神经网络处理单元对所述第一卷积运算结果运算完成后,确定所述第二输出缓存中的数据已完成存储准备;

若所述第二输出缓存中的数据已完成存储准备,则将所述第二神经网络单元的输入缓存由所述第一输出缓存切换至所述第二输出缓存,以从所述第二输出缓存中获取数据进行运算;

若所述第二输出缓存中的数据未完成存储准备,则进行等待。

在一种可能的实施方式中,第一处理模块501,用于:

所述第一神经网络处理单元按照预定间隔步长依次对一层网络的部分行列数据进行卷积运算,所述预定间隔步长是根据所述第一输出缓存和所述第二输出缓存确定的。

在一种可能的实施方式中,第一处理模块501,用于:

若按行进行运算,则所述第一神经网络处理单元对预定数行的全部列和全部输入通道的数据进行卷积运算。

在一种可能的实施方式中,第一处理模块501,用于:

若按列进行运算,则所述第一神经网络处理单元对预定数列的全部行和全部输入通道的数据进行卷积运算。

基于同一发明构思,本申请实施例提供一种计算设备。请参见图6所示,该计算设备包括至少一个处理器601,以及与至少一个处理器连接的存储器602,本申请实施例中不限定处理器601与存储器602之间的具体连接介质,图6中是以处理器601和存储器602之间通过总线600连接为例,总线600在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线600可以分为地址总线、数据总线、控制总线等,为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

在本申请实施例中,存储器602存储有可被至少一个处理器601执行的指令,至少一个处理器601通过执行存储器602存储的指令,可以执行前述的计算设备的方法中所包括的步骤。

其中,处理器601是计算设备的控制中心,可以利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器602内的指令以及调用存储在存储器602内的数据,计算设备的各种功能和处理数据,从而对计算设备进行整体监控。可选的,处理器601可包括一个或多个处理单元,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。在一些实施例中,处理器601和存储器602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器601可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的神经网络运算的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通过对处理器601进行设计编程,可以将前述实施例中介绍的计算设备的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的计算设备的方法的步骤,如何对处理器601进行设计编程为本领域技术人员所公知的技术,这里不再赘述。

基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质例如是计算机可读存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算设备(例如计算机)执行如前述的神经网络运算的方法的步骤。

在一些可能的实施方式中,本申请提供的神经网络运算的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算设备上运行时,程序代码用于使该检测设备执行本说明书上述描述的根据本申请各种示例性实施方式的神经网络运算的方法中的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据计算设备的处理器以产生一个机器,使得通过计算机或其他可编程数据计算设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据计算设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据计算设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:呼入数据的受控缓存注入的方法、系统和介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类