CN110163349B - 一种网络模型的计算方法及装置 - Google Patents

一种网络模型的计算方法及装置 Download PDF

Info

Publication number
CN110163349B
CN110163349B CN201810147903.0A CN201810147903A CN110163349B CN 110163349 B CN110163349 B CN 110163349B CN 201810147903 A CN201810147903 A CN 201810147903A CN 110163349 B CN110163349 B CN 110163349B
Authority
CN
China
Prior art keywords
data
instruction
processing circuits
operation instruction
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.)
Active
Application number
CN201810147903.0A
Other languages
English (en)
Other versions
CN110163349A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201810147903.0A priority Critical patent/CN110163349B/zh
Publication of CN110163349A publication Critical patent/CN110163349A/zh
Application granted granted Critical
Publication of CN110163349B publication Critical patent/CN110163349B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Abstract

本公开提供了一种网络模型的计算方法及装置,所述计算装置包括:用于执行网络模型的计算,所述网络模型包括:神经网络模型和/或非神经网络模型;所述计算装置包括:运算单元、控制器单元以及存储单元,所述存储单元包括:数据输入输出单元,所述运算单元包括:一个主处理电路以及多个从处理电路,所述主处理电路与多个从处理电路连接。本申请提供的技术方案具有功耗低,计算速度快的优点。

Description

一种网络模型的计算方法及装置
技术领域
本申请涉及信息处理技术领域,具体涉及一种网络模型的计算方法及装置。
背景技术
随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高了。目前,终端对信息的获取以及处理均是基于通用处理器获得的。
在实践中发现,这种基于通用处理器运行软件程序来处理信息的方式,受限于通用处理器的运行速率,特别是在通用处理器负荷较大的情况下,信息处理效率较低、时延较大,对于信息处理的计算模型例如训练模型来说,训练运算的计算量更大,通用的处理器完成训练运算的时间长,效率低。
发明内容
本申请实施例提供了一种网络模型的计算方法及装置,可提升运算的处理速度,提高效率。
第一方面,提供一种计算装置,所述计算装置用于执行网络模型的计算,所述网络模型包括:神经网络模型和/或非神经网络模型;所述计算装置包括:运算单元、控制器单元以及存储单元,所述存储单元包括:数据输入输出单元,所述运算单元包括:一个主处理电路以及多个从处理电路,所述主处理电路与多个从处理电路连接;
所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述数据输入输出单元,用于获取计算数据、网络模型以及计算指令,所述计算数据包括:输入数据和权值数据;
所述控制器单元,用于从存储单元获取计算指令,将该计算指令、计算数据发送给所述主处理电路;
所述主处理电路,用于将所述计算数据中的输入数据或权值数据中的一个数据作为分发数据分配成多个分发数据块,将该多个分发数据块分发给所述k个从处理电路,将所述广播数据转发给所述k个从处理电路,解析该计算指令得到多个运算指令,将该多个运算指令中至少一个运算指令分发给所述k个从处理电路,所述广播数据为所述计算数据中的输入数据或权值数据中的另一个数据;
所述K个从处理电路,用于转发所述主处理电路以及多个从处理电路之间的数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据执行运算得到中间结果,并将中间结果通过与所述k个从处理电路传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
第二方面,提供一种网络模型的计算方法,所述方法由计算装置执行,所述网络模型包括:神经网络模型和/或非神经网络模型;所述计算装置包括:运算单元、控制器单元以及存储单元,所述存储单元包括:数据输入输出单元,所述运算单元包括:一个主处理电路以及多个从处理电路,所述主处理电路与多个从处理电路连接;
所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述数据输入输出单元获取计算数据、网络模型以及计算指令,所述计算数据包括:输入数据和权值数据;
所述控制器单元从存储单元获取计算指令,将该计算指令、计算数据发送给所述主处理电路;
所述主处理电路将所述计算数据中的输入数据或权值数据中的一个数据作为分发数据分配成多个分发数据块,将该多个分发数据块分发给所述k个从处理电路,将所述广播数据转发给所述k个从处理电路,解析该计算指令得到多个运算指令,将该多个运算指令中至少一个运算指令分发给所述k个从处理电路,所述广播数据为所述计算数据中的输入数据或权值数据中的另一个数据;
所述K个从处理电路转发所述主处理电路以及多个从处理电路之间的数据以及运算指令;
所述多个从处理电路依据该运算指令对接收到的数据执行运算得到中间结果,并将中间结果通过与所述k个从处理电路传输给所述主处理电路;
所述主处理电路将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
第三方面,提供了一种芯片,所述芯片包括如上第二方面提供的计算装置。
第四方面,提供了一种芯片封装结构,所述芯片封装结构包括如上第三方面提供的芯片。
第五方面,提供了一种板卡,所述板卡包括如上第四方面提供的芯片封装结构。
第六方面,提供了一种电子设备,所述电子设备包括如上第五方面提供的板卡。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本申请提供的计算装置的主处理电路能够根据运算指令的需要将运算单元内的输入数据分配成多个数据块,将所述多个数据块发送给所述运算单元的多个运算模块,进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结果的优点,从来提高了计算的效率,提高了计算效率,节能了能耗。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请实施例提供的一种计算装置的结构示意图。
图1B是主处理电路的结构图。
图2A是本申请提供的一种卷积核的数据结构示意图。
图2B是本申请提供的一种核的结构示意图。
图3是本申请实施例提供的一种组合处理装置的结构图。
图4是本申请实施例提供的另一种组合处理装置的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在第一方面提供的电子装置中,所述存储单元还包括:存储介质和标量数据存储单元;
所述存储介质,用于存储所述网络模型、输入数据、权值数据;
所述标量数据存储单元,用于存储标量数据。
在第一方面提供的电子装置中,所述控制器单元包括:指令存储单元、指令存储单元和存储队列单元;
所述指令存储单元,用于存储所述网络模型关联的计算指令;
所述指令处理单元,用于对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
在第一方面提供的电子装置中,所述运算单元包括:依赖关系处理单元;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
在第一方面提供的电子装置中,所述主处理电路,用于将所述广播数据分配成多个广播数据块,将该多个广播数据块转发给所述多个从处理电路。
在第一方面提供的电子装置中,如所述计算指令包括矩阵乘矩阵运算指令,确定该输入数据为分发数据,该权值数据为广播数据;
如所述计算指令包括卷积运算指令,确定该输入数据为广播数据,该权值数据为分发数据。
在第一方面提供的电子装置中,所述主处理电路,具体用于将多个处理电路发送的中间结果进行组合排序得到该计算指令的结果;
或所述主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在第一方面提供的电子装置中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行加法运算或累加运算。
在第一方面提供的电子装置中,所述从处理电路包括:转发处理电路和乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
所述转发处理电路,用于将接收到的数据块或乘积结果转发。
在第一方面提供的电子装置中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在第二方面提供的方法中,所述存储单元还包括:存储介质和标量数据存储单元;
所述存储介质,用于存储所述网络模型、输入数据、权值数据;
所述标量数据存储单元,用于存储标量数据。
在第二方面提供的方法中,所述控制器单元包括:指令存储单元、指令存储单元和存储队列单元;
所述指令存储单元,用于存储所述网络模型关联的计算指令;
所述指令处理单元,用于对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
在第二方面提供的方法中,所述运算单元包括:依赖关系处理单元;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
在第二方面提供的方法中,所述主处理电路,用于将所述广播数据分配成多个广播数据块,将该多个广播数据块转发给所述多个从处理电路。
在第二方面提供的方法中,如所述计算指令包括矩阵乘矩阵运算指令,确定该输入数据为分发数据,该权值数据为广播数据;
如所述计算指令包括卷积运算指令,确定该输入数据为广播数据,该权值数据为分发数据。
在第二方面提供的方法中,所述主处理电路,具体用于将多个处理电路发送的中间结果进行组合排序得到该计算指令的结果;
或所述主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在第二方面提供的方法中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行加法运算或累加运算。
在第二方面提供的方法中,所述从处理电路包括:转发处理电路和乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
所述转发处理电路,用于将接收到的数据块或乘积结果转发。
在第二方面提供的方法中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
首先介绍本申请使用的计算装置。参阅图1A,提供了一种计算装置,首先介绍本申请使用的计算装置。参阅图1A,提供了一种计算装置,该计算装置包括:存储单元10、控制器单元11和运算单元12,其中,控制器单元11与存储单元10以及运算单元12;
该存储单元10可以包括:数据输入输出单元203,
数据输入输出单元203,用于获取输入数据、网络模型以及计算指令;
控制器单元11,用于从所述存储单元提取计算指令,解析该计算指令得到多个运算指令,将该多个运算指令以及输入数据发送给所述运算单元;
运算单元12,用于依据该多个运算指令对该输入数据执行计算得到计算指令的结果。
可选的,该控制器单元包括:指令存储单元110、指令处理单元111和存储队列单元113;
指令存储单元110,用于存储所述网络模型关联的计算指令;
所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器堆号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
Figure BDA0001578986160000081
Figure BDA0001578986160000091
可选的,存储单元还可以包括:存储介质201和标量数据存储单元202
存储介质201可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据块,该数据块具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
可选的,该控制器单元还可以包括:
所述依赖关系处理单元,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
所述运算单元包括:一个主处理电路101以及多个从处理电路102,所述主处理电路与多个从处理电路连接;
所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
主处理电路101,用于将计算数据中的输入数据或权值数据中的一个数据作为分发数据分配成多个分发数据块,将该多个分发数据块分发给所述K个从处理电路,解析该计算指令得到多个运算指令,将该多个运算指令中至少一个运算指令分发给所述K个从处理电路,将广播数据块转发给所述K个从处理电路,该广播数据块为该计算数据为输入数据或权值数据中的另一个数据。例如,在计算指令包含矩阵成矩阵运算指令时,该分发数据可以为输入数据即输入矩阵,该广播数据可以为权值数据即权值矩阵。又如在计算指令包含卷积运算指令时,该分发数据可以为权值数据(即卷积核),该广播数据可以为输入数据。具体的,如该分发数据为输入矩阵时,例如一个矩阵H*W,那么一个分发数据块可以为矩阵H*W的x行数据或1/y行数据,上述x、y均为大于等于1的整数。如该分发数据块为卷积核时,例如权值数据【CI】【Co】【n】【n】(如图2A所示),那么分发数据块可以为核kenrel【n】【n】(如图2B所示)。其中,CI为权值数据的深度值,该Co可以为权值数据的数量值。
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及运算指令的转发;
所述多个从处理电路,用于依据该运算指令对接收到的数据(包含分发数据块、广播数据/广播数据块)执行运算得到中间结果,并将中间结果通过与所述k个从处理电路传输给所述主处理电路;
对于K个从处理电路,其具有转发的功能,也可以具有数据执行运算得到中间结果的功能。
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
所述从处理电路包括:转发处理电路和乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
所述转发处理电路,用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
本申请提供的计算装置的主处理电路能够根据运算指令的需要将运算单元内的输入数据分配成多个数据块,将所述多个数据块发送给所述运算单元的多个运算模块,进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结果的优点,从来提高了计算的效率,提高了计算效率,节能了能耗。
下面通过神经网络运算指令来说明如图1A所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
如图1A所示的计算装置执行神经网络正向运算指令的方法具体可以为:
控制器单元11从指令存储单元110内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制器单元将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元。
控制器单元11从存储介质内提取该操作域对应的输入数据Xi、权值w和偏置b(当b为0时,不需要提取偏置b),将输入数据Xi、权值w和偏置b传输至运算单元的主处理电路。
主处理电路将输入数据Xi作为分发数据拆分成n个数据块;
主处理电路依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将该乘法指令、权值w以广播的方式发送给K个从处理电路,K个从处理电路将该乘法指令、权值w转发给其他从处理电路,将该n个数据块分发给该K个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);K个从处理电路,用于将该数据块分发给其他从处理电路;多个从处理电路,用于依据该乘法指令将该权值w与接收到的数据块执行乘法运算得到中间结果,将该中间结果通过K个从处理电路发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏执指令将该累加结果执行加偏执b得到最终结果,将该最终结果发送至该控制器单元。
上述将n个数据块分发给该K个从处理电路的具体含义可以为,将n个数据块中的一个数据块仅发送给k个从处理电路中的1个处理电路。上述将权值w以广播方式发送给k个从处理电路的具体含义可以为,将权值w以广播形式发送给k个从处理电路中的每个从处理电路。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
本申请实施例还提供一种网络模型的计算方法,所述方法由计算装置执行,所述网络模型包括:神经网络模型和/或非神经网络模型;所述计算装置包括:运算单元、控制器单元以及存储单元,所述存储单元包括:数据输入输出单元,所述运算单元包括:一个主处理电路以及多个从处理电路,所述主处理电路与多个从处理电路连接;
所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述数据输入输出单元获取计算数据、网络模型以及计算指令,所述计算数据包括:输入数据和权值数据;
所述控制器单元从存储单元获取计算指令,将该计算指令、计算数据发送给所述主处理电路;
所述主处理电路将所述计算数据中的输入数据或权值数据中的一个数据作为分发数据分配成多个分发数据块,将该多个分发数据块分发给所述k个从处理电路,将所述广播数据转发给所述k个从处理电路,解析该计算指令得到多个运算指令,将该多个运算指令中至少一个运算指令分发给所述k个从处理电路,所述广播数据为所述计算数据中的输入数据或权值数据中的另一个数据;
所述K个从处理电路在所述主处理电路以及多个从处理电路之间的数据以及运算指令的转发;
所述多个从处理电路依据该运算指令对接收到的数据执行运算得到中间结果,并将中间结果通过与所述k个从处理电路传输给所述主处理电路;
所述主处理电路将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
本申请提供的方法由主处理电路能够根据运算指令的需要将运算单元内的输入数据分配成多个数据块,将所述多个数据块发送给所述运算单元的多个运算模块,进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结果的优点,从来提高了计算的效率,提高了计算效率,节能了能耗。
本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图3为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图4所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还公开了一种芯片,其包括了上述用于执行数据处理方法所对应的神经网络处理器。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,公开了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (12)

1.一种计算装置,其特征在于,所述计算装置用于执行网络模型的计算,所述网络模型包括:神经网络模型和/或非神经网络模型;所述计算装置包括:运算单元、控制器单元以及存储单元,所述存储单元包括:数据输入输出单元,所述运算单元包括:一个主处理电路以及多个从处理电路,所述主处理电路与多个从处理电路连接;
所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述数据输入输出单元,用于获取计算数据、网络模型以及计算指令,所述计算数据包括:输入数据和权值数据;
所述控制器单元,用于从存储单元获取计算指令,将该计算指令、计算数据发送给所述主处理电路;
所述主处理电路,用于将所述计算数据中的输入数据或权值数据中的一个数据作为分发数据分配成多个分发数据块,将该多个分发数据块分发给所述k个从处理电路,将广播数据转发给所述k个从处理电路,解析该计算指令得到多个运算指令,将该多个运算指令中至少一个运算指令分发给所述k个从处理电路,所述广播数据为所述计算数据中的输入数据或权值数据中的另一个数据;
所述k个从处理电路,用于转发所述主处理电路以及多个从处理电路之间的数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据执行运算得到中间结果,并将中间结果通过与所述k个从处理电路传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
2.根据权利要求1所述的装置,其特征在于,所述存储单元还包括:存储介质和标量数据存储单元;
所述存储介质,用于存储所述网络模型、输入数据、权值数据;
所述标量数据存储单元,用于存储标量数据。
3.根据权利要求1所述的装置,其特征在于,所述控制器单元包括:指令存储单元、指令处理单元和存储队列单元;
所述指令存储单元,用于存储所述网络模型关联的计算指令;
所述指令处理单元,用于对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
4.根据权利要求3所述的装置,其特征在于,所述运算单元包括:依赖关系处理单元;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
5.根据权利要求1所述的装置,其特征在于,
所述主处理电路,用于将所述广播数据分配成多个广播数据块,将该多个广播数据块转发给所述多个从处理电路。
6.一种芯片,其特征在于,所述芯片包括如上权利要求1-5任意一项所述的计算装置。
7.一种电子设备,其特征在于,所述电子设备包括如上权利要求6所述的芯片。
8.一种网络模型的计算方法,所述方法由计算装置执行,所述网络模型包括:神经网络模型和/或非神经网络模型;所述计算装置包括:运算单元、控制器单元以及存储单元,所述存储单元包括:数据输入输出单元,所述运算单元包括:一个主处理电路以及多个从处理电路,所述主处理电路与多个从处理电路连接;
所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述数据输入输出单元获取计算数据、网络模型以及计算指令,所述计算数据包括:输入数据和权值数据;
所述控制器单元从存储单元获取计算指令,将该计算指令、计算数据发送给所述主处理电路;
所述主处理电路将所述计算数据中的输入数据或权值数据中的一个数据作为分发数据分配成多个分发数据块,将该多个分发数据块分发给所述k个从处理电路,将广播数据转发给所述k个从处理电路,解析该计算指令得到多个运算指令,将该多个运算指令中至少一个运算指令分发给所述k个从处理电路,所述广播数据为所述计算数据中的输入数据或权值数据中的另一个数据;
所述k个从处理电路转发所述主处理电路以及多个从处理电路之间的数据以及运算指令;
所述多个从处理电路依据该运算指令对接收到的数据执行运算得到中间结果,并将中间结果通过与所述k个从处理电路传输给所述主处理电路;
所述主处理电路将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
9.根据权利要求8所述的方法,其特征在于,所述存储单元还包括:存储介质和标量数据存储单元;
所述存储介质,用于存储所述网络模型、输入数据、权值数据;
所述标量数据存储单元,用于存储标量数据。
10.根据权利要求8所述的方法,其特征在于,所述控制器单元包括:指令存储单元、指令处理单元和存储队列单元;
所述指令存储单元,用于存储所述网络模型关联的计算指令;
所述指令处理单元,用于对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
11.根据权利要求10所述的方法,其特征在于,所述运算单元包括:依赖关系处理单元;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
12.根据权利要求8所述的方法,其特征在于,
所述主处理电路,用于将所述广播数据分配成多个广播数据块,将该多个广播数据块转发给所述多个从处理电路。
CN201810147903.0A 2018-02-12 2018-02-12 一种网络模型的计算方法及装置 Active CN110163349B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810147903.0A CN110163349B (zh) 2018-02-12 2018-02-12 一种网络模型的计算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810147903.0A CN110163349B (zh) 2018-02-12 2018-02-12 一种网络模型的计算方法及装置

Publications (2)

Publication Number Publication Date
CN110163349A CN110163349A (zh) 2019-08-23
CN110163349B true CN110163349B (zh) 2021-03-23

Family

ID=67635290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810147903.0A Active CN110163349B (zh) 2018-02-12 2018-02-12 一种网络模型的计算方法及装置

Country Status (1)

Country Link
CN (1) CN110163349B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112766473B (zh) * 2019-11-01 2023-12-05 中科寒武纪科技股份有限公司 运算装置及相关产品
CN112765539B (zh) * 2019-11-01 2024-02-02 中科寒武纪科技股份有限公司 运算装置、方法及相关产品
CN113867790A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡和计算方法
CN112491555B (zh) * 2020-11-20 2022-04-05 山西智杰软件工程有限公司 医疗电子签名的处理方法及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080180450A1 (en) * 1997-12-23 2008-07-31 Micron Technology, Inc. Split Embedded DRAM Processor
CN105426344A (zh) * 2015-11-09 2016-03-23 南京大学 基于Spark的分布式大规模矩阵乘法的矩阵计算方法
CN106126481A (zh) * 2016-06-29 2016-11-16 华为技术有限公司 一种计算引擎和电子设备
CN107229967A (zh) * 2016-08-22 2017-10-03 北京深鉴智能科技有限公司 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN107329734A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络正向运算的装置和方法
CN107341541A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 一种用于执行全连接层神经网络训练的装置和方法
CN107608715A (zh) * 2017-07-20 2018-01-19 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080180450A1 (en) * 1997-12-23 2008-07-31 Micron Technology, Inc. Split Embedded DRAM Processor
CN105426344A (zh) * 2015-11-09 2016-03-23 南京大学 基于Spark的分布式大规模矩阵乘法的矩阵计算方法
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN107329734A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络正向运算的装置和方法
CN107341541A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 一种用于执行全连接层神经网络训练的装置和方法
CN106126481A (zh) * 2016-06-29 2016-11-16 华为技术有限公司 一种计算引擎和电子设备
CN107229967A (zh) * 2016-08-22 2017-10-03 北京深鉴智能科技有限公司 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法
CN107608715A (zh) * 2017-07-20 2018-01-19 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置及方法

Also Published As

Publication number Publication date
CN110163349A (zh) 2019-08-23

Similar Documents

Publication Publication Date Title
US10762164B2 (en) Vector and matrix computing device
CN110147249B (zh) 一种网络模型的计算方法及装置
CN109543832B (zh) 一种计算装置及板卡
CN109522052B (zh) 一种计算装置及板卡
CN110163349B (zh) 一种网络模型的计算方法及装置
CN110163363B (zh) 一种计算装置及方法
CN110163350B (zh) 一种计算装置及方法
CN110059797B (zh) 一种计算装置及相关产品
CN111047022A (zh) 一种计算装置及相关产品
CN111626413A (zh) 一种计算装置及方法
CN107943756B (zh) 一种计算方法及相关产品
CN111161705B (zh) 语音转换方法及装置
CN110059809B (zh) 一种计算装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
US20200242468A1 (en) Neural network computation device, neural network computation method and related products
CN111488963A (zh) 神经网络计算装置和方法
CN111047021B (zh) 一种计算装置及相关产品
CN109740729B (zh) 运算方法、装置及相关产品
CN111368967A (zh) 一种神经网络计算装置和方法
CN110472734B (zh) 一种计算装置及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN111368986B (zh) 一种神经网络计算装置和方法
CN111368990B (zh) 一种神经网络计算装置和方法
CN111178373B (zh) 运算方法、装置及相关产品
CN111738429B (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