CN108960418A - 神经网络处理装置及其执行矩阵向量乘指令的方法 - Google Patents

神经网络处理装置及其执行矩阵向量乘指令的方法 Download PDF

Info

Publication number
CN108960418A
CN108960418A CN201810913978.5A CN201810913978A CN108960418A CN 108960418 A CN108960418 A CN 108960418A CN 201810913978 A CN201810913978 A CN 201810913978A CN 108960418 A CN108960418 A CN 108960418A
Authority
CN
China
Prior art keywords
matrix
vector
sparse
address
index
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
CN201810913978.5A
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.)
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 CN201810913978.5A priority Critical patent/CN108960418A/zh
Priority claimed from CN201810899812.2A external-priority patent/CN109062609A/zh
Publication of CN108960418A publication Critical patent/CN108960418A/zh
Pending legal-status Critical Current

Links

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
    • 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/3001Arithmetic instructions
    • 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

Abstract

本发明提供一种处理装置,包括:存储器、寄存器单元、运算单元和控制单元;存储器存储向量;寄存器单元存储矩阵向量乘指令,控制单元获取矩阵向量乘指令,解析所述矩阵向量乘指令得到操作码和操作域;根据所述操作码从存储器中获取参与矩阵向量乘运算数据;运算单元对参与矩阵向量乘运算的数据进行矩阵向量乘运算。本发明提供的技术方案具有功耗低、计算开销小的优点。

Description

