CN108121688A - 一种计算方法及相关产品 - Google Patents
一种计算方法及相关产品 Download PDFInfo
- Publication number
- CN108121688A CN108121688A CN201711362566.9A CN201711362566A CN108121688A CN 108121688 A CN108121688 A CN 108121688A CN 201711362566 A CN201711362566 A CN 201711362566A CN 108121688 A CN108121688 A CN 108121688A
- Authority
- CN
- China
- Prior art keywords
- matrix
- operational order
- stage
- pipelining
- instruction
- 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.)
- Granted
Links
- 238000000205 computational method Methods 0.000 title claims description 8
- 239000011159 matrix material Substances 0.000 claims abstract description 496
- 238000003860 storage Methods 0.000 claims abstract description 155
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000004364 calculation method Methods 0.000 claims abstract description 19
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008901 benefit Effects 0.000 abstract description 7
- 230000010365 information processing Effects 0.000 abstract 1
- 238000003672 processing method Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 5
- 241001269238 Data Species 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004378 air conditioning Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000002604 ultrasonography Methods 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- -1 columns Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本公开提供了一种信息处理方法,所述方法应用于计算装置内,所述计算装置包括:存储介质、寄存器单元和矩阵计算单元;所述方法包括如下步骤:所述计算装置控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示;所述计算装置控制所述运算单元依据所述矩阵读取指示向所述存储介质发送读取命令;所述计算装置控制所述运算单元依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。本申请提供的技术方案具有计算速度快,效率高的优点。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种计算方法及相关产品。
背景技术
数据处理是大部分算法需要经过的步骤或阶段,在计算机引入数据处理领域后,越来越多的数据处理通过计算机来实现,现有的算法中有计算设备在进行矩阵数据的计算时速度慢,效率低。
申请内容
本申请实施例提供了一种计算方法及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种计算方法,应用于计算装置内,所述计算装置包括存储介质、寄存器单元和矩阵运算单元,所述方法包括:
所述计算装置控制所述矩阵运算单元获取第一运算指令,所述第一运算指令用于实现矩阵到矩阵之间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同或长度不同的矩阵;
所述计算装置控制所述矩阵运算单元依据所述矩阵读取指示向所述存储介质发送读取命令;
所述计算装置控制所述矩阵运算单元采用批量读取方式从所述存储介质中读取所述矩阵读取指示所对应的矩阵,并对所述矩阵执行所述第一运算指令。
在一些可能的实施例中,所述对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
在一些可能的实施例中,所述多级流水级中每个流水级中包括有预先设置的固定运算器,每个流水级中的固定运算器不相同;
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据所述第一运算指令对应的计算网络拓扑,利用第K1级流水级中的选择运算器对所述矩阵进行计算得到第一结果,再将所述第一结果输入到第K2级流水级中的选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入到第Kj级流水级中的选择运算器执行计算得到第i个结果;将所述第i个结果输入至所述存储介质进行存储;
其中,Kj属于i个流水级中的任一流水级,j小于等于i,且j和i均为正整数,所述多级流水级的数量i、所述多级流水级被选择的执行顺序Kj以及所述第Kj级流水级中的选择运算器均是根据所述第一运算指令的计算拓扑结构确定的,所述选择运算器是所述固定运算器中的运算器。
在一些可能的实施例中,所述多级流水级中的每个流水级所包括的固定运算器以及所述固定运算器的数量是由用户侧或所述计算装置侧自定义设置的。
在一些可能的实施例中,所述多级流水级中每个流水级中的运算器包括以下中的任一项或多项的组合:矩阵加法运算器、矩阵比较运算器以及矩阵逻辑运算器。
在一些可能的实施例中,所述第一运算指令包括以下中的任一项:矩阵逐元素与指令MAND、矩阵逐元素或指令MOR、矩阵逐元素非指令MNON、矩阵逐元素异或指令MXOR、矩阵与定值比较指令MTCOM、矩阵与矩阵比较指令MCOM、矩阵数据选择指令MSEL。
在一些可能的实施例中,所述第一运算指令的指令格式包括操作码和至少一个操作域,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。可选地,可在相应寄存器中获取以下中信息中的任一项或多项的组合:所述指令所需矩阵的行数、列数、数据类型、标识、存储地址(首地址)以及维数长度,所述维数长度是指矩阵行的长度和/或矩阵列的长度。
在一些可能的实施例中,所述多级流水级为三级流水级,第三级流水级中包括预先设置的矩阵逻辑运算器;所述第一运算指令为以下指令中的任一项:矩阵逐元素与指令MAND、矩阵逐元素或指令MOR、矩阵逐元素非指令MNON、矩阵逐元素异或指令MXOR,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第三级流水级中的矩阵逻辑运算器对所述矩阵对应进行以下操作中的任一项一得到第一结果:矩阵逐元素的与操作运算、矩阵逐元素的或操作运算、矩阵逐元素的非操作运算以及矩阵逐元素的异或操作运算;将所述第一结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述多级流水级为三级流水级,第二级流水级中包括预先设置的矩阵比较运算器;所述第一运算指令为矩阵与定值比较指令MTCOM或者矩阵与矩阵比较指令MCOM,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵比较运算器对所述矩阵进行矩阵逐元素与指定数值的比较操作运算,或者进行对应矩阵元素的比较操作运算得到第一结果;将所述第一结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述多级流水级为三级流水级,第二级流水级中包括预先设置的矩阵比较运算器;所述第一运算指令为矩阵数据选择指令MSEL,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵比较运算器对所述矩阵进行矩阵元素的选择操作运算以得到第一结果;将所述第一结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
在一些可能的实施例中,当所述矩阵读取指示为所述指令所需矩阵的标识时,
所述计算装置控制所述矩阵运算单元依据所述矩阵读取指示向所述存储介质发送读取命令包括:
所述计算装置控制所述矩阵运算单元依据所述标识从所述寄存器单元中采用单位读取方式读取所述标识对应的存储地址;
所述计算装置控制所述矩阵运算单元向所述存储介质发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
在一些可能的实施例中,所述计算装置还包括:缓存单元,所述方法还包括:
所述计算装置将待执行的运算指令缓存于所述缓存单元内。
在一些可能的实施例中,在所述计算装置控制所述矩阵运算单元获取第一运算指令之前,所述方法还包括:
所述计算装置确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如果所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存于所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如果所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如果所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
第二方面,提供一种计算装置,所述计算装置包括用于执行上述第一方面的方法的功能单元。
第三方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
第四方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行第一方面提供的方法。
第五方面,提供了一种芯片,所述芯片包括如上第二方面提供的计算装置。
第六方面,提供了一种芯片封装结构,所述芯片封装结构包括如上第五方面提供的芯片。
第七方面,提供了一种板卡,所述板卡包括如上第六方面提供的芯片封装结构。
第八方面,提供了一种电子设备,所述电子设备包括如上第七方面提供的板卡。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
实施本申请实施例,具有如下有益效果:
可以看出,通过本申请实施例,计算装置设置有寄存器单元和存储介质,分别用于存储标量数据以及矩阵数据,并且本申请为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本申请提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算装置的结构示意图。
图2是本申请实施例提供的一种运算单元的结构示意图。
图3是本发明实施例提供的一种计算方法的流程示意图。
图4是本申请实施例提供的一种流水级的架构示意图。
图5是本申请实施例提供的流水级的结构示意图。
图6A和图6B是本申请实施例提供的两种指令集的格式示意图。
图7A和图7B是本申请实施例提供的另两种计算装置的结构示意图。
图8是本申请实施例提供的计算装置执行矩阵逐元素与指令的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
需要说明的是,本申请涉及的矩阵具体可以为m*n矩阵,其中,m和N为大于等于1的整数,当m或n为1时,可表示为1*n矩阵或m*1矩阵,也可以称为向量;当m和n同时为1时,可以视为1*1的特殊矩阵。下述矩阵均可以为上述三种类型矩阵中的任意一种,下面不在赘述。
本申请实施例提供一种计算方法,该计算方法可应用于计算装置中。如图1,是本发明实施例示出的一种可能的计算装置的结构示意图。如图1所示的计算装置包括:
存储介质201、用于存储矩阵。优选的该存储介质可以是高速暂存存储器,能够支持不同长度的矩阵数据;本申请将必要的计算数据暂存在高速暂存存储器上(ScratchpadMemory),使本运算装置在进行矩阵运算过程中可以更加灵活有效地支持不同长度的数据。上述存储介质还可以为片外数据库、数据库或其他的能够存储的介质等等。
寄存器单元202,用于存储标量数据,其中,该标量数据包括但不限于:矩阵数据(本申请也称为矩阵)在存储介质201的存储地址以及矩阵与标量运算时的标量。在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放矩阵地址,还存放有标量数据。应理解的,矩阵地址(即矩阵的存储地址,如首地址)也为标量。当涉及到矩阵与矩阵的运算时,运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量,例如矩阵的行数、列数、矩阵数据的类型(也可称为数据类型)、矩阵维数长度(具体可为矩阵行的长度、矩阵列的长度等)。
运算单元203(本申请也称为矩阵运算单元203),用于获取并执行第一运算指令。如图2所示,该运算单元包括多个运算器,该运算器包括但不限于:矩阵加法运算器2031、矩阵乘法运算器2032、大小比较运算器2033(也可为矩阵比较运算器)、非线性运算器2034和矩阵标量乘法运算器2035。
该方法如图3所示,包括如下步骤:
步骤S301、运算单元203获取第一运算指令,所述第一运算指令用于实现矩阵到矩阵的运算,所述第一运算指令包括:执行该指令所需的矩阵读取指示。
在步骤S301中,上述执行该指令所需的矩阵读取指示具体可以为多种,例如,在本申请一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的存储地址。又如,在本申请另一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的标识,该标识的表现形式可以为多种,例如,矩阵的名称,又如,矩阵的识别号,再如该矩阵在寄存器单元的寄存器号或存储地址。
下面通过一个实际的例子来说明上述第一运算指令包含的执行该指令所需的矩阵读取指示,这里假设该矩阵运算公式为f(x)=A+B,其中,A、B均为矩阵。那么在第一运算指令中除了携带该矩阵运算公式外,还可以携带该矩阵运算公式所需矩阵的存储地址,具体的,例如A的存储地址为0000-0FFF,B的存储地址为1000-1FFF。又如,可以携带A以及B的标识,例如A的标识为0101,B的标识为1010。
步骤S302、运算单元203依据该矩阵读取指示向所述存储介质201发送读取命令。
上述步骤S302的实现方法具体可以为:
如该矩阵读取指示可以为所需矩阵的存储地址,运算单元203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
又如该矩阵读取指示可以为所需矩阵的标识时,运算单元203依据该标识从寄存器单元处采用单位读取方式读取该标识对应的存储地址,然后运算单元203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
上述单个读取方式具体可以为,每次读取均为单位的数据,即1bit数据。此时设置单位读取方式即1位读取方式的原因为,对于标量数据来说,其占用的容量非常小,如果采用批量数据读取方式,那么读取的数据量容易大于所需的数据的容量,这样会导致带宽的浪费,所以对于标量的数据这里采用单位读取方式来读取以减少带宽的浪费。
步骤S303、运算单元203采用批量读取方式读取该指示对应的矩阵,对该矩阵执行所述第一运算指令。
上述步骤S303中批量读取方式具体可以为,每次读取均为多位的数据,例如每次读取的数据位数为16bit、32bit或64bit,即无论其所需的数据量是多少,其每次读取的均为固定多位数的数据,此批量读取的数据方式非常适合大数据的读取,对于矩阵来说,由于其所占用的容量大,如果采用单个读取方式,其读取的速度会非常慢,所以这里采用批量读取方式来获取多位的数据从而快速读取矩阵数据,避免因为读取矩阵数据过慢影响矩阵计算速度的问题。
本申请提供的技术方案的计算装置设置有寄存器单元了存储介质,其分别存储标量数据以及矩阵数据,并且本申请为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本申请提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
可选的,上述对该矩阵执行所述第一运算指令具体可以为:
运算单元203可采用多级流水级的计算方式来实现,其中,该多级流水级可为用户侧或所述计算装置侧预先自定义设置的,即是固定设计好的。例如本申请所述计算装置中设计有i级流水级。以下为具体实施方式:
运算单元可根据所述第一运算指令对应的计算网络拓扑,选择利用第K1级流水级中的选择运算器对所述矩阵执行计算得到第一结果,然后再选择利用第K2级流水级中的选择运算器对所述第一结果执行计算得到第二结果,以此类推,选择第Kj级流水级中的选择运算器对第i-1个结果执行计算得到第i个结果,直至完成所述第一运算指令的运算。这里第i个结果即为输出结果(具体为输出矩阵)。进一步地,运算单元203可将该输出结果存储至存储介质201。
其中,所述多级流水级的数量i、所述多级流水级的执行顺序(即选择Kj级流水级)以及所述第Kj级流水级中的选择运算器都具体是根据所述第一运算指令的计算拓扑结构确定的,i为正整数。通常,i=3。每个流水级中可设置有相应地的运算器,该运算器包括但不限于以下中的任一项或多项的组合:矩阵加法运算器、矩阵标量乘法运算器、非线性运算器、矩阵比较运算器以及其他矩阵运算器。即是,每个流水级中所包含的固定运算器以及固定运算器的数量可以是有用户侧或所述计算装置侧自定义设置的,不做限定。
应理解的,本申请中上述计算装置中,每次选择执行的第K1、K2…Kj级流水级以及流水级中的选择运算器都可被重复选择,即是不限定每个流水级的执行次数。后文将以所述第一运算指令为矩阵求逆指令为例,进行详述。
具体实现中,如图4示出一种流水级的架构示意图。如图4,i级流水级之间可存在全连接的旁路设计(即图示的旁路电路),用于根据第一运算指令对应的计算网络拓扑,选择当前所需使用的流水级以及该流水级中某个运算器(即本申请中的选择运算器)。可选地,还用于多个流水级之间的数据传输,例如将第三级流水级的输出结果转发至第一级流水级作为输入,原始输入可以作为三级流水级的任意一级的输入,任意一级的输出可以作为运算单元的最终输出等。
以i=3,三级流水为例,运算单元可通过旁路电路,分别选择流水级的执行顺序以及流水级中各自所需使用的运算器(也可称为运算部件)。如图5示出一种流水级的操作流程示意图。相应地,运算单元对该矩阵执行第一流水级的计算得到第一结果,(可选的)将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,(可选的)将第二结果输入到第三流水级执行第三流水级计算得到第三结果,(可选的)将第三结果存储至存储介质201。
上述第一流水级包括但不限于:矩阵乘法运算器等等。
上述第二流水级包括但不限于:矩阵加法运算器、大小比较运算器等等。
上述第三流水级包括但不限于:非线性运算器、矩阵标量乘法运算器、矩阵逻辑运算器等等。
将矩阵分三个流水级运算主要是为了提高运算的速度,对于矩阵的计算来说,例如采用通用处理器在计算时,其运算的步骤具体可以为,处理器对矩阵进行计算得到第一结果,然后将第一结果存储在内存中,处理器从内存读取第一结果执行第二次计算得到第二结果,然后将第二结果存储在内存中,处理器从内从读取第二结果执行第三次计算得到第三结果,然后将第三结果存储在内存中。从上述计算的步骤可以看出,在通用处理器进行矩阵计算时,其并没有分流水级进行计算,那么每次计算完毕后均需要将计算完的数据进行保存,下次计算时需要再次读取,所以此方案需要重复存储读取多次数据,对于本申请的技术方案来说,第一流水级计算的第一结果直接进入第二流水级进行计算,第二流水级计算的第二结果直接进入到第三流水级进行计算,第一流水级与第二流水级计算的第一结果和第二结果无需存储,首先其减少了内存的占用空间,其次,其避免了结果的多次存储以及读取,提高了带宽的利用率,进一步提高了计算效率。
在本申请另一实施例中,可以自由组合各流水部件或者采取一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组合。即是,本申请中设计的i个流水级支持任意多个流水级并联、串联以及合并,以构成不同的排列组合,本申请不做限定。
需要说明的是,上述计算装置中每个流水级中的运算器是预先自定义设置好的,一旦确定不容更改;即i级流水级可设计为任意运算器的排列组合,i级流水级一经驱动不再更改,不同的运算指令可设计不同的i级流水级装置。其中,该计算装置可根据具体指令的需求,适应性增加/较少流水级的数量。最后,可将为不同指令设计的流水级装置组合在一起,形成所述计算装置。
采用上述计算装置(即每级流水级中的运算器/运算部件设计固定),具有以下以下有益效果:除提高带宽外,无额外的选择信号判断开销,不同流水级之间无相同的运算部件重叠和冗余,复用性高,面积小。
可选的,上述计算装置还可以包括:缓存单元204,用于缓存第一运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将背提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。
可选的,上述方法在步骤S301之前还可以包括:
确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系,如第一运算指令与第一运算指令之前的第二运算指令存在关联关系,则在第二运算指令执行完毕以后,从缓存单元中提取出该第一运算指令传递至运算单元203。如第一运算指令与该第一运算指令之前的指令无关联关系,则直接将第一运算指令传递至运算单元。
上述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系的具体实现方法可以为:
依据该第一运算指令提取该第一运算指令中所需矩阵的第一存储地址区间,依据该第二运算指令提取该第二运算指令中所需矩阵的第二存储地址区间,如第一存储地址区间与第二存储地址区间具有重叠的区域,则确定第一运算指令与第二运算指令具有关联关系。如第一存储地址区间与第二存储地址区间无重叠的区域,则确定第一运算指令与第二运算指令不具有关联关系。
此存储地区区间中有重叠区域出现说明第一运算指令与第二运算指令访问了相同的矩阵,对于矩阵来说,由于其存储的空间比较大,比如采用相同的存储区域作为判断是否为关联关系的条件,可能出现的情况是,第二运算指令访问的存储区域包含了第一运算指令访问的存储区域,例如,第二运算指令访问A矩阵存储区域、B矩阵存储区域和C矩阵存储区域,如果A、B存储区域相邻或A、C存储区域相邻,则第二运算指令访问的存储区域为,A、B存储区域以及C存储区域,或A、C存储区域以及B存储区域。这种情况下,如果第一运算指令访问的为A矩阵与D矩阵的存储区域,那么第一运算指令访问的矩阵的存储区域无法与第二运算指令范文的矩阵的存储区域相同,如果采用相同的判断条件,则确定第一运算指令与第二运算指令不关联,但是实践证明,此时第一运算指令与第二运算指令属于关联关系,所以本申请通过是否有重叠区域来判断是否为关联关系的条件,能够避免上述情况的误判。
下面以一个实际的例子来说明何种情况属于关联关系,何种情况属于非关联关系。这里假设第一运算指令所需的矩阵为A矩阵和D矩阵,其中A矩阵的存储区域为【0001,0FFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001,0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存储区域为:【0001,0FFF】、【A000,AFFF】,对于第二运算指令来说,其对应的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域与第一运算指令的存储区域具有重叠区域【0001,0FFF】,所以第一运算指令与第二运算指令具有关联关系。
这里假设第一运算指令所需的矩阵为E矩阵和D矩阵,其中A矩阵的存储区域为【C000,CFFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001,0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存储区域为:【C000,CFFF】、【A000,AFFF】,对于第二运算指令来说,其对应的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域与第一运算指令的存储区域不具有重叠区域,所以第一运算指令与第二运算指令无关联关系。
本申请中,如图6A是本申请提供的一种指令(具体可为第一运算指令,也可为操作指令)的指令集的格式示意图,如图6A所示,运算指令包括一操作码和至少一操作域,其中,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。
即第一运算指令可以包括:操作域以及至少一个操作码,以矩阵运算指令为例,如表1所示,其中,寄存器0、寄存器1、寄存器堆2、寄存器3、寄存器4可以为操作域。其中,每个寄存器0、寄存器1、寄存器2、寄存器3、寄存器4用于标识寄存器的编号,其可以是一个或者多个寄存器。应理解的,操作码中寄存器的数量并不做限定,每个寄存器均用于存储运算指令的相关数据信息。
如图6B是本申请提供的另一种指令(可为第一运算指令,也可称为操作指令)的指令集的格式示意图,如图6B所示,指令包括至少两个操作码和至少一操作域,其中,所述至少两个操作码包括第一操作码和第二操作码(图示分别为操作码1和操作码2)。所述操作码1用于指示指令的类型(即某大类指令),例如可具体可为IO指令、逻辑指令或者运算指令等等,所述操作码2用于指示指令的功能(即大类指令下的具体指令的解释),例如运算指令中的矩阵运算指令(如矩阵乘向量指令MMUL、矩阵求逆指令MINV等)、向量运算指令(如向量求导指令VDIER等)等等,本申请不做限定。
应理解的,指令的格式可以是用户侧或所述计算装置侧自定义设置的。指令的操作码可设计为固定长度,例如8bit、16bit等等。如图6A示出的指令格式具有以下优势特征:操作码占用位数少、译码系统设计简单。如图6B示出的指令格式具有以下优势特征:可变长、译码平均效率更高,当某大类指令下具体指令较少且调用频次高的情况下,设计其第二操作码(即操作码2)的长度短小,可提高译码效率;此外,还能增强指令的可读性和可扩展性,优化指令的编码结构。
本申请实施例中,指令集包含有不同功能的运算指令,具体可为:
矩阵逐元素与指令(MAND),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出两个设定长度的bool矩阵数据,在运算单元中进行对矩阵逐元素与的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵逐元素或指令(MOR),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出两个设定长度的bool矩阵数据,在运算单元中进行对矩阵逐元素或的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵逐元素非指令(MNON),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的bool矩阵数据,在运算单元中进行对矩阵逐元素非的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵逐元素异或指令(MXOR),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出两个设定长度的bool矩阵数据,在运算单元中进行对矩阵逐元素异或的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵判断与定值比较结果返回bool矩阵指令(MTCOM,本申请也称为矩阵与定值比较指令),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据和标量阈值数据,在运算单元中进行对矩阵逐元素进行与阈值比较的运算,返回bool矩阵,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵比较返回bool矩阵指令(MCOM,本申请也称为矩阵与矩阵比较指令),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出两个设定长度的矩阵数据,在运算单元中进行对两矩阵逐元素进行比较的运算,返回bool矩阵,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵根据bool值选择数据指令(MSEL,本申请也称为矩阵数据选择指令),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出个设定长度的矩阵数据和同规模的bool矩阵,在运算单元中进行根据bool矩阵每一位置的bool值来进行数值矩阵相应位置的值选取的运算,返回数值矩阵,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
应理解的,本申请提出的矩阵操作/运算指令主要用于矩阵布尔bool操作,为节省开销或多路选择器的选择负担,本申请每级流水级中设计的运算器包含但不限于以下中的任一项或多项的组合:矩阵加法运算器、矩阵比较运算器以及矩阵逻辑运算器。
下面示例给出本申请涉及的一种可能的计算装置的结构示意图,其主要用于本申请中的矩阵布尔bool操作运算。相应地,基于上述计算装置,本申请还将举例说明本申请涉及的运算指令(即第一运算指令)的计算。
如图7A,是本申请提出的用于矩阵逻辑运算(即bool操作运算)的专有装置。其中,该装置支持的输入矩阵包括但不限于数值矩阵以及逻辑矩阵,且对输入矩阵的数量并不做限定,图示为两个输入矩阵,分别是逻辑矩阵和数值矩阵。应理解的输入矩阵由第一运算指令决定,具体是由对所述第一运算指令进行译码后所产生的控制信号(图示为输入控制信号)决定。同时译码后产生的控制信号(图示为运算控制信号)可控制运算单元中所使用的具体运算器,如矩阵比较运算器、矩阵逻辑运算器等等。相应地,运算单元支持的输出矩阵包括但不限于数值矩阵、逻辑矩阵等形式,不做限定。以矩阵数据选择指令MSEL(具体可为bool值选择数据),通过对该指令译码后获得输入控制信号和运算控制信号。相应对,通过输入控制信号控制从逻辑矩阵输入端输入bool矩阵,从数值矩阵输入端输入待选择的数值矩阵;进一步地,通过运算控制信号运算单元选择利用矩阵比较运算器完成对bool矩阵逐元素比较以从数值矩阵中选出符合要求(如bool矩阵中元素位置为1)的元素的操作,并将选出后的数值矩阵作为装置的输出写回。
下面举例说明本申请涉及的运算指令(即第一运算指令)的计算。
以所述第一运算指令为矩阵逐元素与指令MAND,对给定两个布尔bool矩阵进行逐元素与操作。具体实现时,给定两个同样规模的布尔矩阵A和布尔矩阵B(其元素为逻辑非0,或逻辑是1),按照如下公式将两个矩阵中相同位置的元素进行逻辑与运算以得到输出矩阵C。
相应地,矩阵逐元素与指令MAND的指令格式具体为:
结合前述实施例,运算单元可获取矩阵逐元素与指令MAND,并对其译码后,获取待处理的布尔bool矩阵(具体为矩阵A和矩阵B),通过旁路电路选择利用第三流水级的矩阵逻辑运算器对矩阵进行逐元素与操作得到第一结果(即输出结果)。可选地,将该第一结果存储至存储介质中。
以所述第一运算指令为矩阵逐元素或指令MOR为例,对给定两个布尔bool矩阵进行逐元素或操作。具体实现时,给定两个同样规模的布尔矩阵A和布尔矩阵B(其元素为逻辑非0,或逻辑是1),按照如下公式将两个矩阵中相同位置的元素进行逻辑或运算以得到输出矩阵C。
相应地,矩阵逐元素或指令MOR的指令格式具体为:
结合前述实施例,运算单元可获取矩阵逐元素或指令MOR,并对其译码后,获取待处理的布尔bool矩阵(具体为矩阵A和矩阵B),通过旁路电路选择利用第三流水级的矩阵逻辑运算器对矩阵进行逐元素或操作得到第一结果(即输出结果)。可选地,将该第一结果存储至存储介质中。
以所述第一运作指令为矩阵逐元素非指令MNON为例,对给定布尔bool矩阵进行逐元素非操作。具体实现时,给定一个布尔矩阵A(其元素为逻辑非0,或逻辑是1),按照如下公式将矩阵中每个位置的元素进行逻辑非运算以得到输出矩阵C。
相应地,矩阵逐元素非指令MNON的指令格式具体为:
结合前述实施例,运算单元可获取矩阵逐元素非指令MNON,并对其译码后,获取待处理的布尔bool矩阵(具体为矩阵A),通过旁路电路选择利用第三流水级的矩阵逻辑运算器对矩阵进行逐元素非操作(即逐元素取反操作)得到第一结果(即输出结果)。可选地,将该第一结果存储至存储介质中。
以所述第一运算指令为矩阵逐元素异或指令MXOR,对给定两个布尔bool矩阵进行逐元素异或操作。具体实现时,给定两个同样规模的布尔矩阵A和布尔矩阵B(其元素为逻辑非0,或逻辑是1),按照如下公式将两个矩阵中相同位置的元素进行逻辑或运算以得到输出矩阵C。
相应地,矩阵逐元素异或指令MXOR的指令格式具体为:
结合前述实施例,运算单元可获取矩阵逐元素异或指令MXOR,并对其译码后,获取待处理的布尔bool矩阵(具体为矩阵A和矩阵B),通过旁路电路选择利用第三流水级的矩阵逻辑运算器对矩阵进行逐元素异或操作得到第一结果(即输出结果)。可选地,将该第一结果存储至存储介质中。
以所述第一运算指令为矩阵与定值比较指令MTCOM为例,判断给定数值矩阵与某给定标量定值的大小关系,以得到结果布尔bool矩阵。具体实现时,将给定数值矩阵A进行逐元素与给定标量定值T进行比较,例如大于该标量定值则返回1,小于该标量定值返回0,从而获得并输出相应地的结果矩阵C。输出矩阵C为和输入矩阵A具备同样规模的布尔矩阵。
相应地,矩阵与定值比较指令MTCOM的指令格式具体为:
结合前述实施例,运算单元可获取矩阵与定值比较指令MTCOM,并对其译码后,获取待处理的数值矩阵(具体为矩阵A)和标量定值(本申请也可为指定数值),通过旁路电路选择利用第二流水级的矩阵比较运算器对矩阵进行逐元素和定值的比较操作运算得到第一结果(即输出结果)。可选地,将该第一结果存储至存储介质中。
以所述第一运算指令为矩阵与矩阵比较指令MCOM为例,比较给定两个数值矩阵的大小关系,以获得结果布尔bool矩阵。具体实现时,给定两个同样规模大小的数值矩阵A和B,对它们逐元素进行大小比较,例如当A在某一位置的元素大于B在该位置的元素则返回1,反之返回0,从而获得并输出相应地的结果矩阵C。输出矩阵C为和输入矩阵A和B具备同样规模的布尔矩阵。
相应地,矩阵与矩阵比较指令MCOM的指令格式具体为:
结合前述实施例,运算单元可获取矩阵与矩阵比较指令MCOM,并对其译码后,获取待处理的数值矩阵(具体为矩阵A和矩阵B),通过旁路电路选择利用第二流水级的矩阵比较运算器对矩阵进行逐元素的比较操作运算得到第一结果(即输出结果)。可选地,将该第一结果存储至存储介质中。
以所述第一运算指令为矩阵数据选择指令MSEL为例,根据给定布尔矩阵的布尔bool值选择给定数值矩阵中的数据。具体实现时,给定一个布尔矩阵A和一个数值矩阵B,对给定的布尔矩阵A逐元素进行判断,例如当某位置的元素为1,则保留数值矩阵中对应位置的数值;反之,当某位置的元素为0,则将数值矩阵中对应位置的数值置为0,从而获得并输出相应地的结果矩阵C。输出矩阵C为和输入矩阵A/B具备同样规模的数值矩阵。
相应地,矩阵数据选择指令MSEL的指令格式具体为:
结合前述实施例,运算单元可获取矩阵数据选择指令MSEL,并对其译码后,获取待处理的矩阵(具体为布尔矩阵A和数值矩阵B),通过旁路电路选择利用第二流水级的矩阵比较运算器对矩阵进行逐元素的比较操作运算,具体为对布尔矩阵A与逻辑是“1”进行比较,相等时返回数值矩阵B中对应位置的元素,从而得到第一结果(即输出结果)。可选地,将该第一结果存储至存储介质中。需要说明的是,上述各种运算指令的获取以及译码将在后文进行详细阐述。应理解的,采用上述计算装置的结构来实现运算指令(如矩阵逐元素与指令MAND、矩阵逐元素或指令MOR等)的计算,可获得如下有益效果:矩阵的规模可变,可以减少指令数量,简化指令的使用;可以处理不同存储格式(行主序和列主序)的矩阵,避免了对矩阵进行变换的开销;支持按照一定间隔存储的矩阵格式,避免了对矩阵存储格式进行变换的执行开销和存储中间结果的空间占用。
上述运算指令(即操作指令)中的设定长度可以由用户自行设定,在一个可选的实施方案中,用户可以将该设置长度设置为一个值,当然在实际应用中,用户也可以将该设置长度设置为多个值。本申请具体实施方式并不限定该设定长度的具体值以及个数。为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
参阅图7B,图7B为本申请具体实施方式提供的另一种计算装置50。图7B所示,计算装置50包括:存储介质501、寄存器单元502(优选的为标量数据存储单元、标量寄存器单元)、运算单元503(也可称矩阵运算单元503)和控制单元504;
存储介质501,用于存储矩阵;
标量数据存储单元502,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储介质内的存储地址;
控制单元504,用于控制所述运算单元获取第一运算指令,所述第一运算指令用于实现矩阵到矩阵间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示;
运算单元503,用于依据所述矩阵读取指示向所述存储介质发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
可选的,上述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
可选的如所述矩阵读取指示为所述指令所需矩阵的标识时,
控制单元504,用于控制所述运算单元依据所述标识从所述寄存器单元出采用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储介质发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
可选的,运算单元503,具体用于采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
可选的,所述多级流水级中每个流水级中包括有预先设置的固定运算器,每个流水级中的固定运算器不相同;
运算单元503,具体用于根据所述第一运算指令对应的计算网络拓扑,利用第K1级流水级中的选择运算器对所述矩阵进行计算得到第一结果,再将所述第一结果输入到第K2级流水级中的选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入到第Kj级流水级中的选择运算器执行计算得到第i个结果;将所述第i个结果输入至所述存储介质进行存储;
其中,Kj属于i个流水级中的任一流水级,j小于等于i,且j和i均为正整数,所述多级流水级的数量i、所述多级流水级被选择的执行顺序Kj以及所述第Kj级流水级中的选择运算器均是根据所述第一运算指令的计算拓扑结构确定的,所述选择运算器是所述固定运算器中的运算器。
可选的,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和大小比较运算器,第三级流水级中包括预先设置的非线性运算器、矩阵标量乘法运算器以及矩阵逻辑运算器;所述第一运算指令为以下指令中的任一项:矩阵逐元素与指令MAND、矩阵逐元素或指令MOR、矩阵逐元素非指令MNON、矩阵逐元素异或指令MXOR,
运算单元503,用于将所述矩阵输入至第三级流水级中的矩阵逻辑运算器对所述矩阵对应进行以下操作中的任一项一得到第一结果:矩阵逐元素的与操作运算、矩阵逐元素的或操作运算、矩阵逐元素的非操作运算以及矩阵逐元素的异或操作运算;将所述第一结果输入至所述存储介质进行存储。
可选的,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和大小比较运算器,第三级流水级中包括预先设置的非线性运算器、矩阵标量乘法运算器以及矩阵逻辑运算器;所述第一运算指令为矩阵与定值比较指令MTCOM或者矩阵与矩阵比较指令MCOM,
运算单元503,用于将所述矩阵输入至第二级流水级中的矩阵比较运算器对所述矩阵进行矩阵逐元素与指定数值的比较操作运算,或者进行对应矩阵元素的比较操作运算得到第一结果;将所述第一结果输入至所述存储介质进行存储。
可选的,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和大小比较运算器,第三级流水级中包括预先设置的非线性运算器、矩阵标量乘法运算器以及矩阵逻辑运算器;所述第一运算指令为矩阵数据选择指令MSEL,
运算单元503,用于将所述矩阵输入至第二级流水级中的矩阵比较运算器对所述矩阵进行矩阵元素的选择操作运算以得到第一结果;将所述第一结果输入至所述存储介质进行存储。
可选的,所述计算装置还包括:
缓存单元505,用于缓存待执行的运算指令;
所述控制单元504,用于将待执行的运算指令缓存于所述缓存单元504内。
可选的,控制单元504,用于确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
可选的,上述控制单元503,可以用于从指令缓存单元获取运算指令,并对该运算指令进行处理后,提供给所述运算单元。其中,控制单元503可以划分为三个模块,分别为:取指模块5031、译码模块5032和指令队列模块5033,
取指模块5031,用于从指令缓存单元中获取运算指令;
译码模块5032,用于对获取的运算指令进行译码;
指令队列5033,用于对译码后的运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
参阅图8,图8是本申请实施例提供的计算装置执行运算指令的流程图,如图8所示,该计算装置的硬件结构参阅图7B所示的结构,如图7B所示的存储介质以高速暂存存储器为例,执行矩阵逐元素与指令MAND的过程包括:
步骤S601,计算装置控制取指模块取出矩阵逐元素与指令,并将该矩阵逐元素与指令送往译码模块。
步骤S602,译码模块对该矩阵逐元素与指令译码,并将该矩阵逐元素与指令送往指令队列。
步骤S603,在指令队列中,该矩阵逐元素与指令需要从标量寄存器堆中获取指令中五个操作域所对应的标量寄存器里的数据,该数据包括输入矩阵A地址、输入矩阵A规模(行数和列数)、输入矩阵B地址、输出矩阵地址。
步骤S604,控制单元确定所述矩阵逐元素与指令与矩阵逐元素与指令之前的运算指令是否存在关联关系,如存在关联关系,将矩阵逐元素与指令存入到缓存单元,如不存在关联管理,将该矩阵逐元素与指令传输至运算单元。
步骤S605,运算单元根据五个操作域所对应的标量寄存器里的数据从高速暂存器中取出需要的矩阵数据,然后在运算单元中完成逐元素与运算。
步骤S606,运算单元运算完成后,将结果写入存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址,重排序缓存中的该矩阵逐元素与指令被提交。
可选的,上述步骤S605中在运算单元执行逐元素与运算时,所述计算装置可采用非线性运算器进行矩阵逐元素与操作运算。
具体实现中,当译码模块对该矩阵逐元素与指令译码后,根据译码所产生的控制信号,将S603所获取的矩阵(具体为矩阵A和矩阵B)输入至通过旁路电路选择的第三级流水级中的非线性运算器执行矩阵逐元素与操作计算得到第一结果,然后根据控制信号,将所述第一结果作为输出结果直接传输至输出端。
上述图8中的运算指令以矩阵逐元素与指令为例,在实际应用中,如图8所示实施例中的矩阵逐元素与指令可以用矩阵逐元素或指令MOR、矩阵逐元素非指令MNON、矩阵逐元素异或指令MXOR、矩阵与定值比较指令MTCOM、矩阵与矩阵比较指令MCOM、矩阵数据选择指令MSEL等矩阵布尔运算/操作指令替换,这里不一一赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任意实施部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任意实施部分或全部步骤。
本申请实施例还提供了一种加速装置,包括:存储器:存储有可执行指令;处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述方法实施例所记载的实施例进行操作。
其中,处理器可以是单个处理单元,但也可以包括两个或更多个处理单元。另外,处理器还可以包括通用处理器(CPU)或者图形处理器(GPU);还可以包括在现场可编程逻辑门阵列(FPGA)或者专用集成电路(ASIC),以对神经网络进行设置和运算。处理器还可以包括用于缓存用途的片上存储器(即包括处理装置中的存储器)。
在一些实施例里,还公开了一种芯片,其包括了上述用于执行上述方法实施例所对应的神经网络处理器。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,公开了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种计算方法,其特征在于,应用于计算装置内,所述计算装置包括存储介质、寄存器单元和矩阵运算单元,所述方法包括:
所述计算装置控制所述矩阵运算单元获取第一运算指令,所述第一运算指令用于实现矩阵到矩阵之间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同或长度不同的矩阵;
所述计算装置控制所述矩阵运算单元依据所述矩阵读取指示向所述存储介质发送读取命令;
所述计算装置控制所述矩阵运算单元采用批量读取方式从所述存储介质中读取所述矩阵读取指示所对应的矩阵,并采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
2.根据权利要求1所述的方法,其特征在于,所述多级流水级中每个流水级中包括有预先设置的固定运算器,每个流水级中的固定运算器不相同;
所述采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据所述第一运算指令对应的计算网络拓扑,利用第K1级流水级中的选择运算器对所述矩阵进行计算得到第一结果,再将所述第一结果输入到第K2级流水级中的选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入到第Kj级流水级中的选择运算器执行计算得到第i个结果;
将所述第i个结果输入至所述存储介质进行存储;
其中,Kj属于i个流水级中的任一流水级,j小于等于i,且j和i均为正整数,所述多级流水级的数量i、所述多级流水级被选择的执行顺序Kj以及所述第Kj级流水级中的选择运算器均是根据所述第一运算指令的计算拓扑结构确定的,所述选择运算器是所述固定运算器中的运算器。
3.根据权利要求2所述的方法,其特征在于,所述多级流水级中的每个流水级所包括的固定运算器以及所述固定运算器的数量是由用户侧或所述计算装置侧自定义设置的;所述多级流水级中每个流水级中的固定运算器包括以下中的任一项或多项的组合:矩阵加法运算器、矩阵比较运算器以及矩阵逻辑运算器。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一运算指令包括以下中的任一项:矩阵逐元素与指令MAND、矩阵逐元素或指令MOR、矩阵逐元素非指令MNON、矩阵逐元素异或指令MXOR、矩阵与定值比较指令MTCOM、矩阵与矩阵比较指令MCOM、矩阵数据选择指令MSEL;
所述第一运算指令的指令格式包括至少一个操作码和至少一个操作域,所述至少一个操作码用于指示所述第一运算指令的功能,所述至少一个操作域用于指示所述第一运算指令的数据信息,所述数据信息包括立即数或寄存器号,用于存储所述矩阵读取指示以及所述矩阵的长度;其中,所述至少一个操作码包括第一操作码和第二操作码,所述第一操作码用于指示所述第一运算指令的类型,所述第二操作码用于指示所述第一运算指令的功能。
5.根据权利要求2所述的方法,其特征在于,所述多级流水级为三级流水级,第三级流水级中包括预先设置的矩阵逻辑运算器;所述第一运算指令为以下指令中的任一项:矩阵逐元素与指令MAND、矩阵逐元素或指令MOR、矩阵逐元素非指令MNON、矩阵逐元素异或指令MXOR,
所述对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第三级流水级中的矩阵逻辑运算器对所述矩阵对应进行以下操作中的任一项一得到第一结果:矩阵逐元素的与操作运算、矩阵逐元素的或操作运算、矩阵逐元素的非操作运算以及矩阵逐元素的异或操作运算;将所述第一结果输入至所述存储介质进行存储。
6.根据权利要求2所述的方法,其特征在于,所述多级流水级为三级流水级,第二级流水级中包括预先设置的矩阵比较运算器;所述第一运算指令为以下中的任一项:矩阵与定值比较指令MTCOM、矩阵与矩阵比较指令MCOM、矩阵数据选择指令MSEL,
所述对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵比较运算器对所述矩阵对应进行以下操作中的任一项得到第一结果:矩阵逐元素与指定数值的比较操作运算、矩阵元素的比较操作运算、矩阵元素的选择操作运算;将所述第一结果输入至所述存储介质进行存储。
7.一种计算装置,其特征在于,所述计算装置包括存储介质、寄存器单元、矩阵运算单元以及控制器单元;
所述存储介质,用于存储矩阵;
所述寄存器单元,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储介质内的存储地址;
所述控制器单元,用于控制所述矩阵运算单元获取第一运算指令,所述第一运算指令用于实现矩阵到矩阵之间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同或长度不同的矩阵;
所述矩阵运算单元,用于依据所述矩阵读取指示向所述存储介质发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,并采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
8.一种芯片,其特征在于,所述芯片包括如上权利要求7所述的计算装置。
9.一种电子设备,其特征在于,所述电子设备包括如上权利要求8所述的芯片。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711362566.9A CN108121688B (zh) | 2017-12-15 | 2017-12-15 | 一种计算方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711362566.9A CN108121688B (zh) | 2017-12-15 | 2017-12-15 | 一种计算方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108121688A true CN108121688A (zh) | 2018-06-05 |
CN108121688B CN108121688B (zh) | 2020-06-23 |
Family
ID=62230143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711362566.9A Active CN108121688B (zh) | 2017-12-15 | 2017-12-15 | 一种计算方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108121688B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107957976A (zh) * | 2017-12-15 | 2018-04-24 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN109032670A (zh) * | 2018-08-08 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量复制指令的方法 |
CN110858151A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种运算流水级重构方法、运算方法和可读存储介质 |
CN110858150A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种具有局部实时可重构流水级的运算装置 |
CN111258643A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111382390A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN114298890A (zh) * | 2021-12-02 | 2022-04-08 | 格兰菲智能科技有限公司 | 数据处理装置及其方法 |
CN115665335A (zh) * | 2022-11-14 | 2023-01-31 | 合肥奔图智造有限公司 | 图像处理方法、装置、图像形成设备及介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050240646A1 (en) * | 2004-04-23 | 2005-10-27 | The Research Foundation Of State University Of New York | Reconfigurable matrix multiplier architecture and extended borrow parallel counter and small-multiplier circuits |
CN101449256A (zh) * | 2006-04-12 | 2009-06-03 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
US20100138631A1 (en) * | 2008-12-02 | 2010-06-03 | Phanimithra Gangalakurti | Process for QR Transformation using a CORDIC Processor |
US20100299509A1 (en) * | 2009-05-19 | 2010-11-25 | International Business Machines Corporation | Simulation system, method and program |
CN102262525A (zh) * | 2011-08-29 | 2011-11-30 | 孙瑞琛 | 基于矢量运算的矢量浮点运算装置及方法 |
CN103902507A (zh) * | 2014-03-28 | 2014-07-02 | 中国科学院自动化研究所 | 一种面向可编程代数处理器的矩阵乘法计算装置及方法 |
CN104217287A (zh) * | 2014-08-30 | 2014-12-17 | 桂林理工大学 | 基于空闲矩阵的多约束无等待混合流水调度建模方法 |
CN106980600A (zh) * | 2016-01-18 | 2017-07-25 | 普天信息技术有限公司 | 一种lte接收系统中fpga处理复数矩阵乘法的方法及系统 |
CN106991077A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种矩阵计算装置 |
CN107305538A (zh) * | 2016-04-22 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种子矩阵运算装置及方法 |
CN107315715A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107341133A (zh) * | 2017-06-24 | 2017-11-10 | 中国人民解放军信息工程大学 | 基于任意维数矩阵lu分解的可重构计算结构的调度方法 |
-
2017
- 2017-12-15 CN CN201711362566.9A patent/CN108121688B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050240646A1 (en) * | 2004-04-23 | 2005-10-27 | The Research Foundation Of State University Of New York | Reconfigurable matrix multiplier architecture and extended borrow parallel counter and small-multiplier circuits |
CN101449256A (zh) * | 2006-04-12 | 2009-06-03 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
US20100138631A1 (en) * | 2008-12-02 | 2010-06-03 | Phanimithra Gangalakurti | Process for QR Transformation using a CORDIC Processor |
US20100299509A1 (en) * | 2009-05-19 | 2010-11-25 | International Business Machines Corporation | Simulation system, method and program |
CN102262525A (zh) * | 2011-08-29 | 2011-11-30 | 孙瑞琛 | 基于矢量运算的矢量浮点运算装置及方法 |
CN103902507A (zh) * | 2014-03-28 | 2014-07-02 | 中国科学院自动化研究所 | 一种面向可编程代数处理器的矩阵乘法计算装置及方法 |
CN104217287A (zh) * | 2014-08-30 | 2014-12-17 | 桂林理工大学 | 基于空闲矩阵的多约束无等待混合流水调度建模方法 |
CN106980600A (zh) * | 2016-01-18 | 2017-07-25 | 普天信息技术有限公司 | 一种lte接收系统中fpga处理复数矩阵乘法的方法及系统 |
CN106991077A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种矩阵计算装置 |
CN107305538A (zh) * | 2016-04-22 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种子矩阵运算装置及方法 |
CN107315715A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107341133A (zh) * | 2017-06-24 | 2017-11-10 | 中国人民解放军信息工程大学 | 基于任意维数矩阵lu分解的可重构计算结构的调度方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107957976A (zh) * | 2017-12-15 | 2018-04-24 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN109032670A (zh) * | 2018-08-08 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量复制指令的方法 |
CN109032670B (zh) * | 2018-08-08 | 2021-10-19 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量复制指令的方法 |
CN110858150A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种具有局部实时可重构流水级的运算装置 |
CN110858151A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种运算流水级重构方法、运算方法和可读存储介质 |
CN110858151B (zh) * | 2018-08-22 | 2022-05-10 | 上海寒武纪信息科技有限公司 | 一种运算流水级重构方法、运算方法和可读存储介质 |
CN111258643A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111382390A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111382390B (zh) * | 2018-12-28 | 2022-08-12 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN114298890A (zh) * | 2021-12-02 | 2022-04-08 | 格兰菲智能科技有限公司 | 数据处理装置及其方法 |
CN114298890B (zh) * | 2021-12-02 | 2024-01-30 | 格兰菲智能科技有限公司 | 数据处理装置及其方法 |
CN115665335A (zh) * | 2022-11-14 | 2023-01-31 | 合肥奔图智造有限公司 | 图像处理方法、装置、图像形成设备及介质 |
CN115665335B (zh) * | 2022-11-14 | 2023-03-21 | 合肥奔图智造有限公司 | 图像处理方法、装置、图像形成设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108121688B (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108121688A (zh) | 一种计算方法及相关产品 | |
CN108009126A (zh) | 一种计算方法及相关产品 | |
CN109086074A (zh) | 机器学习处理器及使用处理器执行向量复制指令的方法 | |
CN108388446A (zh) | 运算模块以及方法 | |
CN107957976B (zh) | 一种计算方法及相关产品 | |
CN107807819A (zh) | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 | |
CN107392309A (zh) | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 | |
CN107169563A (zh) | 应用于二值权重卷积网络的处理系统及方法 | |
CN107957975A (zh) | 一种计算方法及相关产品 | |
CN109032670A (zh) | 神经网络处理装置及其执行向量复制指令的方法 | |
CN108108190B (zh) | 一种计算方法及相关产品 | |
CN115880132B (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN107943756B (zh) | 一种计算方法及相关产品 | |
CN108108189A (zh) | 一种计算方法及相关产品 | |
CN110929854B (zh) | 一种数据处理方法、装置及硬件加速器 | |
CN109754062A (zh) | 卷积扩展指令的执行方法以及相关产品 | |
CN107977231A (zh) | 一种计算方法及相关产品 | |
CN110163349A (zh) | 一种网络模型的计算方法及装置 | |
CN109583579B (zh) | 计算装置及相关产品 | |
CN107957977A (zh) | 一种计算方法及相关产品 | |
CN108090028B (zh) | 一种计算方法及相关产品 | |
CN108037908A (zh) | 一种计算方法及相关产品 | |
CN108021393A (zh) | 一种计算方法及相关产品 | |
CN109582277A (zh) | 数据处理方法、装置及相关产品 | |
CN111142808B (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 | ||
CB02 | Change of applicant information |
Address after: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |