CN112230994A - 一种计算方法及相关产品 - Google Patents

一种计算方法及相关产品 Download PDF

Info

Publication number
CN112230994A
CN112230994A CN202011100339.0A CN202011100339A CN112230994A CN 112230994 A CN112230994 A CN 112230994A CN 202011100339 A CN202011100339 A CN 202011100339A CN 112230994 A CN112230994 A CN 112230994A
Authority
CN
China
Prior art keywords
matrix
instruction
result
operation instruction
pipeline
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.)
Pending
Application number
CN202011100339.0A
Other languages
English (en)
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.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui 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 Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202011100339.0A priority Critical patent/CN112230994A/zh
Publication of CN112230994A publication Critical patent/CN112230994A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本公开提供了一种信息处理方法,所述方法应用于计算装置内,所述计算装置包括:存储介质、寄存器单元和矩阵计算单元;所述方法包括如下步骤:所述计算装置控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示;所述计算装置控制所述运算单元依据所述矩阵读取指示向所述存储介质发送读取命令;所述计算装置控制所述运算单元依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。本申请提供的技术方案具有计算速度快,效率高的优点。

Description

一种计算方法及相关产品
技术领域
本申请涉及数据处理技术领域,具体涉及一种计算方法及相关产品。
背景技术
数据处理是大部分算法需要经过的步骤或阶段,在计算机引入数据处理领域后,越来越多的数据处理通过计算机来实现,现有的算法中有计算设备在进行矩阵数据的计算时速度慢,效率低。
申请内容
本申请实施例提供了一种计算方法及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种计算方法,应用于计算装置内,所述计算装置包括存储介质、寄存器单元和矩阵运算单元,所述方法包括:
所述计算装置控制所述矩阵运算单元获取第一运算指令,所述第一运算指令用于实现矩阵与标量之间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同或长度不同的矩阵;
所述计算装置控制所述矩阵运算单元依据所述矩阵读取指示向所述存储介质发送读取命令;
所述计算装置控制所述矩阵运算单元采用批量读取方式从所述存储介质中读取所述矩阵读取指示所对应的矩阵,并对所述矩阵执行所述第一运算指令。
在一些可能的实施例中,所述对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
在一些可能的实施例中,所述多级流水级中的每个流水级包括有至少一个运算器,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的第一选择运算器对所述矩阵进行计算得到第一结果,将所述第一结果输入到第二级流水级中的第二选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入至第i级流水级中的第i选择运算器执行计算得到第i个结果;
将所述第i个结果输入至所述存储介质进行存储;
其中,所述多级流水级的数量i是根据所述第一运算指令的计算拓扑结构确定的,且i为正整数。
在一些可能的实施例中,所述多级流水级中的每个流水级各自配置有对应的多路选择器,所述多路选择器设置有空选项,所述空选项用于指示与所述多路选择器连接的第k级流水级以及后续的第k+1至第i级流水级均不予执行计算操作,其中,k为小于等于i的正整数。
在一些可能的实施例中,所述多级流水级中的每个流水级所包括的运算器以及所述运算器的数量是由用户侧或所述计算装置侧自定义设置的。
在一些可能的实施例中,所述多级流水级中的每个流水级包括有预先设置的固定运算器,所述每个流水级中的固定运算器均不相同,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元利用第一级流水级中的固定运算器对所述矩阵进行计算得到第一结果,将所述第一结果输入到第二级流水级中的第固定运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入至第i级流水级中的固定运算器执行计算得到第i个结果;
将所述第i个结果输入至所述存储介质进行存储;
其中,所述多级流水级的数量i是根据所述第一运算指令的计算拓扑结构确定的,且i为正整数。
在一些可能的实施例中,所述多级流水级中每个流水级中的运算器包括以下中的任一项或多项的组合:矩阵加法运算器、矩阵乘法运算器、矩阵标量乘法运算器、非线性运算器以及矩阵比较运算器。
在一些可能的实施例中,所述第一运算指令包括以下中的任一项:矩阵求行列式指令MDET、矩阵求秩指令MRANK、矩阵求迹指令MTRA、矩阵求零元素比例指令MNZ、矩阵求主特征值指令MEVA。
在一些可能的实施例中,所述第一运算指令为矩阵求行列式指令MDET,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵比较运算器对所述矩阵进行序列逆序数的运算得到第一结果,将所述第一结果输入至第二级流水级中以利用其内的矩阵乘法运算器对所述第一结果进行所有序列的乘法运算得到第二结果,将所述第二结果输入至第三级流水级中以利用其内的矩阵加法运算器对所述第二结果进行所有序列求和运算得到第三结果;将所述第三结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述第一运算指令为矩阵求秩指令MRANK,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵加法运算器对所述矩阵进行初等行变换得到第一结果,将所述第一结果输入至第二级流水级中的矩阵比较运算器进行非零行数的统计得到第二结果;将所述第二结果输入至所述存储介质进行存储,所述第二结果为矩阵的秩。
在一些可能的实施例中,所述第一运算指令为矩阵求迹指令MTRA,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵比较运算器对所述矩阵进行选对角元素的计算得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器进行矩阵对角元素求和得到第二结果;将所述第二结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述第一运算指令为矩阵求零元素比例指令MNZ,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵比较运算器对所述矩阵进行选零元素得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器中进行矩阵零元素数目统计得到第二结果,将所述第二结果输入至第三级流水级中的矩阵乘法运算器进行矩阵零元素比例计算得到第三结果;将所述第三结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述第一运算指令为矩阵求主特征值指令MEVA,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵加法运算器对所述矩阵进行归一化得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器再次执行归一化得到第二结果,将所述第二结果输入至第三级流水级中的矩阵乘法运算器中进行主特征值的计算得到第三结果;将所述第三结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述第一运算指令的指令格式包括操作码和至少一个操作域,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。可选地,可在相应寄存器中获取以下中信息中的任一项或多项的组合:所述指令所需矩阵的行数、列数、数据类型、标识、存储地址(首地址)以及维数长度,所述维数长度是指矩阵行的长度和/或矩阵列的长度。
在一些可能的实施例中,所述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
在一些可能的实施例中,当所述矩阵读取指示为所述指令所需矩阵的标识时,
所述计算装置控制所述矩阵运算单元依据所述矩阵读取指示向所述存储介质发送读取命令包括:
所述计算装置控制所述矩阵运算单元依据所述标识从所述寄存器单元中采用单位读取方式读取所述标识对应的存储地址;
所述计算装置控制所述矩阵运算单元向所述存储介质发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
在一些可能的实施例中,所述计算装置还包括:缓存单元,所述方法还包括:
所述计算装置将待执行的运算指令缓存于所述缓存单元内。
在一些可能的实施例中,在所述计算装置控制所述矩阵运算单元获取第一运算指令之前,所述方法还包括:
所述计算装置确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如果所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存于所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如果所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如果所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
第二方面,提供一种计算装置,所述计算装置包括用于执行上述第一方面的方法的功能单元。
第三方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
第四方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行第一方面提供的方法。
第五方面,提供了一种芯片,所述芯片包括如上第二方面提供的计算装置。
第六方面,提供了一种芯片封装结构,所述芯片封装结构包括如上第五方面提供的芯片。
第七方面,提供了一种板卡,所述板卡包括如上第六方面提供的芯片封装结构。
第八方面,提供了一种电子设备,所述电子设备包括如上第七方面提供的板卡。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
实施本申请实施例,具有如下有益效果:
可以看出,通过本申请实施例,计算装置设置有寄存器单元和存储介质,分别用于存储标量数据以及矩阵数据,并且本申请为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本申请提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算装置的结构示意图。
图2是本申请实施例提供的一种运算单元的结构示意图。
图3是本发明实施例提供的一种计算方法的流程示意图。
图4A是本申请实施例提供的流水级的架构示意图。
图4B是本申请实施例提供的流水级的另一架构示意图。
图5是本申请实施例提供的流水级的结构示意图。
图6A是本申请实施例提供的指令集的格式示意图。
图6B是本申请实施例提供的指令集的另一格式示意图。
图7是本申请实施例提供的另一种计算装置的结构示意图。
图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级流水级的计算方式对所述矩阵执行所述第一运算指令。具体包括以下几种实施方式。
第一种实施方式中,所述计算装置还可设计至少一个多路选择器MMUX来实现多级流水级的计算。具体如图4A和图4B分别示出两种多流水级的实现架构。如图4A,所述计算装置可为每个流水级设计一个多路选择器MMUX;图4B示出为多个流水级设置一个多路选择器MMUX。多路选择器与其对应所需控制/选择的流水级连接,用于选择该流水级中的运算器以实现相关的计算。应理解的,多路选择器从流水级中所选择的运算器是根据第一运算指令对应的计算网络拓扑确定的,具体将在下文详细介绍。
具体实现中,运算单元203可根据多路选择器的选择,利用第一(级)流水级所选择的第一选择运算器对该矩阵进行计算得到第一结果,然后将第一结果输入第二流水级利用第二流水级所选择的第二选择运算器执行计算得到第二结果,依次类推,将第i-1个结果输入至第i流水级中利用其所选择的第i选择运算器执行计算得到第i个结果。这里第i个结果即为输出结果(具体为输出矩阵)。进一步地,运算单元203可将该输出结果存储至存储介质201。
所述多级流水级的数量i具体是根据所述第一运算指令的计算拓扑结构确定的,i为正整数。通常,i=3。每个流水级中可设置有相应地的运算器,该运算器包括但不限于以下中的任一项或多项的组合:矩阵加法运算器、矩阵标量乘法运算器、非线性运算器、矩阵比较运算器以及其他矩阵运算器。即是,每个流水级中所包含的运算器以及运算器的数量可以是有用户侧或所述计算装置侧自定义设置的,不做限定。
以i=3,三级流水为例,运算单元可通过三个多路选择器,分别选择第一流水级至第三流水级中各自所需使用的运算器(也可称为运算部件);同时,对该矩阵执行第一流水级的计算得到第一结果,(可选的)将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,(可选的)将第二结果输入到第三流水级执行第三流水级计算得到第三结果,(可选的)将第三结果存储至存储介质201。如图5示出一种流水级的操作流程示意图。
上述第一流水级包括但不限于:矩阵乘法运算器等等。
上述第二流水级包括但不限于:矩阵加法运算器、大小比较运算器等等。
上述第三流水级包括但不限于:非线性运算器、矩阵标量乘法运算器等等。
将矩阵分三个流水级运算主要是为了提高运算的速度,对于矩阵的计算来说,例如采用通用处理器在计算时,其运算的步骤具体可以为,处理器对矩阵进行计算得到第一结果,然后将第一结果存储在内存中,处理器从内存读取第一结果执行第二次计算得到第二结果,然后将第二结果存储在内存中,处理器从内从读取第二结果执行第三次计算得到第三结果,然后将第三结果存储在内存中。从上述计算的步骤可以看出,在通用处理器进行矩阵计算时,其并没有分流水级进行计算,那么每次计算完毕后均需要将计算完的数据进行保存,下次计算时需要再次读取,所以此方案需要重复存储读取多次数据,对于本申请的技术方案来说,第一流水级计算的第一结果直接进入第二流水级进行计算,第二流水级计算的第二结果直接进入到第三流水级进行计算,第一流水级与第二流水级计算的第一结果和第二结果无需存储,首先其减少了内存的占用空间,其次,其避免了结果的多次存储以及读取,提高了带宽的利用率,进一步提高了计算效率。
在本申请另一实施例中,可以自由组合各流水部件或者采取一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组合。即是,本申请中设计的i个流水级支持任意多个流水级并联、串联以及合并,以构成不同的排列组合,本申请不做限定。
需要说明的是,每个多路选择器中还可设置有空选项,即与该多路选择器连接的流水级以及后续流水级不参与运算。也即是,本申请中所述空选项用于指示与所述多路选择器连接的第k级流水级以及后续的第k+1至第i级流水级均不予执行计算操作,其中,k为小于等于i的正整数。
以i=3,三级流水为例,如果连接第三流水级的多路选择器选择为空选项,则第三流水级不参与运算,当前执行运算操作的流水级小于三;例如,某运算指令包含两级指令,则第三流水级对应的多路选择器选中空选项。
采用上述计算装置(即设计有多路选择器来选择每级流水级中需使用的运算器/运算部件),具有以下有益效果:除提高带宽外,同时具有逻辑明确,无运算部件的输出结果从后流水级到前流水级的跳转,输入接口和输出接口单一,操作性好的特点。
第二种实施方式中,所述计算装置可为每种运算指令设计相应地的固定流水级实现架构。如上图5示出的一种运算指令对应的三级流水级的实现架构。即是,针对某运算指令而言,每个流水级中所包含的运算器是用户侧或所述计算装置侧预先固定设置好的,本申请也可称为固定运算器。此外,每个流水级中的固定运算器可以相同也可不同,通常是不相同的。例如,第一流水级为矩阵加法运算器,第二级流水为矩阵乘法运算器,第三级流水为非线性运算器;又如,第一流水级为矩阵加法运算器,第二级流水为矩阵加法运算器,第三级流水为矩阵乘法运算器等等。即不同的运算指令,涉及不同的流水级装置(实现架构)。应理解的,根据不同运算指令的实现需求,其涉及的流水级的数量i可不同,可对应增加或较少,本申请不做限定。
具体实现中,运算单元203依次利用第一(级)流水级中的固定运算器对所述矩阵进行计算得到第一结果,将第一结果输入第二流水级以利用其内的固定运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入至第i流水级以利用其内的固定运算器执行计算得到第i个结果。这里第i个结果即为输出结果(具体为输出矩阵)。进一步地,运算单元203可将该输出结果存储至存储介质201。关于所述多级流水级的数量i以及每个流水级中设计的固定运算器可参见前述实施例中的相关阐述,这里不再赘述。
以i=3,三级流水为例。参见前述图5,示出一种运算指令对应的流水级的固定实现架构。具体的,运算单元对该矩阵执行第一流水级的乘法计算得到第一结果,将第一结果输入到第二流水级执行第二流水级的加法计算得到第二结果,将第二结果输入到第三流水级执行第三流水级的非线性计算得到第三结果,将第三结果(即输出结果)存储至存储介质201。
需要说明的是,上述计算装置中每个流水级中的运算器是预先自定义设置好的,一旦确定不容更改;即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所示,运算指令包括一操作码和至少一操作域,其中,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。
即第一运算指令可以包括:操作域以及至少一个操作码,以矩阵运算指令为例,如下所示,其中,寄存器0、寄存器1、寄存器堆2、寄存器3、寄存器4可以为操作域。其中,每个寄存器0、寄存器1、寄存器2、寄存器3、寄存器4用于标识寄存器的编号,其可以是一个或者多个寄存器。应理解的,操作码中寄存器的数量并不做限定,每个寄存器均用于存储运算指令的相关数据信息。
Figure BDA0002721662910000151
如图6B是本申请提供的另一种指令(可为第一运算指令,也可称为操作指令)的指令集的格式示意图,如图6B所示,指令包括至少两个操作码和至少一操作域,其中,所述至少两个操作码包括第一操作码和第二操作码(图示分别为操作码1和操作码2)。所述操作码1用于指示指令的类型(即某大类指令),例如可具体可为IO指令、逻辑指令或者运算指令等等,所述操作码2用于指示指令的功能(即大类指令下的具体指令的解释),例如运算指令中的矩阵运算指令(如矩阵乘向量指令MMUL、矩阵求逆指令MINV等)、向量运算指令(如向量求导指令VDIER等)等等,本申请不做限定。
应理解的,指令的格式可以是用户侧或所述计算装置侧自定义设置的。指令的操作码可设计为固定长度,例如8bit、16bit等等。如图6A示出的指令格式具有以下优势特征:操作码占用位数少、译码系统设计简单。如图6B示出的指令格式具有以下优势特征:可变长、译码平均效率更高,当某大类指令下具体指令较少且调用频次高的情况下,设计其第二操作码(即操作码2)的长度短小,可提高译码效率;此外,还能增强指令的可读性和可扩展性,优化指令的编码结构。
本申请实施例中,指令集包含有不同功能的运算指令,具体可为:
矩阵求秩指令(MRANK),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵求秩的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,数值可以作为特殊形式的矩阵(只有一行元素、一列元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
矩阵求迹指令(MTRA),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵求迹的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,数值可以作为特殊形式的矩阵(只有一行元素、一列元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
矩阵求行列式指令(MDET),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵求行列式的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,数值可以作为特殊形式的矩阵(只有一行元素、一列元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
矩阵求零元素比例指令(MNZ),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵统计零元素个数的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,数值可以作为特殊形式的矩阵(只有一行元素、一列元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
矩阵求主特征值指令(MEVA),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵统计零元素个数的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,数值可以作为特殊形式的矩阵(只有一行元素、一列元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
应理解的,本申请提出的操作/运算指令主要用于求解表现矩阵特性的标量的操作。因此,每级流水级中设计的运算器包含但不限于以下中的任一项或多项的组合:矩阵加法运算器、矩阵乘法运算器、矩阵标量乘法运算器、非线性运算器、矩阵比较运算器。
下面举例说明本申请涉及的运算指令(即第一运算指令)的计算。
以所述第一运算指令为矩阵求行列式指令MDET为例,对给定的矩阵求行列式运算。具体实现中,给定一个方阵A,按照如下公式计算该矩阵A的行列式。
Figure BDA0002721662910000171
其中,j1,j2,...jn为1,2..,n的任意排列。τ(j1,j2,...jn)为序列j1,j2,...jn的逆序数。
Figure BDA0002721662910000172
为矩阵A中第n行第jn列的元素。
相应地,矩阵求行列式指令的指令格式具体为:
Figure BDA0002721662910000173
结合前述实施例中,运算单元可获取矩阵求行列式指令MDET,并对其译码后,利用第一流水级的多路选择器选取矩阵比较运算器对矩阵进行序列逆序数计算得到第一结果,然后输入第二流水级的多路选择器所选取的矩阵乘法运算器中进行所有序列的乘运算得到第二结果,最后输入第三流水级的多路选择器所选取的矩阵加法运算器中对所有序列进行求和计算得到第三结果(即输出结果)。可选地,将该第三结果存储至存储介质中。
以所述第一运算指令为矩阵求秩指令MRANK为例,计算给定矩阵的秩。具体实现时,给定一个矩阵A,利用行初等变化进行求秩运算。
相应地,矩阵求秩指令MRANK的指令格式具体为:
Figure BDA0002721662910000181
结合前述实施例中,运算单元可获取矩阵求秩指令MRANK,并对其译码后,利用第一流水级的多路选择器选取矩阵加法运算器对矩阵进行初等行变换得到第一结果,然后输入第二流水级的多路选择器所选取的矩阵比较运算器中进行非零行数的统计计算得到第二结果(即输出结果,矩阵的秩)。可选地,将该第二结果存储至存储介质中。
以所述第一运算指令为矩阵求迹指令MTRA为例,计算给定矩阵的迹。具体实现时,给定一个矩阵A,按照如下公式求解矩阵的迹。
Figure BDA0002721662910000182
其中,Aii是指矩阵A中第i行第i列的元素,i为正整数。
相应地,矩阵求迹指令MTRA的指令格式具体为:
Figure BDA0002721662910000191
结合前述实施例中,运算单元可获取矩阵求迹指令MTRA,并对其译码后,利用第一流水级的多路选择器选取矩阵比较运算器对矩阵进行选对角元素计算得到第一结果,然后输入第二流水级中由多路选择器所选取的矩阵加法运算器中进行矩阵对角元素求和计算得到第二结果(即输出结果)。可选地,将该第二结果存储至存储介质中。
以所述第一运算指令为矩阵求零元素比例指令MNZ为例,计算给定矩阵的零元素的比例。具体实现时,给定一个矩阵A,按照如下公式统计矩阵A中零元素的个数并计算出零元素的比例。
Figure BDA0002721662910000192
其中,nij为矩阵A中第i行第j列的元素,i和j均为正整数。
相应地,矩阵求零元素比例指令MNZ的指令格式具体为:
Figure BDA0002721662910000193
Figure BDA0002721662910000201
结合前述实施例中,运算单元可获取矩阵求零元素比例指令MNZ,并对其译码后,利用第一流水级中多路选择器所选取的矩阵比较运算器对矩阵进行零元素选取得到第一结果,然后输入第二流水级中经多路选择器所选取的矩阵加法运算器中进行零元素数目统计得到第二结果,再输入第三流水级中经多路选择器所选取的矩阵乘法运算器中进行矩阵零元素的比例的计算得到第三结果(即输出结果,矩阵零元素的比例)。可选地,将该第三结果存储至存储介质中。
以所述第一运算指令为矩阵求主特征值指令MEVA为例,计算给定矩阵的主特征值。具体实现时,给定一个矩阵A,按照如下公式计算该矩阵的主特征值。
Figure BDA0002721662910000202
Figure BDA0002721662910000203
求主特征值:
Figure BDA0002721662910000204
其中,aij为矩阵A中第i行第j列的元素;(CW)i为矩阵乘积CW的第i个分量。
相应地,矩阵求主特征值指令MEVA的指令格式具体为:
Figure BDA0002721662910000211
结合前述实施例中,运算单元可获取矩阵求主特征值指令MEVA,并对其译码后,利用第一流水级的多路选择器所选取的矩阵加法运算器对矩阵进行归一化计算得到第一结果,然后输入第二流水级中由多路选择器所选取的矩阵加法运算器中再次进行归一化得到第二结果,然后输入第三流水级中由多路选择器所选取的矩阵乘法运算器中进行主特征值的计算得到第三结果(即输出结果)。可选地,将该第三结果存储至存储介质中。
需要说明的是,上述各种运算指令的获取以及译码将在后文进行详细阐述。应理解的,采用上述计算装置的结构来实现各运算指令(如矩阵求秩指令MRANK等)的计算,可获得如下有益效果:矩阵的规模可变,可以减少指令数量,简化指令的使用;可以处理不同存储格式(行主序和列主序)的矩阵,避免了对矩阵进行变换的开销;支持按照一定间隔存储的矩阵格式,避免了对矩阵存储格式进行变换的执行开销和存储中间结果的空间占用。
上述操作指令(即矩阵运算指令/第一运算指令)中的设定长度可以由用户自行设定,在一个可选的实施方案中,用户可以将该设置长度设置为一个值,当然在实际应用中,用户也可以将该设置长度设置为多个值。本申请具体实施方式并不限定该设定长度的具体值以及个数。为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
参阅图7,图7为本申请具体实施方式提供的另一种计算装置50。图7所示,计算装置50包括:存储介质501、寄存器单元502(优选的为标量数据存储单元、标量寄存器单元)、运算单元503(也可称矩阵运算单元503)和控制单元504;
存储介质501,用于存储矩阵;
标量数据存储单元502,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储介质内的存储地址;
控制单元504,用于控制所述运算单元获取第一运算指令,所述第一运算指令用于实现矩阵与标量间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示;
运算单元503,用于依据所述矩阵读取指示向所述存储介质发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
可选的,上述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
可选的如所述矩阵读取指示为所述指令所需矩阵的标识时,
控制单元504,用于控制所述运算单元依据所述标识从所述寄存器单元出采用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储介质发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
可选的,运算单元503,具体用于采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
可选的,所述多级流水级中的每个流水级包括有至少一个运算器,
运算单元503,具体用于根据多路选择器的选择,利用第一级流水级中的第一选择运算器对所述矩阵进行计算得到第一结果,将所述第一结果输入到第二级流水级中的第二选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入至第i级流水级中的第i选择运算器执行计算得到第i个结果;将所述第i个结果输入至所述存储介质进行存储;其中,所述多级流水级的数量i是根据所述第一运算指令的计算拓扑结构确定的,且i为正整数。
可选的,所述多级流水级中的每个流水级各自配置有对应的多路选择器,所述多路选择器设置有空选项,所述空选项用于指示与所述多路选择器连接的第k级流水级以及后续的第k+1至第i级流水级均不予执行计算操作,其中,k为小于等于i的正整数。
可选的,所述多级流水级中的每个流水级所包括的运算器以及所述运算器的数量是由用户侧或所述计算装置侧自定义设置的。
可选的,所述多级流水级中的每个流水级包括有预先设置的固定运算器,所述每个流水级中的固定运算器均不相同,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元利用第一级流水级中的固定运算器对所述矩阵进行计算得到第一结果,将所述第一结果输入到第二级流水级中的第固定运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入至第i级流水级中的固定运算器执行计算得到第i个结果;
将所述第i个结果输入至所述存储介质进行存储;
其中,所述多级流水级的数量i是根据所述第一运算指令的计算拓扑结构确定的,且i为正整数。
可选的,所述第一运算指令为矩阵求行列式指令MDET,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵比较运算器对所述矩阵进行序列逆序数的运算得到第一结果,将所述第一结果输入至第二级流水级中以利用其内的矩阵乘法运算器对所述第一结果进行所有序列的乘法运算得到第二结果,将所述第二结果输入至第三级流水级中以利用其内的矩阵加法运算器对所述第二结果进行所有序列求和运算得到第三结果;将所述第三结果输入至所述存储介质进行存储。
可选的,所述第一运算指令为矩阵求秩指令MRANK,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵加法运算器对所述矩阵进行初等行变换得到第一结果,将所述第一结果输入至第二级流水级中的矩阵比较运算器进行非零行数的统计得到第二结果;将所述第二结果输入至所述存储介质进行存储,所述第二结果为矩阵的秩。
可选的,所述第一运算指令为矩阵求迹指令MTRA,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵比较运算器对所述矩阵进行选对角元素的计算得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器进行矩阵对角元素求和得到第二结果;将所述第二结果输入至所述存储介质进行存储。
可选的,所述第一运算指令为矩阵求零元素比例指令MNZ,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵比较运算器对所述矩阵进行选零元素得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器中进行矩阵零元素数目统计得到第二结果,将所述第二结果输入至第三级流水级中的矩阵乘法运算器进行矩阵零元素比例计算得到第三结果;将所述第三结果输入至所述存储介质进行存储。
可选的,所述第一运算指令为矩阵求主特征值指令MEVA,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的矩阵加法运算器对所述矩阵进行归一化得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器再次执行归一化得到第二结果,将所述第二结果输入至第三级流水级中的矩阵乘法运算器中进行主特征值的计算得到第三结果;将所述第三结果输入至所述存储介质进行存储。
可选的,所述计算装置还包括:
缓存单元505,用于缓存待执行的运算指令;
所述控制单元504,用于将待执行的运算指令缓存于所述缓存单元504内。
可选的,控制单元504,用于确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
可选的,上述控制单元503,可以用于从指令缓存单元获取运算指令,并对该运算指令进行处理后,提供给所述运算单元。其中,控制单元503可以划分为三个模块,分别为:取指模块5031、译码模块5032和指令队列模块5033,
取指模块5031,用于从指令缓存单元中获取运算指令;
译码模块5032,用于对获取的运算指令进行译码;
指令队列5033,用于对译码后的运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
参阅图8,图8是本申请实施例提供的计算装置执行运算指令的流程图,如图8所示,该计算装置的硬件结构参阅图7所示的结构,如图7所示的存储介质以高速暂存存储器为例,执行矩阵求迹指令MTRA的过程包括:
步骤S601,计算装置控制取指模块取出矩阵求迹指令,并将该矩阵求迹指令送往译码模块。
步骤S602,译码模块对该矩阵求迹指令译码,并将该矩阵求迹指令送往指令队列。
步骤S603,在指令队列中,该矩阵求迹指令需要从标量寄存器堆中获取指令中三个操作域所对应的标量寄存器里的数据,该数据包括输入矩阵地址、输出向量地址和输出向量长度。
步骤S604,控制单元确定所述矩阵求迹指令与矩阵求迹指令之前的运算指令是否存在关联关系,如存在关联关系,将矩阵求迹指令存入到缓存单元,如不存在关联管理,将该矩阵求迹指令传输至运算单元。
步骤S605,运算单元根据三个操作域所对应的标量寄存器里的数据从高速暂存器中取出需要的矩阵数据,然后在运算单元中完成求迹运算。
步骤S606,运算单元运算完成后,将结果写入存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址,重排序缓存中的该矩阵求迹指令被提交。
可选的,上述步骤S605中在运算单元执行求迹运算时,所述计算装置可采用矩阵比较运算器选出矩阵对角元素,再使用矩阵加法运算器进行矩阵对角元素求和获得矩阵的迹。
具体实现中,当译码模块对该矩阵求迹指令译码后,根据译码所产生的控制信号,将S603所获取的矩阵输入至经由第一级流水级多路选择器所选择的矩阵比较运算器执行矩阵对角元素计算得到第一结果,然后再根据控制信号的控制将第一结果输入至经由第二级流水级多路选择器所选择的矩阵加法运算器中执行矩阵对角元素求和计算得到第二结果,第三级流水级的多路选择器根据控制信号可获知该级为空选项。相应地,将所述第二结果(即输出结果)直接传输至输出端。
上述图8中的运算指令以矩阵求迹指令为例,在实际应用中,如图8所示实施例中的矩阵求迹指令可以用矩阵求行列式指令、矩阵求秩指令、矩阵求零元素比例指令或矩阵求最大特征值指令等矩阵运算/操作指令替换,这里不一一赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任意实施部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任意实施部分或全部步骤。
本申请实施例还提供了一种加速装置,包括:存储器:存储有可执行指令;处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述方法实施例所记载的实施例进行操作。
其中,处理器可以是单个处理单元,但也可以包括两个或更多个处理单元。另外,处理器还可以包括通用处理器(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所述的方法,其特征在于,所述第一运算指令包括以下中的任一项:矩阵求秩指令MRANK、矩阵求迹指令MTRA、矩阵求零元素比例指令MNZ、矩阵求主特征值指令MEVA;
所述第一运算指令的指令格式包括至少一个操作码和至少一个操作域,所述至少一个操作码用于指示所述第一运算指令的功能,所述至少一个操作域用于指示所述第一运算指令的数据信息,所述数据信息包括立即数或寄存器号,用于存储所述矩阵读取指示以及所述矩阵的长度;其中,所述至少一个操作码包括第一操作码和第二操作码,所述第一操作码用于指示所述第一运算指令的类型,所述第二操作码用于指示所述第一运算指令的功能。
3.根据权利要求1所述的方法,其特征在于,
若所述第一运算指令为:矩阵求秩指令MRANK,所述MRANK包括:TYPE、M、N、A、LDA、D;其中,所述TYPE为矩阵操作涉及的数据类型,M为矩阵A的行数,N为矩阵A的列数,A为矩阵A的首地址,LDA为矩阵A的低维长度,D为标量;
若所述第一运算指令为:MTRA,所述MTRA包括:TYPE、N、A、LDA、T;其中,所述TYPE为矩阵操作涉及的数据类型,N为矩阵A的行数A为矩阵A的首地址,LDA为矩阵A的低维长度,T为标量,矩阵的迹;
若所述第一运算指令为:MNZ,所述MNZ包括:TYPE、M、N、A、LDA、Z;其中,所述TYPE为矩阵操作涉及的数据类型,M为矩阵A的行数,N为矩阵A的列数,A为矩阵A的首地址,LDA为矩阵A的低维长度,Z为标量,矩阵的零元素比例;
若所述第一运算指令为:MEVA,所述MEVA包括:TYPE、N、A、LDA、L;其中,所述TYPE为矩阵操作涉及的数据类型,N为矩阵A的行数A为矩阵A的首地址,LDA为矩阵A的低维长度,L为标量,矩阵的主特征值。
4.根据权利要求1或3所述的方法,其特征在于,所述多级流水级中的每个流水级包括有至少一个运算器,
所述采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据多路选择器的选择,利用第一级流水级中的第一选择运算器对所述矩阵进行计算得到第一结果,将所述第一结果输入到第二级流水级中的第二选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入至第i级流水级中的第i选择运算器执行计算得到第i个结果;
将所述第i个结果输入至所述存储介质进行存储;
其中,所述第i个结果为输出矩阵,所述多级流水级的数量i是根据所述第一运算指令的计算拓扑结构确定的,且i为正整数。
5.根据权利要求1所述的方法,其特征在于,所述多级流水级中的每个流水级包括有预先设置的固定运算器,所述每个流水级中的固定运算器均不相同,
所述采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元利用第一级流水级中的固定运算器对所述矩阵进行计算得到第一结果,将所述第一结果输入到第二级流水级中的固定运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入至第i级流水级中的固定运算器执行计算得到第i个结果;
将所述第i个结果输入至所述存储介质进行存储;
其中,所述多级流水级的数量i是根据所述第一运算指令的计算拓扑结构确定的,且i为正整数。
6.根据权利要求1、4、5中任一项所述的方法,其特征在于,所述多级流水级中的每个流水级各自配置有对应的多路选择器,所述多路选择器设置有空选项,所述空选项用于指示与所述多路选择器连接的第k级流水级以及后续的第k+1至第i级流水级均不予执行计算操作,其中,k为小于等于i的正整数;
所述多级流水级中每个流水级中的运算器包括以下中的任一项或多项的组合:矩阵加法运算器、矩阵乘法运算器、矩阵标量乘法运算器、非线性运算器以及矩阵比较运算器。
7.根据权利要求4所述的方法,其特征在于,
若所述第一运算指令为:矩阵求秩指令MRANK:所述对所述矩阵执行所述第一运算指令具体包括:所述运算单元获取矩阵求秩指令MRANK,并对其译码后,利用第一流水级的多路选择器选取矩阵加法运算器对矩阵进行初等行变换得到第一结果,然后输入第二流水级的多路选择器所选取的矩阵比较运算器中进行非零行数的统计计算得到第二结果;
若所述第一运算指令为:MTRA;所述对所述矩阵执行所述第一运算指令具体包括:所述运算单元获取矩阵求迹指令MTRA,并对其译码后,并对其译码后,利用第一流水级的多路选择器选取矩阵比较运算器对矩阵进行选对角元素计算得到第一结果,然后输入第二流水级中由多路选择器所选取的矩阵加法运算器中进行矩阵对角元素求和计算得到第二结果;
若所述第一运算指令为:MNZ;所述对所述矩阵执行所述第一运算指令具体包括:所述运算单元获取MNZ,并对其译码后,利用第一流水级中多路选择器所选取的矩阵比较运算器对矩阵进行零元素选取得到第一结果,然后输入第二流水级中经多路选择器所选取的矩阵加法运算器中进行零元素数目统计得到第二结果,再输入第三流水级中经多路选择器所选取的矩阵乘法运算器中进行矩阵零元素的比例的计算得到第三结果;
若所述第一运算指令为:MEVA;所述对所述矩阵执行所述第一运算指令具体包括:所述运算单元获取MEVA,并对其译码后,利用第一流水级的多路选择器所选取的矩阵加法运算器对矩阵进行归一化计算得到第一结果,然后输入第二流水级中由多路选择器所选取的矩阵加法运算器中再次进行归一化得到第二结果,然后输入第三流水级中由多路选择器所选取的矩阵乘法运算器中进行主特征值的计算得到第三结果。
8.一种计算装置,其特征在于,所述计算装置包括存储介质、寄存器单元、矩阵运算单元以及控制器单元;
所述存储介质,用于存储矩阵;
所述寄存器单元,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储介质内的存储地址;
所述控制器单元,用于控制所述矩阵运算单元获取第一运算指令,所述第一运算指令用于实现矩阵与标量之间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同或长度不同的矩阵;
所述矩阵运算单元,用于依据所述矩阵读取指示向所述存储介质发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
9.一种芯片,其特征在于,所述芯片包括如上权利要求8所述的计算装置。
10.一种电子设备,其特征在于,所述电子设备包括如上权利要求9所述的芯片。
CN202011100339.0A 2017-12-15 2017-12-15 一种计算方法及相关产品 Pending CN112230994A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011100339.0A CN112230994A (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711362617.8A CN108108189B (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品
CN202011100339.0A CN112230994A (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201711362617.8A Division CN108108189B (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品

Publications (1)

Publication Number Publication Date
CN112230994A true CN112230994A (zh) 2021-01-15

Family

ID=62209831

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201711362617.8A Active CN108108189B (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品
CN202011100339.0A Pending CN112230994A (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201711362617.8A Active CN108108189B (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品

Country Status (1)

Country Link
CN (2) CN108108189B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113722669A (zh) * 2021-11-03 2021-11-30 海光信息技术股份有限公司 数据处理方法、装置、设备及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110119807B (zh) * 2018-10-12 2021-11-09 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN114428630B (zh) * 2022-03-31 2022-07-01 浙江地芯引力科技有限公司 芯片算法升级方法、装置和芯片

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0476772A (ja) * 1990-07-18 1992-03-11 Hitachi Ltd ベクトルデータ処理装置
WO2017124647A1 (zh) * 2016-01-20 2017-07-27 北京中科寒武纪科技有限公司 一种矩阵计算装置
CN107305538A (zh) * 2016-04-22 2017-10-31 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US8984043B2 (en) * 2009-12-23 2015-03-17 Intel Corporation Multiplying and adding matrices
CN102541814B (zh) * 2010-12-27 2015-10-14 北京国睿中数科技股份有限公司 用于数据通信处理器的矩阵计算装置和方法
CN102262525B (zh) * 2011-08-29 2014-11-19 孙瑞玮 基于矢量运算的矢量浮点运算装置及方法
CN102495719B (zh) * 2011-12-15 2014-09-24 中国科学院自动化研究所 一种向量浮点运算装置及方法
CN103902507B (zh) * 2014-03-28 2017-05-10 中国科学院自动化研究所 一种面向可编程代数处理器的矩阵乘法计算装置及方法
FR3021428B1 (fr) * 2014-05-23 2017-10-13 Kalray Multiplication de matrices de bits utilisant des registres explicites
US9760537B2 (en) * 2014-10-28 2017-09-12 International Business Machines Corporation Finding a CUR decomposition
JP2017130036A (ja) * 2016-01-20 2017-07-27 富士通株式会社 情報処理装置、演算方法、および演算プログラム
US10268931B2 (en) * 2016-03-30 2019-04-23 The United States Of America As Represented By Secretary Of The Navy Spatiotemporal method for anomaly detection in dictionary learning and sparse signal recognition
EP3232321A1 (en) * 2016-04-12 2017-10-18 AptCore Ltd Signal processing apparatus with register file having dual two-dimensional register banks
CN107301454B (zh) * 2016-04-15 2021-01-22 中科寒武纪科技股份有限公司 支持离散数据表示的人工神经网络反向训练装置和方法
CN111857819B (zh) * 2016-04-26 2024-05-03 中科寒武纪科技股份有限公司 一种用于执行矩阵加/减运算的装置和方法
CN110188870B (zh) * 2016-04-27 2021-10-12 中科寒武纪科技股份有限公司 用于执行人工神经网络自学习运算的装置和方法
CN107341541B (zh) * 2016-04-29 2021-01-29 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络训练的装置和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0476772A (ja) * 1990-07-18 1992-03-11 Hitachi Ltd ベクトルデータ処理装置
WO2017124647A1 (zh) * 2016-01-20 2017-07-27 北京中科寒武纪科技有限公司 一种矩阵计算装置
CN107305538A (zh) * 2016-04-22 2017-10-31 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘仲;田希;: "面向多核向量处理器的矩阵乘法向量化方法", 计算机学报, no. 10, 30 June 2017 (2017-06-30) *
杨航空: "计算机组成原理", 计算机考研综合考点精讲与指导全书, 31 July 2015 (2015-07-31), pages 275 - 283 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113722669A (zh) * 2021-11-03 2021-11-30 海光信息技术股份有限公司 数据处理方法、装置、设备及存储介质
CN113722669B (zh) * 2021-11-03 2022-01-21 海光信息技术股份有限公司 数据处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN108108189A (zh) 2018-06-01
CN108108189B (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
CN107957976B (zh) 一种计算方法及相关产品
CN108009126B (zh) 一种计算方法及相关产品
CN108121688B (zh) 一种计算方法及相关产品
CN111291880B (zh) 计算装置以及计算方法
CN108108190B (zh) 一种计算方法及相关产品
CN109284823B (zh) 一种运算装置及相关产品
CN110163360B (zh) 一种计算装置及方法
US20240078285A1 (en) Systems and methods of instructions to accelerate multiplication of sparse matrices using bitmasks that identify non-zero elements
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
CN107943756B (zh) 一种计算方法及相关产品
CN107957977B (zh) 一种计算方法及相关产品
EP3629158A2 (en) Systems and methods for performing instructions to transform matrices into row-interleaved format
CN107957975B (zh) 一种计算方法及相关产品
EP3757769B1 (en) Systems and methods to skip inconsequential matrix operations
US20130159665A1 (en) Specialized vector instruction and datapath for matrix multiplication
CN110163350B (zh) 一种计算装置及方法
CN108108189B (zh) 一种计算方法及相关产品
EP3623940A2 (en) Systems and methods for performing horizontal tile operations
CN110825436B (zh) 应用于人工智能芯片的计算方法和人工智能芯片
CN111626413A (zh) 一种计算装置及方法
CN108090028B (zh) 一种计算方法及相关产品
CN110163349B (zh) 一种网络模型的计算方法及装置
CN107977231B (zh) 一种计算方法及相关产品
CN108037908B (zh) 一种计算方法及相关产品
CN108021393B (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