神经网络处理装置及其执行矩阵向量乘指令的方法
技术领域
本发明涉及通信技术领域,具体涉及一种神经网络处理装置及其执行矩阵向量乘指令的方法。
背景技术
现代的通用和专用处理器中,越来越多地引入计算指令(例如向量指令)进行运算。向量指令是使处理器进行向量或者矩阵运算的指令,例如向量的加减、向量的内积、矩阵乘法、矩阵卷积等。向量指令中至少有一个输入为向量或者矩阵或运算结果是向量或矩阵。向量指令可以通过调用处理器内部的向量处理部件来进行并行计算,提高运算速度。现有的向量指令中,其操作数或结果中的向量或矩阵一般是固定规模的,例如ARM处理器中的向量扩展结构Neon中的向量指令一次可以处理长为4的32位浮点向量或者长为8的16位定点向量。所以现有的向量运算指令无法实现可变规模的向量或矩阵的运算。
另一方面,神经网络作为一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。为了减小计算量和权值数量,从而降低访存量,因此提出了稀疏神经网络。稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度,如图1a所示。
而现有的向量运算指令无法支持稀疏神经网络中的稀疏向量或稀疏矩阵的运算,更无法实现可变规模的稀疏向量或稀疏矩阵的运算,并且现在的向量运算指令只能实现一种运算,例如一条向量指令只能实现乘法、加法中的一种运算,一条向量指令无法实现二种以上的运算,所以现有的向量运算的运算开销大,能耗高。
发明内容
本发明实施例提供了一种神经网络处理装置及其执行矩阵向量乘指令的方法,可实现单条矩阵向量乘指令实现多种运算的目的,有利于减少运算开销,降低模块的功耗。
第一方面,本发明实施例提供一种处理装置,该处理装置用于根据矩阵向量乘指令执行运算,其特征在于,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;
所述寄存器单元,用于存储矩阵向量乘指令;所述矩阵向量乘指令包括操作码和操作域,所述操作码用于指示进行矩阵向量乘运算;所述操作域包括所述参与矩阵向量乘运算的数据的首地址和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引的地址;
所述存储器,用于存储参与矩阵向量乘运算的数据;
所述控制单元,用于从所述寄存器单元中获取所述矩阵向量乘指令,解析所述矩阵向量乘指令,以得到所述操作码和操作域;根据所述操作域从所述存储器中获取所述参与矩阵向量乘运算的数据和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引;并将所述参与矩阵向量乘运算的数据传输至所述运算单元;
所述运算单元,用于对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。
在一种可能的实施例中,当所述矩阵向量乘指令为第一矩阵向量乘指令时,所述操作码用于指示进行第一矩阵向量乘运算,所述操作域包括:稀疏向量X13的索引表示方式、第二矩阵的存储格式、所述矩阵A2的行数、所述矩阵A2的列数、矩阵A2的变换信息、第十一标量的首地址、第十二标量的首地址、稀疏向量X13中元素的首地址、稀疏向量X13的索引的首地址、向量Y13中元素的首地址、矩阵A2的首地址和所述矩阵A2的低维长度;其中,所述矩阵A2的存储格式为行主序时,所述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当所述矩阵A2的存储格式为列主序时,所述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔;
所述控制单元具体用于:
根据所述矩阵A2的首地址、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据所述矩阵转换信息对所述矩阵A2进行转换,以得到转换后的矩阵A2;根据所述稀疏向量X13中元素的首地址从所述存储器中获取所述稀疏向量X13;根据所述稀疏向量X13的索引的首地址从所述存储器获取所述稀疏向量X13的索引;根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13;根据所述稀疏向量X13的索引表示方式和所述稀疏向量X13的索引对所述向量Y13中的元素进行筛选,以得到稀疏向量Y13;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器中分别获取所述第十一标量和第十二标量;将所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量传输至所述运算单元;
所述运算单元具体用于:
对所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量进行第一矩阵向量乘运算。
进一步地,所述操作域还包括:所述稀疏向量X13中元素的个数、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔;
所述控制单元根据所述稀疏向量X13中元素的首地址从所述存储器中获取所述稀疏向量X13,包括:
根据所述稀疏向量X13中元素的首地址和所述稀疏向量X13中元素的个数从所述存储器中获取所述稀疏向量X13;
所述控制单元根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13,包括:
根据所述向量Y13中元素的首地址、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器中获取所述向量Y13。
在一种可能的实施例中,当所述矩阵向量乘指令为第二矩阵向量乘指令时,所述操作码用于指示进行第二矩阵向量乘运算,所述操作域包括:稀疏向量sX13的索引表示方式、第二矩阵的存储格式、稀疏矩阵sA2的行数、所述稀疏矩阵sA2的列数N1、稀疏矩阵sA2的变换信息、所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行索引的首地址、第十一标量的首地址、第十二标量的首地址、稀疏向量sX13中元素的首地址、稀疏向量sX13的索引的首地址、向量s13中元素的首地址、稀疏矩阵sA2的首地址和所述稀疏矩阵sA2的低维长度;其中,所述稀疏矩阵sA2的存储格式为行主序时,所述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当所述稀疏矩阵sA2的存储格式为列主序时,所述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔;
所述控制单元具体用于:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述稀疏矩阵sA2;根据所述稀疏矩阵sA2变换信息对所述稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2;根据所述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别从所述存储器中获取所述稀疏向量sX13和向量Y13;根据所述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址分别从所述存储器获取所述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引;根据所述稀疏向量sX13的索引表示方式、所述稀疏向量sX13的索引和稀疏矩阵sA2的每行索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2的每行元素进行筛选,以得到筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器中分别获取所述第十一标量和第十二标量;将所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量传输至所述运算单元;
所述运算单元具体用于:
对所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量进行第二矩阵向量乘运算。
进一步地,所述操作域还包括所述稀疏矩阵sA2的索引表示方式;所述控制单元还用于:
在获取所述稀疏向量sX13及其索引和所述变换后的稀疏矩阵sA2及其各行索引之后,根据所述稀疏向量sX13的索引、所述稀疏向量sX13的索引表示方式、所述稀疏矩阵sA2的每行索引和所述稀疏矩阵sA2的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2中各行的元素进行筛选,以得到所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;并将所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏向量sY13传输至所述运算单元。
进一步地,所述操作域还包括:所述稀疏向量sX13中元素的个数、所述向量Y13中元素的个数、向量Y13中元素之间的地址间隔和所述稀疏矩阵sA2各行元素的个数;
所述控制单元根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度从所述存储器中获取所述稀疏矩阵sA2,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行元素的个数、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度从所述存储器中获取所述稀疏矩阵sA2;
所述控制单元根据所述稀疏向量sX13中元素的首地址和向量Y13的首地址分别从所述存储器中获取所述稀疏向量sX13和向量Y13,包括:
根据所述稀疏向量sX13中元素的首地址和所述稀疏向量sX13中元素的个数从所述存储器中获取所述稀疏向量sX13;
根据所述向量Y13中元素的首地址、向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器中获取所述向量Y13。
在一种可能的实施例中,输入数据的索引表示方式包括:直接索引表示方式或步长索引表示方式;其中所述输入数据包括:稀疏向量X13、稀疏向量sX13或稀疏矩阵sA2的各行元素。
进一步地,当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
在一种可能的实施例中,所述运算单元还包括向量加法电路、向量乘法电路、大小比较电路、非线性运算电路和向量标量乘法电路;所述运算单元为多流水级结构;
其中,所述向量乘法电路和所述向量标量乘法电路处于第一流水级,所述大小比较电路和所述向量加法电路处于第二流水级,所述非线性运算部件处于第三流水级,其中所述第一流水级的输出数据为所述第二流水级的输入数据,所述第二流水级的输出数据为所述第三流水级的输入数据。
在一种可能的实施例中,所述控制单元还包括:
指令存储单元,用于存储所述矩阵向量乘指令;
指令处理单元,用于对所述矩阵向量乘指令进行解析,以得到所述操作码和操作域;
存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个矩阵向量乘指令。
在一种可能的实施例中,所述处理装置还包括:
依赖关系处理单元,用于确定第s个矩阵向量乘指令与所述第s个矩阵向量乘指令之前的第s-1个矩阵向量乘指令是否存在关联关系,如所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令存在关联关系,将所述第s个矩阵向量乘指令缓存在所述指令存储单元内,在所述第s-1个矩阵向量乘指令执行完毕后,从所述指令存储单元提取所述第s个矩阵向量乘指令传输至所述运算单元;
所述确定该第s个矩阵向量乘指令与第s个矩阵向量乘指令之前的第s-1个矩阵向量乘指令是否存在关联关系包括:
依据所述第s个矩阵向量乘指令提取所述第s个矩阵向量乘指令中所需数据的第一存储地址区间,依据所述第s-1个矩阵向量乘指令提取所述第s-1个矩阵向量乘指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令不具有关联关系。
第二方面,本发明实施例提供了一种运算装置,该运算装置包括一个或多个如第一方面所述的处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的运算,将执行结果通过I/O接口传递给其他处理装置;
当所述运算装置包含多个所处理装置时,所述多个所述处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述处理装置通过快速外部设备互连总线或PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
第三方面,本发明实施例提供了一种组合处理装置,该组合处理装置包括如第二方面所述的运算装置,通用互联接口和其他处理装置;
所述运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
第四方面,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的处理装置、上述第二方面所述的运算装置或者上述第三方面所述的组合处理装置。
第五方面,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;
第六方面,本发明实施例提供了一种电子装置,该电子装置包括上述第四方面所述的神经网络芯片或者第五方面所述的神经网络芯片封装结构。
第七方面,本发明实施例提供一种执行矩阵向量乘指令的方法,包括:
获取矩阵向量乘指令,并解析所述矩阵向量乘指令,以得到所述矩阵向量乘指令的操作码和操作域;
根据所述操作域获取参与矩阵向量乘运算的数据;
对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。
在一种可行的实施例中,当所述矩阵向量乘指令为第一矩阵向量乘指令时,所述操作码用于指示进行第一矩阵向量乘运算,所述操作域包括:稀疏向量X13的索引表示方式、第二矩阵的存储格式、所述矩阵A2的行数、所述矩阵A2的列数、矩阵A2的变换信息、第十一标量的首地址、第十二标量的首地址、稀疏向量X13中元素的首地址、稀疏向量X13的索引的首地址、向量Y13中元素的首地址、矩阵A2的首地址和所述矩阵A2的低维长度;其中,所述矩阵A2的存储格式为行主序时,所述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当所述矩阵A2的存储格式为列主序时,所述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔;
所述根据所述操作域获取参与矩阵向量乘运算的数据,包括:
根据所述矩阵A2的首地址、所述第二矩阵的存储格式和所述矩阵A2的低维长度获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据所述矩阵转换信息对所述矩阵A2进行转换,以得到转换后的矩阵A2;根据所述稀疏向量X13中元素的首地址获取所述稀疏向量X13;根据所述稀疏向量X13的索引的首地址获取所述稀疏向量X13的索引;根据所述向量Y13中元素的首地址获取所述向量Y13;根据所述稀疏向量X13的索引表示方式和所述稀疏向量X13的索引对所述向量Y13中的元素进行筛选,以得到稀疏向量Y13;根据所述第十一标量的首地址和所述十二标量的首地址分别获取所述第十一标量和第十二标量;
所述对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算,包括:
对所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量进行第一矩阵向量乘运算。
进一步地,所述操作域还包括:所述稀疏向量X13中元素的个数、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔;
所述根据所述稀疏向量X13中元素的首地址获取所述稀疏向量X13,包括:
根据所述稀疏向量X13中元素的首地址和所述稀疏向量X13中元素的个数获取所述稀疏向量X13;
所述根据所述向量Y13中元素的首地址获取所述向量Y13,包括:
根据所述向量Y13中元素的首地址、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔获取所述向量Y13。
在一种可行的实施例中,当所述矩阵向量乘指令为第二矩阵向量乘指令时,所述操作码用于指示进行第二矩阵向量乘运算,所述操作域包括:稀疏向量sX13的索引表示方式、第二矩阵的存储格式、稀疏矩阵sA2的行数、所述稀疏矩阵sA2的列数N1、稀疏矩阵sA2的变换信息、所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行索引的首地址、第十一标量的首地址、第十二标量的首地址、稀疏向量sX13中元素的首地址、稀疏向量sX13的索引的首地址、向量s13中元素的首地址、稀疏矩阵sA2的首地址和所述稀疏矩阵sA2的低维长度;其中,所述稀疏矩阵sA2的存储格式为行主序时,所述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当所述稀疏矩阵sA2的存储格式为列主序时,所述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔;
所述根据所述操作域获取参与矩阵向量乘运算的数据,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述矩阵A2的低维长度获取所述稀疏矩阵sA2;根据所述稀疏矩阵sA2变换信息对所述稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2;根据所述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别获取所述稀疏向量sX13和向量Y13;根据所述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址分别获取所述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引;根据所述稀疏向量sX13的索引表示方式、所述稀疏向量sX13的索引和稀疏矩阵sA2的每行索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2的每行元素进行筛选,以得到筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;根据所述第十一标量的首地址和所述十二标量的首地址分别获取所述第十一标量和第十二标量;
所述对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算,包括:
对所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量进行第二矩阵向量乘运算。
进一步地,所述操作域还包括所述稀疏矩阵sA2的索引表示方式;所述根据所述操作域获取参与矩阵向量乘运算的数据,还包括:
在获取所述稀疏向量sX13及其索引和所述变换后的稀疏矩阵sA2及其各行索引之后,根据所述稀疏向量sX13的索引、所述稀疏向量sX13的索引表示方式、所述稀疏矩阵sA2的每行索引和所述稀疏矩阵sA2的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2中各行的元素进行筛选,以得到所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2。
进一步地,所述操作域还包括:所述稀疏向量sX13中元素的个数、所述向量Y13中元素的个数、向量Y13中元素之间的地址间隔和所述稀疏矩阵sA2各行元素的个数;
所述控制单元根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度获取所述稀疏矩阵sA2,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行元素的个数、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度获取所述稀疏矩阵sA2;
所述根据所述稀疏向量sX13中元素的首地址和向量Y13的首地址分别获取所述稀疏向量sX13和向量Y13,包括:
根据所述稀疏向量sX13中元素的首地址和所述稀疏向量sX13中元素的个数获取所述稀疏向量sX13;
根据所述向量Y13中元素的首地址、向量Y13中元素的个数和向量Y13中元素之间的地址间隔获取所述向量Y13。
在一种可行的实施例中,输入数据的索引表示方式为直接索引表示方式或步长索引表示方式;所述输入数据包括:所述稀疏向量X13,所述稀疏向量sX13或所述稀疏矩阵sA2的各行元素;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
可以看出,通过本发明实施例提供的矩阵向量乘指令,强化了指令的功能,用一条指令代替了原来的多条指令。这样减少了复杂向量、矩阵操作所需的指令数量,简化了向量指令的使用;与多条指令相比,不需要存储中间结果,既节约了存储空间,又避免了额外的读写开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例提供的一种稀疏神经网络的结构示意图;
图1b为本发明实施提供的一种处理装置的结构示意图;
图2为本发明实施例提供的一种处理装置的局部结构示意图;
图3为本发明实施例提供的另一种处理装置的局部结构示意图;
图4为本发明实施例提供的一种处理装置中的运算单元流水级的示意图;
图5a为本发明实施例提供的一种运算装置的结构示意图;
图5b为本发明实施例提供的另一种运算装置的结构示意图;
图6为本发明实施例流提供的一种执行矩阵向量乘指令的方法的流程示意图。
附图中的虚线部件表现可选。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。文中的“/”可以表示“或”。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参见图1b,图1b为本发明实施例提供的一种处理装置的结构示意图。该处理装置100用于根据矩阵向量乘指令进行运算。如图1b所示,该处理装置100包括:存储器101、寄存器单元102(可选地)、运算单元104和控制单元103。
其中,上述寄存器单元102,用于存储矩阵向量乘指令;该矩阵向量乘指令包括操作码和操作域,该操作码用于指示进行矩阵向量乘运算;
上述存储器101,用于存储参与矩阵向量乘运算的数据;
上述控制单元103,用于从上述寄存器单元102中获取上述矩阵向量乘指令,并解析该矩阵向量乘指令,以得到上述操作码和操作域;所述操作域包括所述参与运算的数据的首地址和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引的地址;根据该操作域从上述存储器101中获取所述参与矩阵向量乘运算的数据和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引;并将所述参与矩阵向量乘运算的数据传输至所述运算单元104;
所述运算单元104,用于对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。
在一种可能的实施例中,当所述矩阵向量乘指令为第一矩阵向量乘指令时,所述操作码用于指示进行第一矩阵向量乘运算,所述操作域包括:稀疏向量X13的索引表示方式、第二矩阵的存储格式、所述矩阵A2的行数、所述矩阵A2的列数、矩阵A2的变换信息、第十一标量的首地址、第十二标量的首地址、稀疏向量X13中元素的首地址、稀疏向量X13的索引的首地址、向量Y13中元素的首地址、矩阵A2的首地址和所述矩阵A2的低维长度;其中,所述矩阵A2的存储格式为行主序时,所述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当所述矩阵A2的存储格式为列主序时,所述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔;所述控制单元103具体用于:
根据所述矩阵A2的首地址、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器101中获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据所述矩阵转换信息对所述矩阵A2进行转换,以得到转换后的矩阵A2;根据所述稀疏向量X13中元素的首地址从所述存储器101中获取所述稀疏向量X13;根据所述稀疏向量X13的索引的首地址从所述存储器101获取所述稀疏向量X13的索引;根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13;根据所述稀疏向量X13的索引表示方式和所述稀疏向量X13的索引对所述向量Y13中的元素进行筛选,以得到稀疏向量Y13;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器101中分别获取所述第十一标量和第十二标量;将所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量传输至所述运算单元104;
所述运算单元104具体用于:
对所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量进行第一矩阵向量乘运算。
具体地,上述第一矩阵向量乘指令用于计算矩阵与向量的乘积;该第一矩阵向量乘指令可表示为:GEMV1(I_TYPE13,LAYOUT2,TRANS1,R3,R4,C11,D2,LDA2,ValX13,InX13,C12,y13),其中,上述矩阵向量乘指令的操作码为GEMV1,用于指示进矩阵向量乘运算;该矩阵向量乘指令的操作域包括:I_TYPE13,LAYOUT2,TRANS1,R3,R4,C11,D2,LDA2,ValX13,InX13,C12和y13,其对应的含义描述见下表1。
表1
上述控制单元103获取上述第一矩阵向量乘指令后,解析该矩阵向量乘指令,以得到该矩阵向量乘指令的操作域和操作码。上述控制单元103根据上述矩阵A2的首地址D2、第二矩阵的存储格式和上述矩A2的低维长度LDA2从上述存储器101中获取R1*R2个元素。
当上述矩阵A2的存储格式为行主序时,上述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当上述矩阵A2的存储格式为列主序时,上述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔。
上述控制单元103根据上述稀疏向量X13中元素的首地址从上述存储器101中获取上述稀疏向量X13;根据上述稀疏向量X13的索引的首地址从上述存储器101中获取上述稀疏向量X13的索引;根据上述向量Y13中元素的首地址从上述存储器101中获取上述向量Y13。上述控制单元103根据该稀疏向量X13的索引和稀疏向量X13的索引表示方式对该向量Y13中的元素进行筛选,以得到稀疏向量Y13,包括:
当上述稀疏向量X13的索引表示方式为直接索引表示方式时,上述稀疏向量X13的索引为由0和1组成的字符串,0表示稀疏向量X13对应的稠密向量中元素不满足上述预设条件,1表示上述稀疏向量X13对应的稠密向量中元素满足上述预设条件。比如索引为“101101”,表示上述稀疏向量X13对应的稠密向量中第1个元素、第3个元素、第4个元素和第6个元素的中每个元素满足上述预设条件,第2个元素和第5个元素均不满足上述预设条件,不满足预设条件的元素不参与后续运算。上述控制单元103根据上述索引“101101”从上述向量Y13中筛选出第1个元素、第3个元素、第4个元素和第6个元素,以得到稀疏向量Y13。比如向量Y1=(2,3,5,2.3,4,1.4),则根据上述索引“101101”筛选后得到的稀疏向量Y13=(2,5,2.3,1.4)。
当上述稀疏向量X13的索引表示方式为步长索引表示方式时,上述稀疏向量X13的索引为该稀疏向量X13对应的稠密向量中满足上述预设条件的元素与上一个满足上述预设条件的元素之间的距离值组成的字符串。比如上述稀疏向量X13的索引为“0212”,表示上述稀疏向量X13对应的稠密向量中第1个元素、第3个元素、第4个元素和第6个元素的中每个元素满足上述预设条件,其他元素不满足上述预设条件。上述控制单元103根据上述索引“0212”从上述向量Y13中筛选出第1个元素、第3个元素、第4个元素和第6个元素,以得到稀疏向量Y13。比如向量Y13=(2,3,7,2.3,4,1.4),则根据上述索引“0212”筛选后得到的稀疏向量Y13=(2,7,2.3,1.4)。
上述控制单元103分别根据上述第十一标量的首地址C11和第十二标量的首地址C12从上述控制器101中获取上述第十一标量c11和第十二标量c12,并将上述矩阵A2、稀疏向量X13、稀疏向量Y13、第十一标量c11和第十二标量c12传输至上述运算单元104。
该运算单元104按照以下公式(1)对上述矩阵A2、稀疏向量X13、稀疏向量Y13、第十一标量c11和第十二标量c12进行向量点积运算。
Y13:=c11*A2*X13+c12*Y13 (1)
上述运算单元104根据公式c11*A2*X13得到向量B1,根据公式c12*Y13得到的向量B2,向量B1与向量B2之和为向量B3;向量B3中元素的个数与上述向量Y13中元素的个数一致,上述运算单元104将该向量B3中的第i个元素存储到上述向量Y13中的第i个元素的首地址对应的存储空间中。
进一步地,所述操作域还包括:所述稀疏向量X13中元素的个数、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔;
所述控制单元103根据所述稀疏向量X13中元素的首地址从所述存储器101中获取所述稀疏向量X13,包括:
根据所述稀疏向量X13中元素的首地址和所述稀疏向量X13中元素的个数从所述存储器101中获取所述稀疏向量X13;
所述控制单元103根据所述向量Y13中元素的首地址从所述存储器101中获取所述向量Y13,包括:
根据所述向量Y13中元素的首地址、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器101中获取所述向量Y13。
可选地,上述第一矩阵向量乘指令还可表示为:GEMV1(D_TYPE13,I_TYPE13,LAYOUT2,TRANS1,R3,R4,C11,D2,LDA2,Nnz13,ValX13,InX13,C12,M6,y13,INCY13),其中,上述矩阵向量乘指令的操作码为GEMV1,用于指示进矩阵向量乘运算;该矩阵向量乘指令的操作域包括:D_TYPE13,I_TYPE13,LAYOUT2,TRANS1,R3,R4,C11,D2,LDA2,Nnz13,ValX13,InX13,C12,M6,y13和INCY13,其对应的含义描述见下表2。
表2
需要指出的是,上述操作域D_TYPE13表征参与上述矩阵向量乘运算的数据的类型。
上述控制单元103根据上述稀疏向量X13中元素的首地址和稀疏向量X13中元素的个数从上述存储器101中获取上述稀疏向量X13;根据上述向量Y13中元素的首地址、向量Y13的长度和向量Y13中元素之间的地址间隔从上述存储器101中获取上述向量Y13。在获取上述稀疏向量X13和向量Y13,上述控制单元103对上述稀疏向量X13和向量Y13按照对上述表1的相关描述进行后续处理和运算,在此不再叙述。
在一种可能的实施例中,当所述矩阵向量乘指令为第二矩阵向量乘指令时,所述操作码用于指示进行第二矩阵向量乘运算,所述操作域包括:稀疏向量sX13的索引表示方式、第二矩阵的存储格式、稀疏矩阵sA2的行数、所述稀疏矩阵sA2的列数N1、稀疏矩阵sA2的变换信息、所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行索引的首地址、第十一标量的首地址、第十二标量的首地址、稀疏向量sX13中元素的首地址、稀疏向量sX13的索引的首地址、向量s13中元素的首地址、稀疏矩阵sA2的首地址和所述稀疏矩阵sA2的低维长度;其中,所述稀疏矩阵sA2的存储格式为行主序时,所述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当所述稀疏矩阵sA2的存储格式为列主序时,所述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔;所述控制单元103具体用于:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器101中获取所述稀疏矩阵sA2;根据所述稀疏矩阵sA2变换信息对所述稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2;根据所述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别从所述存储器101中获取所述稀疏向量sX13和向量Y13;根据所述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址分别从所述存储器101获取所述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引;根据所述稀疏向量sX13的索引表示方式、所述稀疏向量sX13的索引和稀疏矩阵sA2的每行索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2的每行元素进行筛选,以得到筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器101中分别获取所述第十一标量和第十二标量;将所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量传输至所述运算单元104;
所述运算单元104具体用于:
对所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量进行第二矩阵向量乘运算。
具体地,上述第二矩阵向量乘指令可表示为:GEMV2(I_TYPEsX13,LAYOUT2,TRANS1,R3,R4,C11,D2,InsA2,LDA2,ValsX13,InsX13,C12,y13,),其中,上述第二矩阵向量乘指令的操作码为GEMV2,用于指示进矩阵向量乘运算;该矩阵向量乘指令的操作域包括:I_TYPEsX13,LAYOUT2,TRANS1,R3,R4,C11,D2,InsA2,LDA2,ValsX13,InsX13,C12和y13,其对应的含义描述见下表3。
表3
上述控制单元103获取上述第二矩阵向量乘指令后,解析该矩阵向量乘指令,以得到该矩阵向量乘指令的操作域和操作码。上述控制单元103根据上述稀疏矩阵sA2各行元素的首地址D2、稀疏矩阵sA2的行数R3第二矩阵的存储格式和上述稀疏矩阵sA2的低维长度LDA2从上述存储器101中获取上述稀疏矩阵sA2。
当上述稀疏矩阵sA2的存储格式为行主序时,上述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当上述稀疏矩阵sA2的存储格式为列主序时,上述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔。
上述控制单元103根据上述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别从上述存储器101中获取上述稀疏向量sX13和向量Y13;根据上述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址从上述存储器101中获取稀疏向量sX13的索引和稀疏矩阵sA2各行的索引。
在此需要说明的是,上述稀疏向量sX13、向量sY13和稀疏矩阵sA2的各行元素是按照默认长度在上述存储器101进行存储的,因此上述控制单元103可以只根据上述稀疏向量sX13中元素的首地址、向量Y13中元素的首地址和稀疏矩阵sA2各行元素的首地址分别从上述存储器101中分别获取上述稀疏向量sX13、向量Y13和稀疏矩阵sA2。
上述控制单元103根据上述稀疏矩阵sA2的变换信息对该稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2。
上述控制单元103根据上述稀疏向量sX13的索引表示方式、稀疏向量sX13的索引和稀疏矩阵sA2每一行的索引得到上述第一中间索引的过程中,根据稀疏向量sX13的索引表示方式、稀疏向量sX13的索引和稀疏矩阵sA2第j行的索引得到上述第一中间索引,包括
当上述稀疏向量sX13的索引表示方式为直接索引表示方式时,上述稀疏向量sX13的索引和稀疏矩阵sA2第j行的索引均为由0和1组成的字符串,0和1的具体含义可参见上述对表1的相关描述,在此不再叙述。上述控制单元103对上述稀疏向量sX13的索引和稀疏矩阵sA2第j行的索引进行与操作,以得到上述第一中间索引。然后上述控制单元103根据该第一中间索引对上述稀疏向量sX13和稀疏矩阵sA2第j行的元素进行筛选,以得到上述筛选后的sX13和筛选后的稀疏矩阵sA2第j行元素。
比如上述稀疏向量sX13=(2,5,1,3),该稀疏向量sX13的索引为“101101”;上述稀疏矩阵sA2第j行的元素为(1.2,8,5),该稀疏矩阵sA2第j行的索引为“110100”,则上述第一中间索引为“100100”,上述控制单元103根据上述第一中间索引“100100”对上述稀疏向量sX13和稀疏矩阵sA2第j行元素进行筛选,得到的筛选后的稀疏向量sX1=(2,1),得到的筛选后的稀疏矩阵sA2第j行元素为(1.2,5)。
当上述稀疏向量sX13的索引表示方式为步长索引表示方式时,上述稀疏向量sX13的索引和稀疏矩阵sA2第j行的索引均为由其对应的稠密向量中满足上述预设条件的元素与上一个满足上述预设条件的元素之间的距离值组成的字符串,且表示上述稀疏向量sX13的索引和稀疏矩阵sA2第j行的索引的字符串是按照物理地址由低到高的顺序存储的。
上述控制单元103将上述稀疏向量sX13的索引中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的结果组成第一字符串;同理,对上述稀疏向量sY13的索引进行同样的处理,得到第二字符串;从上述第一字符串和第二字符串中,选取相同的元素,按照元素值从小到大的顺序排序,得到第三字符串;将上述第三字符串中每一个元素与其相邻且值小于该元素值的元素进行相减,得到的元素组成上述第一中间索引。
举例说明,上述稀疏向量sX13的索引为“01111”,上述稀疏矩阵sA2第j行的索引为“022”,上述控制单元103将上述稀疏向量sX13的索引中的每个元素与其相邻的前一个元素相加,得到第一字符串“01234”;同理,上述控制单元103对上述稀疏矩阵sA2第j行的索引进行相同的处理后得到的第二字符串为“024”。上述控制单元103从上述第一字符串“01234”和上述第二字符串“024”选组相同的元素,以得到第三字符串“024”。上述控制单元103将该第三字符串中的每个元素与其相邻的前一个元素进行相减,即0,(2-0),(4-2),以得到上述第一中间索引“022”。然后上述控制单元103根据该第一中间索引对上述稀疏向量sX13和稀疏矩阵sA2第j行的元素进行筛选,以得到上述筛选后的sX13和筛选后的稀疏矩阵sA2第j行的元素。按照上述方法对上述稀疏矩阵sA2的每一行元素进行筛选,以得到筛选后的稀疏矩阵sA2。
上述控制单元103分别根据上述第十一标量的首地址C11和第十二标量的首地址C12从上述控制器101中获取上述第十一标量c11和第十二标量c12,并将上述筛选后的变换后的稀疏矩阵sA2、稀疏向量sX13、向量Y13、第十一标量c11和第十二标量c12传输至上述运算单元104。
该运算单元104按照以下公式(2)对上述筛选后的变换后的稀疏矩阵sA2、筛选后的稀疏向量sX13、向量sY13、第十一标量c11和第十二标量c12进行向量点积运算。
Y13:=c11*sA2*sX13+c12*Y13 (2)
上述运算单元104根据公式c11*sA2*sX13得到向量B1,根据公式c12*Y13得到的向量B2,向量B1与向量B2之和为向量B3;向量B3中元素的个数与上述向量Y13中元素的个数一致,上述运算单元104将该向量B3中的第i个元素存储到上述向量Y13中的第i个元素的首地址对应的存储空间中。
进一步地,所述操作域还包括所述稀疏矩阵sA2的索引表示方式;所述控制单元还用于:
在获取所述稀疏向量sX13及其索引和所述变换后的稀疏矩阵sA2及其各行索引之后,根据所述稀疏向量sX13的索引、所述稀疏向量sX13的索引表示方式、所述稀疏矩阵sA2的每行索引和所述稀疏矩阵sA2的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2中各行的元素进行筛选,以得到所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;并将所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏向量sY13传输至所述运算单元104。
具体地,上述第二矩阵向量乘指令可表示为:GEMV2(I_TYPEsX13,I_TYPEsA2LAYOUT2,TRANS1,R3,R4,C11,D2,InsA2,LDA2,ValsX13,InsX13,C12,y13),其中,上述第二矩阵向量乘指令的操作码为GEMV2,用于指示进矩阵向量乘运算;该矩阵向量乘指令的操作域包括:I_TYPEsX13,I_TYPEsA2,LAYOUT2,TRANS1,R3,R4,C11,D2,InsA2,LDA2,ValsX13,InsX13,C12和y13,其对应的含义描述见下表4。
表4
上述控制单元103获取上述第二矩阵向量乘指令后,解析该矩阵向量乘指令,以得到该矩阵向量乘指令的操作域和操作码。上述控制单元103根据上述稀疏矩阵sA2各行元素的首地址D2、稀疏矩阵sA2的行数R3第二矩阵的存储格式和上述稀疏矩阵sA2的低维长度LDA2从上述存储器101中获取上述稀疏矩阵sA2。
当上述稀疏矩阵sA2的存储格式为行主序时,上述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当上述稀疏矩阵sA2的存储格式为列主序时,上述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔。
上述控制单元103根据上述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别从上述存储器101中获取上述稀疏向量sX13和向量Y13;根据上述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址从上述存储器101中获取稀疏向量sX13的索引和稀疏矩阵sA2各行的索引。
上述控制单元103根据上述稀疏矩阵sA2的变换信息对该稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2。
上述控制单元103获取上述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引后,根据该稀疏向量sX13的索引、上述稀疏向量sX13的索引表示方式、上述稀疏矩阵sA2的每一行索引和上述矩阵sA2的索引表示方式,得到第二中间索引过程中,根据该稀疏向量sX13的索引、上述稀疏向量sX13的索引表示方式、上述稀疏矩阵sA2的第j行的索引和上述矩阵sA2的索引表示方式,得到第二中间索引,包括:
当上述稀疏向量sX13的索引表示方式和稀疏矩阵sA2的第j行的索引表示方式均为直接索引表示方式时,上述控制单元103对上述稀疏向量sX13的索引和稀疏矩阵sA2的第j行的索引进行与操作,以得到上述第二中间索引;
当上述稀疏向量sX13的索引表示方式和稀疏矩阵sA2的第j行的索引表示方式均为步长索引表示方式时,上述控制单元103将上述稀疏向量sX13的索引中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的结果组成第一字符串;同理,对上述稀疏向量sY13的索引进行同样的处理,得到第二字符串;从上述第一字符串和第二字符串中,选取相同的元素,按照元素值从小到大的顺序排序,得到第三字符串;将上述第三字符串中每一个元素与其相邻且值小于该元素值的元素进行相减,得到的元素组成上述第二中间索引;
当上述稀疏向量sX13的索引表示方式和稀疏矩阵sA2的第j行的索引表示方式中,一个为直接索引表示方式,另一个为步长索引表示方式时,上述控制单元103将上述稀疏向量sX13的索引和上述稀疏矩阵sA2的第j行的索引中以步长索引表示方式表示的索引转换为以直接索引表示方式表示的索引,然后对该索引与上述稀疏向量sX13的索引和上述稀疏矩阵sA2的第j行的索引中以直接索引表示方式表示的索引进行与操作,以得到上述第二中间索引,或者;
上述控制单元103将上述稀疏向量sX13的索引和上述稀疏矩阵sA2的第j行的索引中以直接索引表示方式表示的索引转换为以步长索引表示方式表示的索引,然后根据上述方法对该索引和上述稀疏向量sX13的索引和上述稀疏矩阵sA2的第j行的索引中以步长索引表示方式表示的索引进行处理,以得到上述第二中间索引。
然后上述控制单元103根据该第二中间索引对上述稀疏向量sX13的元素和变换后的矩阵sA2各行的元素进行筛选,以得到上述筛选后的sX13和筛选后的变换后的稀疏矩阵sA2;分别根据上述第十一标量的首地址C11和第十二标量首地址C12从上述控制器101中获取上述第十一标量c11和第十二标量c12,并将上述筛选后的变换后的稀疏矩阵sA2、筛选后的稀疏向量sX13、向量Y13、第十一标量c11和第十二标量c12传输至上述运算单元104,后续处理和运算可参见对上述表3的相关描述。
进一步地,所述操作域还包括:所述稀疏向量sX13中元素的个数、所述向量Y13中元素的个数、向量Y13中元素之间的地址间隔和所述稀疏矩阵sA2各行元素的个数;
所述控制单元根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度从所述存储器中获取所述稀疏矩阵sA2,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行元素的个数、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度从所述存储器中获取所述稀疏矩阵sA2;
所述控制单元根据所述稀疏向量sX13中元素的首地址和向量Y13的首地址分别从所述存储器中获取所述稀疏向量sX13和向量Y13,包括:
根据所述稀疏向量sX13中元素的首地址和所述稀疏向量sX13中元素的个数从所述存储器中获取所述稀疏向量sX13;
根据所述向量Y13中元素的首地址、向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器中获取所述向量Y13。
具体地,上述第二矩阵向量乘指令还可以表示为:GEMV2(D_TYPE13,I_TYPEsX13,LAYOUT2,TRANS1,R3,R4,C11,Nnz13,D2,InsA2,LDA2,Nnz13ValsX13,InsX13,M6,C12,y13,INCY13),其中,上述第二矩阵向量乘指令的操作码为GEMV2,用于指示进矩阵向量乘运算;该矩阵向量乘指令的操作域包括:D_TYPE13,I_TYPE13,LAYOUT2,TRANS1,R3,R4,C11,Nnz13,D2,InsA2,LDA2,Nnz13,ValsX13,InsX13,C12,M6,y13和INCY13,其对应的含义描述见下表5。
表5
需要指出的是,上述表5中的操作域D_TYPE13表征参与上述矩阵向量乘运算的数据的类型。
上述控制单元103根据上述稀疏向量sX13中元素的首地址和稀疏向量sX13中元素的个数从上述存储器101中获取上述稀疏向量sX13;根据上述向量sY13中元素的首地址、向量sY13中元素的个数和向量Y13中元素之间的地址间隔从上述存储器101中获取上述向量sY13;根据上述稀疏矩阵sA2各行元素的首地址、上述稀疏矩阵sA2各行元素的个数、上述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和上述稀疏矩阵sA2的低维长度从所述存储器中获取上述稀疏矩阵sA2。在获取上述稀疏向量sX13、稀疏矩阵sA2和向量Y13后,上述控制单元103对上述稀疏向量sX13、稀疏矩阵sA2和向量Y13按照对上述表3的相关描述进行后续处理和运算,在此不再叙述。
可选地,上述第二矩阵向量乘指令还可以表示为:GEMV2(D_TYPE13,I_TYPEsX13,I_TYPEsA2,LAYOUT2,TRANS1,R3,R4,C11,Nnz13,D2,InsA2,LDA2,Mnz13ValsX13,InsX13,M6,C12,y13,INCY13),其中,上述第二矩阵向量乘指令的操作码为GEMV2,用于指示进矩阵向量乘运算;该矩阵向量乘指令的操作域包括:D_TYPE13,I_TYPEsX13,I_TYPEsA2,LAYOUT2,TRANS1,R3,R4,C11,Nnz13,D2,InsA2,LDA2,Mnz13,ValsX13,InsX13,C12,M6,y13和INCY13,其对应的含义描述见下表6。
表6
需要指出的是,上述表6中的操作域D_TYPE13表征参与上述矩阵向量乘运算的数据的类型。
上述控制单元103根据上述稀疏向量sX13中元素的首地址和稀疏向量sX13中元素的个数从上述存储器101中获取上述稀疏向量sX13;根据上述向量sY13中元素的首地址、向量sY13中元素的个数和向量Y13中元素之间的地址间隔从上述存储器101中获取上述向量sY13;根据上述稀疏矩阵sA2各行元素的首地址、上述稀疏矩阵sA2各行元素的个数、上述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和上述稀疏矩阵sA2的低维长度从所述存储器中获取上述稀疏矩阵sA2。在获取上述稀疏向量sX13、稀疏矩阵sA2和向量Y13后,上述控制单元103对上述稀疏向量sX13、稀疏矩阵sA2和向量Y13按照对上述表4的相关描述进行后续处理和运算,在此不再叙述。
上表1-表6中指令格式中第十一标量c11和第十二标量c12可对矩阵和向量进行缩放,增加了指令的灵活性,避免了利用缩放指令进行缩放的额外开销。向量和矩阵的规模可变,可以减少指令数量,简化指令的使用。可以处理不同存储格式(行主序和列主序)的矩阵,避免了对矩阵进行变换的开销。可以实现对矩阵的转置和求共轭等变换,避免了单独进行矩阵变换所带来的额外的开销。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。支持按照一定间隔存储的矩阵格式,避免了对矩阵存储格式进行变换的执行开销和存储中间结果的空间占用。
在一种可能的实施中,当输入数据的索引表示方式为直接索引表示方式时,该输入数据的索引为由0和1组成的字符串,0表示上述输入数据中元素不满足预设条件,1表示上述输入数据中的元素满足上述预设条件,或者;
当上述输入数据的索引表示方式为步长索引表示方式时,该输入数据的索引为该输入数据中满足上述预设条件的元素与上一个满足上述预设条件的元素之间的距离值组成的字符串;
其中,上述预设条件为:上述输入数据中的元素的绝对值大于(>)或者小于或者等于(≤)预设阈值,上述输入数据可为上述稀疏向量X13,所述稀疏向量sX13或所述稀疏矩阵sA2的各行元素。
举例说明,假设上述输入数据为向量(3,0,6,4,0.1,0.9)时,预设阈值为0.5,由于向量中元素0和元素0.1的绝对值均小于上述预设阈值,则以直接索引表示方式表示的输入数据的索引为101101。
举例说明,假设上述输入数据为向量(3,0,6,4,0.1,0.9)时,预设阈值为0.5,由于向量中元素0和元素0.1的绝对值均小于上述预设阈值,则以步长索引表示方式表示的输入数据的索引为0212。
可选地,上述输入数据的索引的表示方式还可为坐标列表(Coordinate list,COO)表示方式、压缩稀疏行(Compressed Sparse Row,CSR)表示方式。
具体地,上述输入数据为稀疏数据,且该输入数据以矩阵形式表示的,当上述输入数据的索引为COO表示方式时,该输入数据的索引由至少一个元组组成,所述元组包括输入数据矩阵中绝对值大于预设阈值的元素在所述输入数据矩阵中的行号、列号和该绝对值大于上述预设阈值的元素的值。
举例说明,假设上述输入数据为上述预设阈值为0.5,则以COO表示方式表示的输入数据的索引为((1,1,2),(1,2,3.5),(2,2,8),(3,1,5.8),(3,2,6))。
具体地,上述输入数据为稀疏数据,且该输入数据以矩阵形式表示的,当上述输入数据的索引表示方式为CSR表示方式时,该输入数据的索引包括三个数组,分别为第一数组,第二数组和第三数组,该第一数组存储上述输入数据矩阵中的绝对值大于预设阈值的元素的值,上述第二数组存储所述输入数据矩阵中的绝对值大于所述预设阈值的元素在该输入数据矩阵中的列索引,上述第三数组用于累加存储上述输入数据矩阵中每一行绝对值大于所述预设阈值的元素的个数,并且该第三数组中的最后一个元素存储上述输入数据矩阵中绝对值大于所述预设阈值的元素的个数。
采用CSR表示方式是把上述输入数据矩阵的行的信息压缩存储了,只显式保留每行第一个绝对值大于上述预设阈值的元素的位置。将上述输入数据的索引通过三个数组表示:
上述第一数组存储上述输入数据矩阵中的所有绝对值大于上述预设阈值的元素的值,其顺序按照从左至右、从上到下的行遍历方式排列元素,该第一数组记作A。该第一数组的长度即输入数据矩阵中绝对值大于上述预设阈值的元素的个数;
上述第二数组存储上述第一数组A中的每个元素分别在输入数据矩阵中的列索引(即列号),因而第二数组的长度与数组A的长度相同,记此数组为JA。
上述第三数组记作IA,该数组IA的长度为输入数据矩阵的行数加1。该数组IA中的元素累加存储上述输入数据矩阵中每一行绝对值大于上述预设阈值的元素的个数,具体可通过如下递归方法获取,并在该数组IA中的最后一个元素中保存整个输入数据矩阵中绝对值大于上述预设阈值的元素的个数
若上述三个数组的序号与输入数据矩阵的序号从0开始,可以用如下的递归方法定义数组IA:
IA[0]=0
IA[i]=IA[i-1]+输入数据矩阵中第i-1行的绝对值大于上述预设阈值的元素的个数(i>0)。
举例说明,假设上述输入数据为上述预设阈值为0.5,则以CSR表示方
式表示输入数据的索引为:由于上述第一数组A存储上述矩阵中的所有绝对值大于0.5的元素的值,其顺序按照从左到右,从上到下的行遍历方式排列元素,故该第一数组A=[5,8,3,6];第二数组JA存储上述数组A中每个元素分别在上述矩阵中的列索引(即列号),则该数组JA=[0,1,2,1]。在第三数组IA中的第i个元素为该第三数组I中的第i-1个元素与上述矩阵中第i-1行的绝对值大于0.5的元素的个数之和,i=1,2,3,4,5,根据上述递归方式确定该数组IA=[0,0,2,3,4]。
进一步地,上述控制单元103对上述稀疏向量索引或者稀疏矩阵的行索引或者列索引进行索引转换可根据转换指令进行转换。该转换指令包括第一转换指令、第二转换指令、第三转换指令。
其中,上述第一转换指令用于将以直接索引表示方式表示的索引转换为以步长索引表示方式表示的索引。具体地,上述第一转换指令为:DIRECT2STTP(InX,InY)。该第一转换指令的操作码为DIRECT2STTP,操作域包括:InX和InY,该指令中各操作域的功能描述见下表7。
变量 功能描述
InX 待转换数据的直接索引的首地址
InY 转换后数据的步长索引的首地址
表7
上述控制单元103解析上述第一转换指令后,得到该指令的操作码和操作域;根据上述待转换数据的直接索引的首地址从上述存储器101中,获取该待转换数据的直接索引;然后将该待转换数据的直接索引转换为步长索引,然后将该步长索引存储到上述转换后数据的步长索引的首地址对应的存储空间中。
比如上述直接索引为“100101”,则对应的步长索引为“032”。
具体地,上述第一转换指令还可为:DIRECT2STTP(D_TYPE,Nnz,InX,ValX,InY,ValY)。该第一转换指令的操作码为DIRECT2STTP,操作域包括:D_TYPE,Nnz,InX,ValX,InY和ValY,该指令中各操作域的功能描述见下表8。
操作域 功能描述
D_TYPE 进行操作的数据类型,支持实数和复数
Nnz 待转换数据中元素的个数
InX 待转换数据的直接索引的首地址
ValX 待转换数据中元素的首地址
InY 转换后数据的步长索引的首地址
ValY 转换后数据中元素的首地址
表8
需要指出的是,上述表8中的D_TYPE用于表征进行索引转换的数据的类型。
上述控制单元103解析上述第一转换指令后,得到该指令的操作码和操作域;根据上述待转换数据的直接索引的首地址从上述存储器101中,获取该待转换数据的直接索引;根据上述根据待转换数据中元素的个数和上述待转换数据的首地址从上述存储器101中获取上述待转换数据。
上述控制单元103将上述待转换数据的直接索引转换为步长索引;根据该步长索引对上述待转换数据中的元素进行筛选,以得到转换后的数据,并将该转换后的数据存储到上述转换后数据中元素的首地址对应的存储空间中;将该步长索引存储到上述转换后数据的步长索引的首地址对应的存储空间中。
比如上述待转换数据为向量Mx1=(3,7,5,9,0.4,2.3),上述待转换数据的直接索引为“101101”,上述控制单元103将直接索引转换为步长索引为“0212”,根据该步长索引“0212”对上述向量Mx1中的元素进行筛选,以得到转换后数据为向量(3,5,9,2.3)。
其中,上述第二转换指令用于将以COO索引表示方式表示的矩阵的索引转换为以步长索引表示方式表示的索引。具体地,上述第二转换指令为:COO2STTP(D_TYPE,LAYOUT,Nnz,InXi,InYi,ValX,InY,ValY)。该第二转换指令的操作码为:COO2STTP,操作域包括:D_TYPE,LAYOUT,Nnz,InXi,InYi,ValX,InY和ValY。该指令中各操作域的功能描述见下表9。
操作域 功能描述
D_TYPE 进行操作的数据类型,支持实数和复数
LAYOUT 表示矩阵存储格式(包括行主序或列主序)
Nnz 待转换数据中绝对值大于预设阈值的数据的数量
InXi 待转换数据的行坐标的首地址
InYj 待转换数据列坐标的首地址
ValX 待转换数据中元素的首地址
InY 转换后数据的步长索引的首地址
ValY 转换后数据中元素的首地址
表9
需要指出的是,上述表9中的D_TYPE用于表征进行索引转换的数据的类型。
其中,上述第三转换指令用于将以CSR索引表示方式表示的矩阵的索引转换为以步长索引表示方式表示的索引。具体地,上述第三转换指令为:CSR2STTP(D_TYPE,Nnz,InXr,InYc,ValX,InY,ValY)。该第二转换指令的操作码为:COO2STTP,操作域包括:D_TYPE,Nnz,InXr,InYc,ValX,InY和ValY。该指令中各操作域的功能描述见下表10。
表10
需要指出的是,上述表10中的D_TYPE用于表征进行索引转换的数据的类型。
可选地,上述运算单元104执行指令对输入数据进行运算操作可以包括:直接对稀疏输入数据进行运算,或者根据稀疏输入数据的索引对另一个的待运算数据进行处理后再进行运算等。
具体地,当矩阵向量乘指令的输入数据包括标量和向量/矩阵,即该矩阵向量乘指令用于执行标量与向量/矩阵之间的运算,上述运算单元104则直接对标量和向量/矩阵进行运算;当矩阵向量乘指令为对至少两个向量/矩阵进行运算的指令时,且至少两个向量/矩阵中的至少一个为稀疏向量/矩阵时,则上述运算单元104根据稀疏矩阵/向量的索引对非稀疏矩阵/向量进行数据筛选后再进行运算;当稀疏向量/矩阵的索引的表示方式不是硬件运算部分对应的索引的表示方式(即稀疏向量/矩阵的索引的表示方式不是默认索引表示方式)时,上述运算单元104将以非默认索引表示方式表示的稀疏向量/矩阵的索引转换为以默认索引表示方式的索引,后续再进行相应的运算操作。
举例说明,对于一个标量和稀疏矩阵进行运算,如F=αA,其中,α为一个标量,A为稀疏矩阵,则上述运算单元104可以直接对稀疏数据A的元素进行运算。又如F=AB,其中,A为稀疏矩阵,B为稠密矩阵,则上述运算单元104根据稀疏矩阵A的索引对稠密矩阵B的元素进行筛选,以筛选出与稀疏矩阵A进行运算的元素,然后进行后续运算操作。
在一种可行的实施例中,上述存储器101为高速暂存存储器。
在一种可行的实施例中,如图2所示,上述控制单元103包括:
指令存储单元1031,用于存储所述矩阵向量乘指令;
指令处理单元1032,用于对所述矩阵向量乘指令进行解析,以得到所述操作码和操作域;
存储队列单元1033,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个矩阵向量乘指令。
在一种可行的实施例中,如图3所示,上述运算单元104包括:向量加法电路1041、向量乘法电路1042、大小比较电路1043、非线性运算电路1044和向量标量乘法电路1045。上述运算单元104内部的电路单元可以为多流水级结构,具体的如图4所示,该运算单元104内部的电路单元可分为三个流水级。
其中,第一流水级包括但不限于:向量乘法电路1042和向量标量乘法1045电路等等;第二流水级包括但不限于:大小比较电路1043(例如比较器)和向量加法电路1041等等;第三流水级包括但不限于:非线性运算电路1044(例如激活电路或超越函数计算电路等等)等等。其中上述第一流水级的输出数据为上述第二流水级的输入数据,上述第二流水级的输出数据为上述第三流水级的输入数据。
在一种可行的实施例中,上述运算单元104可包括但不限定于三个部分,分别为乘法器、一个或多个加法器(可选地,多个加法器组成加法树)和激活函数单元/激活函数运算器。上述乘法器将第一输入数据(in1)和第二输入数据(in2)相乘得到第一输出数据(out1),过程为:out1=in1*in2;上述加法树将第三输入数据(in3)通过加法树逐级相加得到第二输出数据(out2),其中in3是一个长度为N的向量,N大于1,过称为:out2=in3[1]+in3[2]+...+in3[N],和/或将第三输入数据(in3)通过加法树累加之后得到的结果和第四输入数据(in4)相加得到第二输出数据(out2),过程为:out2=in3[1]+in3[2]+...+in3[N]+in4,或者将第三输入数据(in3)和第四输入数据(in4)相加得到第二输出数据(out2),过称为:out2=in3+in4;上述激活函数单元将第五输入数据(in5)通过激活函数(active)运算得到第三输出数据(out3),过程为:out3=active(in5),激活函数active可以是sigmoid、tanh、relu、softmax等函数,除了做激活操作,激活函数单元可以实现其他的非线性函数运算,可将输入数据(in)通过函数(f)运算得到输出数据(out),过程为:out=f(in)。
上述运算单元104还可以包括池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
在一种可行的实施例中,上述处理装置100还包括:
依赖关系处理单元105,用于确定第s个矩阵向量乘指令与所述第s个矩阵向量乘指令之前的第s-1个矩阵向量乘指令是否存在关联关系,如所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令存在关联关系,将所述第s个矩阵向量乘指令缓存在所述指令存储单元内,在所述第s-1个矩阵向量乘指令执行完毕后,从所述指令存储单元提取所述第s个矩阵向量乘指令传输至所述运算单元;
所述确定该第s个矩阵向量乘指令与第s个矩阵向量乘指令之前的第s-1个矩阵向量乘指令是否存在关联关系包括:
依据所述第s个矩阵向量乘指令提取所述第s个矩阵向量乘指令中所需数据的第一存储地址区间,依据所述第s-1个矩阵向量乘指令提取所述第s-1个矩阵向量乘指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令不具有关联关系。
需要说明的是,上述任意一个表中的同一条指令中的向量或矩阵可以是不同的数据类型,包括浮点定点,位宽,复数等。指令中的变换除了转置和复数求共轭外,还可以包含其它的操作如求逆矩阵等,而且这些变换可以相互组合。对于向量操作可把运算符换成其它的操作类型,例如向量加换成乘、除等,求MAX换成求中间值等等。
对于如图1b所示的处理装置,其实现矩阵向量乘指令运算时计算出该矩阵向量乘指令的具体结构,即通过一个矩阵向量乘指令执行实现多条计算指令执行的组合,需要说明的是,对于处理装置执行该矩阵向量乘指令时并未将该矩阵向量乘指令拆分成多条计算指令。
需要指出的是,将上述处理装置应用到神经网络运算中,本发明实施例中所提到的矩阵或向量可以看成输入神经元和输出神经元,并且该输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有L层,K=1,2,3…L-1,对于第K层和第K+1层来说,第K层被称为输入层,该层中的神经元为上述输入神经元,第K+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
上述处理装置中各单元可以是硬件电路包括数字电路,模拟电路等等。硬件电路的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。上述处理装置中的运算单元可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。上述存储器均可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
在一种可行的实施例中,本发明实施例提供了一种运算装置,该运算装置包括一个或多个如图1b所示实施例所述的处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述运算装置包含多个所述处理装置时,所述多个所述处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述处理装置通过PCIE总线进行互联并传输数据,以支持更大规模的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
该运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。
在一种可行的实施例中,本发明实施例提供了一种组合处理装置,该组合装置包括如上述运算装置,通用互联接口和其他处理装置。
上述运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。参见图5a,图5a为本发明实施例提供的一种组合处理装置的结构示意图。如图5a所示,该组合处理装置包括上述运算装置501、通用互联接口502和其他处理装置503。
其中,上述其他处理装置503包括中央处理器(Central Processing Unit)、图形处理器(Graphics Processing Unit,GPU)、处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置503所包括的处理器数量不做限制。其他处理装置503作为运算装置501与外部数据和控制的接口,包括数据搬运,完成对本运算装置的开启、停止等基本控制;其他处理装置503也可以和运算装置501协作共同完成运算任务。
上述通用互联接口502,用于在所述运算装置501与其他处理装置503间传输数据和控制指令。该运算装置501从其他处理装置503中获取所需的输入数据,写入运算装置501片上的存储装置;可以从其他处理装置503中获取控制指令,写入运算装置501片上的控制缓存;也可以读取运算装置501的存储模块中的数据并传输给其他处理装置503。
可选的,如图5b所示,上述组合处理装置还包括存储装置504,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本运算装置501或其他处理装置503的内部存储中无法全部保存的数据。
上述组合装置可以作为手机、机器人、无人机等智能设备的片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。
在一种可行的实施例中,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括如图1b所示实施例所述的处理装置,或者上述运算装置或者上述组合处理装置。
在一种可行的实施例中,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述神经网络芯片。
在一种可行的实施例中,本发明实施例提供了一种板卡,该板卡包括上述神经网络芯片封装结构。该板卡可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、智能家居、家电、多处理器系统、基于微处理器的系统、机器人、可编程的消费电子设备、网络个人计算机(personalcomputer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
在一个实施例里,本公开公开了一个电子装置,其包括了上述板卡或神经网络芯片封装结构11。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
参见图6、图6为本发明实施例提供的一种运算方法的流程示意图。如图6所示,该方法包括:
S601、处理装置获取矩阵向量乘指令,并解析所述矩阵向量乘指令,以得到所述矩阵向量乘指令的操作码和操作域。
S602、处理装置根据所述操作域获取参与矩阵向量乘运算的数据。
S603、处理装置对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。
在一种可行的实施例中,当所述矩阵向量乘指令为第一矩阵向量乘指令时,所述操作码用于指示进行第一矩阵向量乘运算,所述操作域包括:稀疏向量X13的索引表示方式、第二矩阵的存储格式、所述矩阵A2的行数、所述矩阵A2的列数、矩阵A2的变换信息、第十一标量的首地址、第十二标量的首地址、稀疏向量X13中元素的首地址、稀疏向量X13的索引的首地址、向量Y13中元素的首地址、矩阵A2的首地址和所述矩阵A2的低维长度;其中,所述矩阵A2的存储格式为行主序时,所述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当所述矩阵A2的存储格式为列主序时,所述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔;
所述根据所述操作域获取参与矩阵向量乘运算的数据,包括:
根据所述矩阵A2的首地址、所述第二矩阵的存储格式和所述矩阵A2的低维长度获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据所述矩阵转换信息对所述矩阵A2进行转换,以得到转换后的矩阵A2;根据所述稀疏向量X13中元素的首地址获取所述稀疏向量X13;根据所述稀疏向量X13的索引的首地址获取所述稀疏向量X13的索引;根据所述向量Y13中元素的首地址获取所述向量Y13;根据所述稀疏向量X13的索引表示方式和所述稀疏向量X13的索引对所述向量Y13中的元素进行筛选,以得到稀疏向量Y13;根据所述第十一标量的首地址和所述十二标量的首地址分别获取所述第十一标量和第十二标量;
所述对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算,包括:
对所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量进行第一矩阵向量乘运算。
进一步地,所述操作域还包括:所述稀疏向量X13中元素的个数、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔;
所述根据所述稀疏向量X13中元素的首地址获取所述稀疏向量X13,包括:
根据所述稀疏向量X13中元素的首地址和所述稀疏向量X13中元素的个数获取所述稀疏向量X13;
所述根据所述向量Y13中元素的首地址获取所述向量Y13,包括:
根据所述向量Y13中元素的首地址、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔获取所述向量Y13。
在一种可行的实施例中,当所述矩阵向量乘指令为第二矩阵向量乘指令时,所述操作码用于指示进行第二矩阵向量乘运算,所述操作域包括:稀疏向量sX13的索引表示方式、第二矩阵的存储格式、稀疏矩阵sA2的行数、所述稀疏矩阵sA2的列数N1、稀疏矩阵sA2的变换信息、所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行索引的首地址、第十一标量的首地址、第十二标量的首地址、稀疏向量sX13中元素的首地址、稀疏向量sX13的索引的首地址、向量s13中元素的首地址、稀疏矩阵sA2的首地址和所述稀疏矩阵sA2的低维长度;其中,所述稀疏矩阵sA2的存储格式为行主序时,所述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当所述稀疏矩阵sA2的存储格式为列主序时,所述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔;
所述根据所述操作域获取参与矩阵向量乘运算的数据,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述矩阵A2的低维长度获取所述稀疏矩阵sA2;根据所述稀疏矩阵sA2变换信息对所述稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2;根据所述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别获取所述稀疏向量sX13和向量Y13;根据所述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址分别获取所述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引;根据所述稀疏向量sX13的索引表示方式、所述稀疏向量sX13的索引和稀疏矩阵sA2的每行索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2的每行元素进行筛选,以得到筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;根据所述第十一标量的首地址和所述十二标量的首地址分别获取所述第十一标量和第十二标量;
所述对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算,包括:
对所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量进行第二矩阵向量乘运算。
进一步地,所述操作域还包括所述稀疏矩阵sA2的索引表示方式;所述根据所述操作域获取参与矩阵向量乘运算的数据,还包括:
在获取所述稀疏向量sX13及其索引和所述变换后的稀疏矩阵sA2及其各行索引之后,根据所述稀疏向量sX13的索引、所述稀疏向量sX13的索引表示方式、所述稀疏矩阵sA2的每行索引和所述稀疏矩阵sA2的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2中各行的元素进行筛选,以得到所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2。
进一步地,所述操作域还包括:所述稀疏向量sX13中元素的个数、所述向量Y13中元素的个数、向量Y13中元素之间的地址间隔和所述稀疏矩阵sA2各行元素的个数;
所述控制单元根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度获取所述稀疏矩阵sA2,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行元素的个数、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度获取所述稀疏矩阵sA2;
所述根据所述稀疏向量sX13中元素的首地址和向量Y13的首地址分别获取所述稀疏向量sX13和向量Y13,包括:
根据所述稀疏向量sX13中元素的首地址和所述稀疏向量sX13中元素的个数获取所述稀疏向量sX13;
根据所述向量Y13中元素的首地址、向量Y13中元素的个数和向量Y13中元素之间的地址间隔获取所述向量Y13。
在一种可行的实施例中,输入数据的索引表示方式为直接索引表示方式或步长索引表示方式;所述输入数据包括:所述稀疏向量X13,所述稀疏向量sX13或所述稀疏矩阵sA2的各行元素;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
需要说明的是,上述方法实施例的具体描述可参见图1b所示实施例的相关描述,在此不再叙述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (21)

1.一种处理装置,用于根据矩阵向量乘指令执行运算,其特征在于,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;
所述寄存器单元,用于存储矩阵向量乘指令;所述矩阵向量乘指令包括操作码和操作域,所述操作码用于指示进行矩阵向量乘运算;所述操作域包括所述参与矩阵向量乘运算的数据的首地址和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引的地址;
所述存储器,用于存储参与矩阵向量乘运算的数据;
所述控制单元,用于从所述寄存器单元中获取所述矩阵向量乘指令,解析所述矩阵向量乘指令,以得到所述操作码和操作域;根据所述操作域从所述存储器中获取所述参与矩阵向量乘运算的数据和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引;并将所述参与矩阵向量乘运算的数据传输至所述运算单元;
所述运算单元,用于对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。
2.根据权利要求1所述的处理装置,其特征在于,当所述矩阵向量乘指令为第一矩阵向量乘指令时,所述操作码用于指示进行第一矩阵向量乘运算,所述操作域包括:稀疏向量X13的索引表示方式、第二矩阵的存储格式、所述矩阵A2的行数、所述矩阵A2的列数、矩阵A2的变换信息、第十一标量的首地址、第十二标量的首地址、稀疏向量X13中元素的首地址、稀疏向量X13的索引的首地址、向量Y13中元素的首地址、矩阵A2的首地址和所述矩阵A2的低维长度;其中,所述矩阵A2的存储格式为行主序时,所述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当所述矩阵A2的存储格式为列主序时,所述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔;
所述控制单元具体用于:
根据所述矩阵A2的首地址、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据所述矩阵转换信息对所述矩阵A2进行转换,以得到转换后的矩阵A2;根据所述稀疏向量X13中元素的首地址从所述存储器中获取所述稀疏向量X13;根据所述稀疏向量X13的索引的首地址从所述存储器获取所述稀疏向量X13的索引;根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13;根据所述稀疏向量X13的索引表示方式和所述稀疏向量X13的索引对所述向量Y13中的元素进行筛选,以得到稀疏向量Y13;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器中分别获取所述第十一标量和第十二标量;将所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量传输至所述运算单元;
所述运算单元具体用于:
对所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量进行第一矩阵向量乘运算。
3.根据权利要求2所述的处理装置,其特征在于,所述操作域还包括:所述稀疏向量X13中元素的个数、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔;
所述控制单元根据所述稀疏向量X13中元素的首地址从所述存储器中获取所述稀疏向量X13,包括:
根据所述稀疏向量X13中元素的首地址和所述稀疏向量X13中元素的个数从所述存储器中获取所述稀疏向量X13;
所述控制单元根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13,包括:
根据所述向量Y13中元素的首地址、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器中获取所述向量Y13。
4.根据权利要求1所述的处理装置,其特征在于,当所述矩阵向量乘指令为第二矩阵向量乘指令时,所述操作码用于指示进行第二矩阵向量乘运算,所述操作域包括:稀疏向量sX13的索引表示方式、第二矩阵的存储格式、稀疏矩阵sA2的行数、所述稀疏矩阵sA2的列数N1、稀疏矩阵sA2的变换信息、所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行索引的首地址、第十一标量的首地址、第十二标量的首地址、稀疏向量sX13中元素的首地址、稀疏向量sX13的索引的首地址、向量s13中元素的首地址、稀疏矩阵sA2的首地址和所述稀疏矩阵sA2的低维长度;其中,所述稀疏矩阵sA2的存储格式为行主序时,所述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当所述稀疏矩阵sA2的存储格式为列主序时,所述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔;
所述控制单元具体用于:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述稀疏矩阵sA2;根据所述稀疏矩阵sA2变换信息对所述稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2;根据所述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别从所述存储器中获取所述稀疏向量sX13和向量Y13;根据所述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址分别从所述存储器获取所述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引;根据所述稀疏向量sX13的索引表示方式、所述稀疏向量sX13的索引和稀疏矩阵sA2的每行索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2的每行元素进行筛选,以得到筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器中分别获取所述第十一标量和第十二标量;将所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量传输至所述运算单元;
所述运算单元具体用于:
对所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量进行第二矩阵向量乘运算。
5.根据权利要求4所述的处理装置,其特征在于,所述操作域还包括所述稀疏矩阵sA2的索引表示方式;所述控制单元还用于:
在获取所述稀疏向量sX13及其索引和所述变换后的稀疏矩阵sA2及其各行索引之后,根据所述稀疏向量sX13的索引、所述稀疏向量sX13的索引表示方式、所述稀疏矩阵sA2的每行索引和所述稀疏矩阵sA2的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2中各行的元素进行筛选,以得到所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;并将所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏向量sY13传输至所述运算单元。
6.根据权利要求4或5所述的处理装置,其特征在于,所述操作域还包括:所述稀疏向量sX13中元素的个数、所述向量Y13中元素的个数、向量Y13中元素之间的地址间隔和所述稀疏矩阵sA2各行元素的个数;
所述控制单元根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度从所述存储器中获取所述稀疏矩阵sA2,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行元素的个数、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度从所述存储器中获取所述稀疏矩阵sA2;
所述控制单元根据所述稀疏向量sX13中元素的首地址和向量Y13的首地址分别从所述存储器中获取所述稀疏向量sX13和向量Y13,包括:
根据所述稀疏向量sX13中元素的首地址和所述稀疏向量sX13中元素的个数从所述存储器中获取所述稀疏向量sX13;
根据所述向量Y13中元素的首地址、向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器中获取所述向量Y13。
7.根据权利要求2-6任一项所述的处理装置,其特征在于,输入数据的索引表示方式包括:直接索引表示方式或步长索引表示方式;其中所述输入数据包括:稀疏向量X13、稀疏向量sX13或稀疏矩阵sA2的各行元素;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
8.根据权利要求1-7任一项所述的处理装置,其特征在于,所述运算单元还包括向量加法电路、向量乘法电路、大小比较电路、非线性运算电路和向量标量乘法电路;所述运算单元为多流水级结构;
其中,所述向量乘法电路和所述向量标量乘法电路处于第一流水级,所述大小比较电路和所述向量加法电路处于第二流水级,所述非线性运算部件处于第三流水级,其中所述第一流水级的输出数据为所述第二流水级的输入数据,所述第二流水级的输出数据为所述第三流水级的输入数据。
9.根据权利要求1-8任一项所述的处理准直,其特征在于,所述控制单元还包括:
指令存储单元,用于存储所述矩阵向量乘指令;
指令处理单元,用于对所述矩阵向量乘指令进行解析,以得到所述操作码和操作域;
存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个矩阵向量乘指令。
10.根据权利要求9所述的处理装置,其特征在于,所述处理装置还包括:
依赖关系处理单元,用于确定第s个矩阵向量乘指令与所述第s个矩阵向量乘指令之前的第s-1个矩阵向量乘指令是否存在关联关系,如所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令存在关联关系,将所述第s个矩阵向量乘指令缓存在所述指令存储单元内,在所述第s-1个矩阵向量乘指令执行完毕后,从所述指令存储单元提取所述第s个矩阵向量乘指令传输至所述运算单元;
所述确定该第s个矩阵向量乘指令与第s个矩阵向量乘指令之前的第s-1个矩阵向量乘指令是否存在关联关系包括:
依据所述第s个矩阵向量乘指令提取所述第s个矩阵向量乘指令中所需数据的第一存储地址区间,依据所述第s-1个矩阵向量乘指令提取所述第s-1个矩阵向量乘指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第s个矩阵向量乘指令与所述第s-1个矩阵向量乘指令不具有关联关系。
11.一种运算装置,其特征在于,所述运算装置包括一个或多个如权利要求1-10任一项所述的处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的运算,将执行结果通过I/O接口传递给其他处理装置;
当所述运算装置包含多个所处理装置时,所述多个所述处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述处理装置通过快速外部设备互连总线或PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
12.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求11所述的运算装置,通用互联接口和其他处理装置;
所述运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
13.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求11所述的运算装置或如权利要求12所述的组合处理装置。
14.一种电子装置,其特征在于,所述电子装置包括如权利要求13所述的神经网络芯片。
15.一种执行矩阵向量乘指令的方法,其特征在于,包括:
获取矩阵向量乘指令,并解析所述矩阵向量乘指令,以得到所述矩阵向量乘指令的操作码和操作域;
根据所述操作域获取参与矩阵向量乘运算的数据;
对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。
16.根据权利要求15所述的方法,其特征在于,当所述矩阵向量乘指令为第一矩阵向量乘指令时,所述操作码用于指示进行第一矩阵向量乘运算,所述操作域包括:稀疏向量X13的索引表示方式、第二矩阵的存储格式、所述矩阵A2的行数、所述矩阵A2的列数、矩阵A2的变换信息、第十一标量的首地址、第十二标量的首地址、稀疏向量X13中元素的首地址、稀疏向量X13的索引的首地址、向量Y13中元素的首地址、矩阵A2的首地址和所述矩阵A2的低维长度;其中,所述矩阵A2的存储格式为行主序时,所述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当所述矩阵A2的存储格式为列主序时,所述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔;
所述根据所述操作域获取参与矩阵向量乘运算的数据,包括:
根据所述矩阵A2的首地址、所述第二矩阵的存储格式和所述矩阵A2的低维长度获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据所述矩阵转换信息对所述矩阵A2进行转换,以得到转换后的矩阵A2;根据所述稀疏向量X13中元素的首地址获取所述稀疏向量X13;根据所述稀疏向量X13的索引的首地址获取所述稀疏向量X13的索引;根据所述向量Y13中元素的首地址获取所述向量Y13;根据所述稀疏向量X13的索引表示方式和所述稀疏向量X13的索引对所述向量Y13中的元素进行筛选,以得到稀疏向量Y13;根据所述第十一标量的首地址和所述十二标量的首地址分别获取所述第十一标量和第十二标量;
所述对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算,包括:
对所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量进行第一矩阵向量乘运算。
17.根据权利要求16所述的方法,其特征在于,所述操作域还包括:所述稀疏向量X13中元素的个数、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔;
所述根据所述稀疏向量X13中元素的首地址获取所述稀疏向量X13,包括:
根据所述稀疏向量X13中元素的首地址和所述稀疏向量X13中元素的个数获取所述稀疏向量X13;
所述根据所述向量Y13中元素的首地址获取所述向量Y13,包括:
根据所述向量Y13中元素的首地址、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔获取所述向量Y13。
18.根据权利要求15所述的方法,其特征在于,当所述矩阵向量乘指令为第二矩阵向量乘指令时,所述操作码用于指示进行第二矩阵向量乘运算,所述操作域包括:稀疏向量sX13的索引表示方式、第二矩阵的存储格式、稀疏矩阵sA2的行数、所述稀疏矩阵sA2的列数N1、稀疏矩阵sA2的变换信息、所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行索引的首地址、第十一标量的首地址、第十二标量的首地址、稀疏向量sX13中元素的首地址、稀疏向量sX13的索引的首地址、向量s13中元素的首地址、稀疏矩阵sA2的首地址和所述稀疏矩阵sA2的低维长度;其中,所述稀疏矩阵sA2的存储格式为行主序时,所述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当所述稀疏矩阵sA2的存储格式为列主序时,所述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔;
所述根据所述操作域获取参与矩阵向量乘运算的数据,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述矩阵A2的低维长度获取所述稀疏矩阵sA2;根据所述稀疏矩阵sA2变换信息对所述稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2;根据所述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别获取所述稀疏向量sX13和向量Y13;根据所述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址分别获取所述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引;根据所述稀疏向量sX13的索引表示方式、所述稀疏向量sX13的索引和稀疏矩阵sA2的每行索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2的每行元素进行筛选,以得到筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;根据所述第十一标量的首地址和所述十二标量的首地址分别获取所述第十一标量和第十二标量;
所述对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算,包括:
对所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量进行第二矩阵向量乘运算。
19.根据权利要求18所述的方法,其特征在于,所述操作域还包括所述稀疏矩阵sA2的索引表示方式;所述根据所述操作域获取参与矩阵向量乘运算的数据,还包括:
在获取所述稀疏向量sX13及其索引和所述变换后的稀疏矩阵sA2及其各行索引之后,根据所述稀疏向量sX13的索引、所述稀疏向量sX13的索引表示方式、所述稀疏矩阵sA2的每行索引和所述稀疏矩阵sA2的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2中各行的元素进行筛选,以得到所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2。
20.根据权利要求18或19所述的方法,其特征在于,所述操作域还包括:所述稀疏向量sX13中元素的个数、所述向量Y13中元素的个数、向量Y13中元素之间的地址间隔和所述稀疏矩阵sA2各行元素的个数;
所述控制单元根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度获取所述稀疏矩阵sA2,包括:
根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行元素的个数、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度获取所述稀疏矩阵sA2;
所述根据所述稀疏向量sX13中元素的首地址和向量Y13的首地址分别获取所述稀疏向量sX13和向量Y13,包括:
根据所述稀疏向量sX13中元素的首地址和所述稀疏向量sX13中元素的个数获取所述稀疏向量sX13;
根据所述向量Y13中元素的首地址、向量Y13中元素的个数和向量Y13中元素之间的地址间隔获取所述向量Y13。
21.根据权利要求16-20任一项所述的方法,其特征在于,输入数据的索引表示方式为直接索引表示方式或步长索引表示方式;所述输入数据包括:所述稀疏向量X13,所述稀疏向量sX13或所述稀疏矩阵sA2的各行元素;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
CN201810913978.5A 2018-08-08 2018-08-08 神经网络处理装置及其执行矩阵向量乘指令的方法 Pending CN108960418A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810913978.5A CN108960418A (zh) 2018-08-08 2018-08-08 神经网络处理装置及其执行矩阵向量乘指令的方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810899812.2A CN109062609A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行运算指令的方法
CN201810913978.5A CN108960418A (zh) 2018-08-08 2018-08-08 神经网络处理装置及其执行矩阵向量乘指令的方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201810899812.2A Division CN109062609A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行运算指令的方法

Publications (1)

Publication Number Publication Date
CN108960418A true CN108960418A (zh) 2018-12-07

Family

ID=64469365

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810914646.9A Active CN109032670B (zh) 2018-08-08 2018-08-08 神经网络处理装置及其执行向量复制指令的方法
CN201810913978.5A Pending CN108960418A (zh) 2018-08-08 2018-08-08 神经网络处理装置及其执行矩阵向量乘指令的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810914646.9A Active CN109032670B (zh) 2018-08-08 2018-08-08 神经网络处理装置及其执行向量复制指令的方法

Country Status (1)

Country Link
CN (2) CN109032670B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109886394A (zh) * 2019-03-05 2019-06-14 北京时代拓灵科技有限公司 嵌入式设备中三值神经网络权值处理方法及装置
CN110598175A (zh) * 2019-09-17 2019-12-20 西安邮电大学 一种基于图计算加速器的稀疏矩阵列向量比较装置
CN111381871A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN112799635A (zh) * 2021-02-08 2021-05-14 算筹信息科技有限公司 一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法
CN113836481A (zh) * 2020-06-24 2021-12-24 北京希姆计算科技有限公司 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN116795432A (zh) * 2023-08-18 2023-09-22 腾讯科技(深圳)有限公司 运算指令的执行方法、装置、电路、处理器及设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919311B (zh) * 2019-03-13 2020-04-10 北京地平线机器人技术研发有限公司 生成指令序列的方法、执行神经网络运算的方法和装置
CN111949318A (zh) * 2019-05-17 2020-11-17 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN112396186A (zh) * 2019-08-12 2021-02-23 上海寒武纪信息科技有限公司 执行方法、装置及相关产品
CN112394985A (zh) * 2019-08-12 2021-02-23 上海寒武纪信息科技有限公司 执行方法、装置及相关产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1056356A (zh) * 1990-03-16 1991-11-20 德克萨斯仪器股份有限公司 分布处理存储器
CN105518625A (zh) * 2013-08-30 2016-04-20 微软技术许可有限责任公司 具有高带宽存储器接口的计算硬件
CN106991077A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种矩阵计算装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880456B2 (en) * 2011-08-25 2014-11-04 Complete Genomics, Inc. Analyzing genome sequencing information to determine likelihood of co-segregating alleles on haplotypes
CN111104164A (zh) * 2016-04-26 2020-05-05 中科寒武纪科技股份有限公司 一种用于执行矩阵乘运算的装置和方法
CN107315575B (zh) * 2016-04-26 2020-07-31 中科寒武纪科技股份有限公司 一种用于执行向量合并运算的装置和方法
WO2018121472A1 (zh) * 2016-12-28 2018-07-05 上海寒武纪信息科技有限公司 一种运算方法
CN107992329B (zh) * 2017-07-20 2021-05-11 上海寒武纪信息科技有限公司 一种计算方法及相关产品
CN107680036A (zh) * 2017-08-15 2018-02-09 湖北工业大学 基于卷积深度堆叠网络的联合稀疏向量并行重建方法
CN107861757B (zh) * 2017-11-30 2020-08-25 上海寒武纪信息科技有限公司 运算装置以及相关产品
CN108121688B (zh) * 2017-12-15 2020-06-23 中科寒武纪科技股份有限公司 一种计算方法及相关产品

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1056356A (zh) * 1990-03-16 1991-11-20 德克萨斯仪器股份有限公司 分布处理存储器
CN105518625A (zh) * 2013-08-30 2016-04-20 微软技术许可有限责任公司 具有高带宽存储器接口的计算硬件
CN106991077A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种矩阵计算装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
薛云峰等: "《深埋长隧洞探测技术研究[M]》", 31 December 2010 *
赵达壮等: "《工程力学中的数值方法[M]》", 31 December 1993 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111381871A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109886394A (zh) * 2019-03-05 2019-06-14 北京时代拓灵科技有限公司 嵌入式设备中三值神经网络权值处理方法及装置
CN109886394B (zh) * 2019-03-05 2021-06-18 北京时代拓灵科技有限公司 嵌入式设备中三值神经网络权值处理方法及装置
CN110598175A (zh) * 2019-09-17 2019-12-20 西安邮电大学 一种基于图计算加速器的稀疏矩阵列向量比较装置
CN110598175B (zh) * 2019-09-17 2021-01-01 西安邮电大学 一种基于图计算加速器的稀疏矩阵列向量比较装置
CN113836481A (zh) * 2020-06-24 2021-12-24 北京希姆计算科技有限公司 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN112799635A (zh) * 2021-02-08 2021-05-14 算筹信息科技有限公司 一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法
CN116795432A (zh) * 2023-08-18 2023-09-22 腾讯科技(深圳)有限公司 运算指令的执行方法、装置、电路、处理器及设备
CN116795432B (zh) * 2023-08-18 2023-12-05 腾讯科技(深圳)有限公司 运算指令的执行方法、装置、电路、处理器及设备

Also Published As

Publication number Publication date
CN109032670A (zh) 2018-12-18
CN109032670B (zh) 2021-10-19

Similar Documents

Publication Publication Date Title
CN109117186A (zh) 神经网络处理装置及其执行向量外积指令的方法
CN108960418A (zh) 神经网络处理装置及其执行矩阵向量乘指令的方法
EP3557484B1 (en) Neural network convolution operation device and method
CN108898554A (zh) 提高图像分辨率的方法及相关产品
CN109284823A (zh) 一种运算装置及相关产品
CN108205700A (zh) 神经网络运算装置和方法
CN109740739A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN109740754A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN110163360A (zh) 一种计算装置及方法
CN110163350A (zh) 一种计算装置及方法
CN110909872B (zh) 集成电路芯片装置及相关产品
CN108960420A (zh) 处理方法及加速装置
WO2023065701A1 (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN110515588A (zh) 乘法器、数据处理方法、芯片及电子设备
CN110196734A (zh) 一种计算装置及相关产品
CN110515585A (zh) 乘法器、数据处理方法、芯片及电子设备
CN117933314A (zh) 处理装置、处理方法、芯片及电子装置
CN117933327A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20181207

RJ01 Rejection of invention patent application after publication