CN109062612B - 神经网络处理装置及其执行平面旋转指令的方法 - Google Patents

神经网络处理装置及其执行平面旋转指令的方法 Download PDF

Info

Publication number
CN109062612B
CN109062612B CN201810914648.8A CN201810914648A CN109062612B CN 109062612 B CN109062612 B CN 109062612B CN 201810914648 A CN201810914648 A CN 201810914648A CN 109062612 B CN109062612 B CN 109062612B
Authority
CN
China
Prior art keywords
sparse vector
index
vector
address
plane rotation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810914648.8A
Other languages
English (en)
Other versions
CN109062612A (zh
Inventor
王秉睿
周聖元
张尧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201810914648.8A priority Critical patent/CN109062612B/zh
Publication of CN109062612A publication Critical patent/CN109062612A/zh
Application granted granted Critical
Publication of CN109062612B publication Critical patent/CN109062612B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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
    • 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
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30181Instruction operation extension or modification
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • User Interface Of Digital Computer (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

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

Description

神经网络处理装置及其执行平面旋转指令的方法
技术领域
本发明涉及通信技术领域,具体涉及一种神经网络处理装置及其执行平面旋转指令的方法。
背景技术
现代的通用和专用处理器中,越来越多地引入计算指令(例如向量指令)进行运算。向量指令是使处理器进行向量或者矩阵运算的指令,例如向量的加减、向量的内积、矩阵乘法、矩阵卷积等。向量指令中至少有一个输入为向量或者矩阵或运算结果是向量或矩阵。向量指令可以通过调用处理器内部的向量处理部件来进行并行计算,提高运算速度。现有的向量指令中,其操作数或结果中的向量或矩阵一般是固定规模的,例如ARM处理器中的向量扩展结构Neon中的向量指令一次可以处理长为4的32位浮点向量或者长为8的16位定点向量。所以现有的向量运算指令无法实现可变规模的向量或矩阵的运算。
另一方面,神经网络作为一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。为了减小计算量和权值数量,从而降低访存量,因此提出了稀疏神经网络。稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度,如图1a所示。
而现有的向量运算指令无法支持稀疏神经网络中的稀疏向量或稀疏矩阵的运算,更无法实现可变规模的稀疏向量或稀疏矩阵的运算,并且现在的向量运算指令只能实现一种运算,例如一条向量指令只能实现乘法、加法中的一种运算,一条向量指令无法实现二种以上的运算,所以现有的向量运算的运算开销大,能耗高。
发明内容
本发明实施例提供了一种神经网络处理装置及其执行平面旋转指令的方法,可实现单条平面旋转指令实现多种运算的目的,有利于减少运算开销,降低模块的功耗。
第一方面,本发明实施例提供一种处理装置,该处理装置用于根据平面旋转指令执行运算,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;
所述寄存器单元,用于存储所述平面旋转指令;所述平面旋转指令包括操作码和操作域,所述操作码用于指示进行平面旋转运算;所述操作域包括参与平面旋转运算的数据的首地址和所述参与平面旋转运算的数据中部分数据或者全部数据的索引的地址;
所述存储器,用于存储所述参与平面旋转运算的数据;
所述控制单元,用于从所述寄存器单元中获取所述平面旋转指令,解析所述平面旋转指令,以得到所述操作码和所述操作域;根据所述操作域从所述存储器中获取所述参与平面旋转运算的数据和所述参与平面旋转运算的数据中部分数据或者全部数据的索引;并将所述参与平面旋转运算的数据传输至所述运算单元;
所述运算单元,用于对所述参与平面旋转运算的数据进行平面旋转运算。
在一种可能的实施例中,当所述平面旋转指令为第一平面旋转指令时,所述操作码用于指示进行第一平面旋转运算,所述操作域包括:稀疏向量X1的索引表示方式、稀疏向量X1的中元素的首地址、稀疏向量X1的索引的首地址、向量Y1中元素的首地址、第一标量的首地址和第二标量的首地址;所述控制单元具体用于:
根据所述稀疏向量X1中元素的首地址从所述存储器中获取所述稀疏向量X1;根据所述稀疏向量X1的索引的首地址从所述存储器中获取稀疏向量X1的索引;根据所述向量Y1中元素的首地址从所述存储器中获取所述向量Y1;根据所述稀疏向量X1的索引表示方式和所述向量X1的索引对所述向量Y1中的元素进行筛选,以得到稀疏向量Y1;根据所述第一标量的首地址和第二标量的首地址从所述存储器中获取第一标量和第二标量;并将所述稀疏向量X1、稀疏向量Y1、第一标量和第二标量传输至所述运算单元;
所述运算单元具体用于:
对所述稀疏向量X1、稀疏向量Y1、第一标量和第二标量进行第一平面旋转运算。
进一步地,所述操作域还包括:所述稀疏向量X1中元素的个数、所述向量Y1中元素的个数和所述向量Y1中元素之间的地址间隔;
所述控制单元根据所述稀疏向量X1中元素的首地址从所述存储器中获取所述稀疏向量X1,包括:
根据所述稀疏向量X1中元素的首地址和所述稀疏向量X1中元素的个数从所述存储器中获取所述稀疏向量X1;
所述控制单元根据所述向量Y1中元素的首地址从所述存储器中获取所述向量Y1,包括:
根据所述向量Y1中元素的首地址、所述向量Y1中元素的个数和所述向量Y1中元素之间的地址间隔从所述存储器中获取所述向量Y1。
在一种可能的实施例中,当所述平面旋转指令为第二平面旋转指令时,所述操作码用于指示进行第二平面旋转运算,所述操作域包括:稀疏向量sX1的索引表示方式、稀疏向量sX1的中元素的首地址、稀疏向量sX1的索引的首地址、稀疏向量sY1中元素的首地址、稀疏向量sY1的索引的首地址、第一标量的首地址和第二标量的首地址;
所述控制单元具体用于:
根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sY1中元素的首地址分别从所述存储器中获取所述稀疏向量sX1和所述稀疏向量sY1;
根据所述稀疏向量sX1的索引的首地址和所述稀疏向量sY1的索引的首地址分别从所述存储器中获取所述稀疏向量sX1的索引和所述稀疏向量sY1的索引;
根据所述稀疏向量sX1的索引表示方式、所述稀疏向量sX1的索引和所述稀疏向量sY1的索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到筛选后的稀疏向量sX1和筛选后的稀疏向量sY1;
根据所述第一标量的首地址和第二标量的首地址从所述存储器中获取第一标量和第二标量;并将所述筛选后的稀疏向量sX1、筛选后的稀疏向量sY1、第一标量和第二标量传输至所述运算单元;
所述运算单元具体用于:
对所述筛选后的稀疏向量sX1、筛选后的稀疏向量sY1、第一标量和第二标量进行第二平面旋转运算。
进一步地,所述操作域还包括所述稀疏向量sY1的索引表示方式;
所述控制单元还用于:
在获取所述稀疏向量sX1及其索引和所述稀疏向量sY1及其索引之后,根据所述稀疏向量sX1的索引、所述稀疏向量sX1的索引表示方式、所述稀疏向量sY1的索引和所述稀疏向量sY1的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到筛选后的稀疏向量sX1和筛选后的稀疏向量sY1;并将所述筛选后的稀疏向量sX1和筛选后的稀疏向量sY1传输至所述运算单元。
进一步地,所述操作域还包括:所述稀疏向量sX1中元素的个数和所述稀疏向量sY1中元素的个数;
所述控制单元根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sY1中元素的首地址分别从所述存储器中获取所述稀疏向量sX1和所述稀疏向量sY1,包括:
根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sX1中元素的个数从所述存储器中获取所述稀疏向量sX1;
根据所述稀疏向量sY1中元素的首地址和所述稀疏向量sY1中元素的个数从所述存储器中获取所述稀疏向量sY1。
在一种可能的实施例中,输入数据的索引表示方式为直接索引表示方式或步长索引表示方式;所述输入数据包括:所述稀疏向量X1,所述稀疏向量sX1或所述稀疏向量sY1;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由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总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
第三方面,本发明实施例提供了一种组合处理装置,该组合处理装置包括如第二方面所述的运算装置,通用互联接口和其他处理装置;
所述运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
第四方面,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的处理装置、上述第二方面所述的运算装置或者上述第三方面所述的组合处理装置。
第五方面,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;
第六方面,本发明实施例提供了一种电子装置,该电子装置包括上述第四方面所述的神经网络芯片或者第五方面所述的神经网络芯片封装结构。
第七方面,本发明实施例提供了一种执行平面旋转指令的方法,其特征在于,包括:
获取平面旋转指令,并解析所述平面旋转指令,以得到所述平面旋转指令的操作码和操作域;
根据所述操作域获取参与平面旋转运算的数据
对所述参与平面旋转运算的数据进行平面旋转运算。
在一种可能的实施例中,当所述平面旋转指令为第一平面旋转指令时,所述操作码用于指示进行第一平面旋转运算,所述操作域包括:稀疏向量X1的索引表示方式、稀疏向量X1的中元素的首地址、稀疏向量X1的索引的首地址、向量Y1中元素的首地址、第一标量的首地址和第二标量的首地址;所述根据所述操作域获取参与平面旋转运算的数据包括:
根据所述稀疏向量X1中元素的首地址获取所述稀疏向量X1;根据所述稀疏向量X1的索引的首地址获取稀疏向量X1的索引;根据所述向量Y1中元素的首地址获取所述向量Y1;根据所述稀疏向量X1的索引表示方式和所述向量X1的索引对所述向量Y1中的元素进行筛选,以得到稀疏向量Y1;根据所述第一标量的首地址和第二标量的首地址获取第一标量和第二标量;
所述对所述参与平面旋转运算的数据进行平面旋转运算,包括:
对所述稀疏向量X1、稀疏向量Y1、第一标量和第二标量进行第一平面旋转运算。
进一步地,所述稀疏向量X1中元素的个数、所述向量Y1中元素的个数和所述向量Y1中元素之间的地址间隔;
所述根据所述稀疏向量X1中元素的首地址获取所述稀疏向量X1,包括:
根据所述稀疏向量X1中元素的首地址和所述稀疏向量X1中元素的个数获取所述稀疏向量X1;
所述根据所述向量Y1中元素的首地址获取所述向量Y1,包括:
根据所述向量Y1中元素的首地址、所述向量Y1中元素的个数和所述向量Y1中元素之间的地址间隔获取所述向量Y1。
在一种可能的实施例中,当所述平面旋转指令为第二平面旋转指令时,所述操作码用于指示进行第二平面旋转运算,所述操作域包括:稀疏向量sX1的索引表示方式、稀疏向量sX1的中元素的首地址、稀疏向量sX1的索引的首地址、稀疏向量sY1中元素的首地址、稀疏向量sY1的索引的首地址、第一标量的首地址和第二标量的首地址;
所述根据所述操作域获取参与平面旋转运算的数据,包括:
根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sY1中元素的首地址分别获取所述稀疏向量sX1和所述稀疏向量sY1;
根据所述稀疏向量sX1的索引的首地址和所述稀疏向量sY1的索引的首地址分别获取所述稀疏向量sX1的索引和所述稀疏向量sY1的索引;
根据所述稀疏向量sX1的索引表示方式、所述稀疏向量sX1的索引和所述稀疏向量sY1的索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到筛选后的稀疏向量sX1和筛选后的稀疏向量sY1;
所述对所述参与平面旋转运算的数据进行平面旋转运算,包括:
对所述筛选后的稀疏向量sX1、筛选后的稀疏向量sY1、第一标量和第二标量进行第二平面旋转运算。
进一步地,所述操作域还包括所述稀疏向量sY1的索引表示方式;所述根据所述操作域获取参与平面旋转运算的数据,包括:
在获取所述稀疏向量sX1及其索引和所述稀疏向量sY1及其索引之后,根据所述稀疏向量sX1的索引、所述稀疏向量sX1的索引表示方式、所述稀疏向量sY1的索引和所述稀疏向量sY1的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到筛选后的稀疏向量sX1和筛选后的稀疏向量sY1。
进一步地,所述操作域还包括:所述稀疏向量sX1中元素的个数和所述稀疏向量sY1中元素的个数;
所述根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sY1中元素的首地址分别获取所述稀疏向量sX1和所述稀疏向量sY1,包括:
根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sX1中元素的个数获取所述稀疏向量sX1;
根据所述稀疏向量sY1中元素的首地址和所述稀疏向量sY1中元素的个数获取所述稀疏向量sY1。
进一步地,输入数据的索引表示方式为直接索引表示方式或步长索引表示方式;所述输入数据包括:所述稀疏向量X1,所述稀疏向量sX1或所述稀疏向量sY1;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由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,用于根据对上述参与平面旋转运算的数据进行平面旋转运算。
在一种可能的实施例中,当上述平面旋转指令为第一平面旋转指令时,上述操作码用于指示进行第一平面旋转运算,上述操作域包括:稀疏向量X1的索引表示方式、稀疏向量X1的中元素的首地址、稀疏向量X1的索引的首地址、向量Y1中元素的首地址、第一标量的首地址和第二标量的首地址,上述控制单元103具体用于:
根据上述稀疏向量X1中元素的首地址从上述存储器101中获取上述稀疏向量X1;根据上述稀疏向量X1的索引的首地址从上述存储器101中获取稀疏向量X1的索引;根据上述向量Y1中元素的首地址从上述存储器101中获取所述向量Y1;根据上述索引表示方式和上述稀疏向量X1的索引对上述向量Y1中的元素进行筛选,以得到稀疏向量Y1;根据上述第一标量的首地址和第二标量的首地址从上述存储器101中获取第一标量和第二标量;并将上述稀疏向量X1、稀疏向量Y1、第一标量和第二标量传输至上述运算单元104;
上述运算单元104具体用于:
对上述稀疏向量X1、稀疏向量Y1、第一标量和第二标量进行第一平面旋转运算。
具体地,上述第一平面旋转指令可表示为:ROT1(I_TYPE1,ValX1,InX1,y1,C1,C2)。其中,上述平面旋转指令的操作码为ROT1,用于指示进行第一平面旋转运算,该平面旋转指令的操作码分别为:I_TYPE1,ValX1,InX1,y1,C1和C2,其对应的含义描述见下表1。
操作码 功能描述
I_TYPE1 稀疏向量X1的索引表示方式
ValX1 稀疏向量X1中元素的首地址
InX1 稀疏向量X1的索引的首地址
y1 向量Y1中元素的首地址
C1 第一标量c1的首地址
C2 第二标量c2的首地址
表1
上述控制单元103获取上述第一平面旋转指令后,解析该第一平面旋转指令,以得到该第一平面旋转指令的操作码和操作域。上述控制单元103根据上述稀疏向量X1中元素的首地址从上述存储器101中获取上述稀疏向量X1;并根据上述稀疏向量X1的索引的首地址从上述存储器101中获取上述稀疏向量X1的索引;根据上述向量Y1中元素的首地址从上述存储器101中获取上述向量Y1;上述控制单元103根据上述稀疏向量X1的索引表示方式和稀疏向量X1的索引,对上述向量Y1中的元素进行筛选,以得到稀疏向量Y1。
需要指出的是,稀疏向量为由从该稀疏向量对应的稠密向量中筛选出满足预设条件的元素组成的向量;或者说是将上述稠密向量中不满足预设条件的元素剔除,不参与后续运算。
由于两个向量之间的运算是两个向量的元素中位置相同的元素之间的运算,因此需要通过上述稀疏向量X1的索引表示方式和稀疏向量X1的索引对上述向量Y1中的元素进行筛选,从上述向量Y1中得到位置与上述稀疏向量X1中的元素在其对应的稠密向量中的位置相同的元素,以得到稀疏向量Y1。
其中,上述预设条件为上述稠密向量中元素的绝对值大于或者小于某一预设阈值的;或者上述满足预设条件的元素为上述稠密向量中某一区域的元素,比如稠密向量中位置为奇数的元素、或者位置为偶数的元素、或者稠密向量中位置连续多个元素。
在此需要说明的是,上述稀疏向量X1和向量Y1是按照默认长度在上述存储器101进行存储的,因此上述控制单元103可以只根据上述稀疏向量X1中元素的首地址和向量Y1中元素的首地址从上述存储器101中分别获取上述稀疏向量X1和向量Y1。
上述控制单元103根据上述稀疏向量X1的索引表示方式和稀疏向量X1的索引对上述向量Y1中的元素进行筛选,以得到稀疏向量Y1,包括:
当上述稀疏向量X1的索引表示方式为直接索引表示方式时,上述稀疏向量X1的索引为由0和1组成的字符串,0表示稀疏向量X1对应的稠密向量中元素不满足上述预设条件,1表示上述稀疏向量X1对应的稠密向量中元素满足上述预设条件。比如索引为“101101”,表示上述稀疏向量X1对应的稠密向量中第1个元素、第3个元素、第4个元素和第6个元素的中每个元素满足上述预设条件,第2个元素和第5个元素均不满足上述预设条件,不满足预设条件的元素不参与后续运算。上述控制单元103根据上述索引“101101”从上述向量Y1中筛选出第1个元素、第3个元素、第4个元素和第6个元素,以得到稀疏向量Y1。比如向量Y1=(2,3,5,2.3,4,1.4),则根据上述索引“101101”筛选后得到的稀疏向量Y1=(2,5,2.3,1.4)。
当上述稀疏向量X1的索引表示方式为步长索引表示方式时,上述稀疏向量X1的索引为该稀疏向量X1对应的稠密向量中满足上述预设条件的元素与上一个满足上述预设条件的元素之间的距离值组成的字符串。比如上述稀疏向量X1的索引为“0212”,表示上述稀疏向量X1对应的稠密向量中第1个元素、第3个元素、第4个元素和第6个元素的中每个元素满足上述预设条件,其他元素不满足上述预设条件。上述控制单元103根据上述索引“0212”从上述向量Y1中筛选出第1个元素、第3个元素、第4个元素和第6个元素,以得到稀疏向量Y1。比如向量Y1=(2,3,7,2.3,4,1.4),则根据上述索引“0212”筛选后得到的稀疏向量Y1=(2,7,2.3,1.4)。
上述控制单元103根据上述第一标量的首地址和第二标量的首地址从上述存储器101中获取上述第一标量c1和第二标量c2。然后将上述稀疏向量X1、稀疏向量Y1、第一标量c1和第二标量c2传输至上述运算单元104。
上述运算单元104按照以下公式(1)对上述稀疏向量X1、稀疏向量Y1、第一标量c1和第二标量c2进行平面旋转运算。
Figure BDA0001761582850000091
其中,上述xi和yi分别为上述稀疏向量X1中的第i个元素和稀疏向量Y1中的第i个元素。上述运算单元104将按照公式xi=c1*xi+s1*yi得到的结果存储到上述稀疏向量X1中第i个元素的首地址对应的存储空间中;将按照公式yi=c1*yi-s1*xi得到的结果存储到上述稀疏向量Y1中第i个元素的首地址对应的存储空间中。
进一步地,所述操作域还包括:所述稀疏向量X1中元素的个数、所述向量Y1中元素的个数和所述向量Y1中元素之间的地址间隔;
所述控制单元103根据所述稀疏向量X1中元素的首地址从所述存储器101中获取所述稀疏向量X1,包括:
根据所述稀疏向量X1中元素的首地址和所述稀疏向量X1中元素的个数从所述存储器101中获取所述稀疏向量X1;
所述控制单元103根据所述向量Y1中元素的首地址从所述存储器101中获取所述向量Y1,包括:
根据所述向量Y1中元素的首地址、所述向量Y1中元素的个数和所述向量Y1中元素之间的地址间隔从所述存储器101中获取所述向量Y1。
具体地,上述第一平面旋转指令还可表示为:ROT1(D_TYPE1,I_TYPEX1,Nnz1,ValX1,InX1,M1,y1,INCY1,C1,C2)。其中,上述平面旋转指令的操作码为ROT1,用于指示进行第一平面旋转运算,该平面旋转指令的操作码分别为:D_TYPE1,I_TYPEX1,Nnz1,ValX1,InX1,M1,y1,INCY1,C1和C2,其对应的含义描述见下表2。
操作码 功能描述
D_TYPE1 进行操作的数据类型,支持实数和虚数
I_TYPEX1 稀疏向量X1的索引表示方式
Nnz1 稀疏向量X1中元素的个数
ValX1 稀疏向量X1中元素的首地址
InX1 稀疏向量X1的索引的首地址
M1 向量Y1的长度(即向量Y1中元素的个数)
y1 向量Y1中元素的首地址
INCY1 向量Y1中元素之间的地址间隔
C1 第一标量c1的首地址
C2 第二标量c2的首地址
表2
需要指出的是,上述表2中的操作域D_TYPE1表征参与上述平面旋转运算的数据的类型。
上述控制单元103根据上述稀疏向量X1中元素的首地址和稀疏向量X1中元素的个数从上述存储器101中获取上述稀疏向量X1;根据上述向量Y1中元素的首地址、向量Y1的长度和向量Y1中元素之间的地址间隔从上述存储器101中获取上述向量Y1。在获取上述稀疏向量X1和向量Y1后,上述控制单元103对上述向量X1和向量Y1按照上述表1的相关描述进行后续处理和运算,在此不再叙述。
在一种可能的实施例中,当所述平面旋转指令为第二平面旋转指令时,所述操作码用于指示进行第二平面旋转运算,所述操作域包括:稀疏向量sX1的索引表示方式、稀疏向量sX1的中元素的首地址、稀疏向量sX1的索引的首地址、稀疏向量sY1中元素的首地址、稀疏向量sY1的索引的首地址、第一标量的首地址和第二标量的首地址;
所述控制单元103具体用于:
根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sY1中元素的首地址分别从所述存储器101中获取所述稀疏向量sX1和所述稀疏向量sY1;
根据所述稀疏向量sX1的索引的首地址和所述稀疏向量sY1的索引的首地址分别从所述存储器101中获取所述稀疏向量sX1的索引和所述稀疏向量sY1的索引;
根据所述稀疏向量sX1的索引表示方式、所述稀疏向量sX1的索引和所述稀疏向量sY1的索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到筛选后的稀疏向量sX1和筛选后的稀疏向量sY1;
根据所述第一标量的首地址和第二标量的首地址从所述存储器101中获取第一标量和第二标量;并将所述筛选后的稀疏向量sX1、筛选后的稀疏向量sY1、第一标量和第二标量传输至所述运算单元104;所述运算单元104具体用于:
对所述筛选后的稀疏向量sX1、筛选后的稀疏向量sY1、第一标量和第二标量进行第二平面旋转运算。
具体地,上述第二平面旋转指令还可表示为:ROT2(I_TYPEsX1,ValsX1,InsX1,ValsY1,InsY1,C1,C2)。其中,上述平面旋转指令的操作码为ROT2,用于指示进行平面旋转运算,该平面旋转指令的操作码分别为:I_TYPEsX1,ValsX1,InsX1,ValsY1,InsY1,C1和C2,其对应的含义描述见下表3。
操作码 功能描述
I_TYPEsX1 稀疏向量sX1的索引表示方式
ValsX1 稀疏向量sX1中元素的首地址
InsX1 稀疏向量sX1的索引的首地址
ValsY1 稀疏向量sY1中元素的首地址
InsY1 稀疏向量sY1的索引的首地址
C1 第一标量c1的首地址
C2 第二标量c1的首地址
表3
上述控制单元103根据上述稀疏向量sX1中元素的首地址和稀疏向量sY1中元素的首地址分别从上述存储器中获取上述稀疏向量sX1和稀疏向量sY1;根据上述稀疏向量sX1的索引的首地址和稀疏向量sY1的索引的首地址从上述存储器101中获取稀疏向量sX1的索引和稀疏向量sY1的索引。
上述控制单元103根据上述稀疏向量sX1的索引表示方式、稀疏向量sX1的索引和稀疏向量sY1的索引得到上述第一中间索引,包括:
当上述稀疏向量sX1的索引表示方式为直接索引表示方式时,上述稀疏向量sX1的索引和稀疏向量sY1的索引均为由0和1组成的字符串,0和1的具体含义可参见上述对表1的相关描述,在此不再叙述。上述控制单元103对上述稀疏向量sX1的索引和稀疏向量sY1的索引进行与操作,以得到上述第一中间索引。然后上述控制单元103根据该第一中间索引对上述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到上述筛选后的sX1和筛选后的稀疏向量sY1。
比如上述稀疏向量sX1=(2,5,1,3),该稀疏向量sX1的索引为“101101”;上述稀疏向量sY1=(1.2,8,5),该稀疏向量sY1的索引为“110100”,则上述第一中间索引为“100100”,上述控制单元103根据上述第一中间索引“100100”对上述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,得到的筛选后的稀疏向量sX1=(2,1),得到的筛选后的稀疏向量sY1=(1.2,5)。
当上述稀疏向量sX1的索引表示方式为步长索引表示方式时,上述稀疏向量sX1的索引和稀疏向量sY1的索引均为由其对应的稠密向量中满足上述预设条件的元素与上一个满足上述预设条件的元素之间的距离值组成的字符串,且表示上述稀疏向量sX1的索引和稀疏向量sY1的索引的字符串是按照物理地址由低到高的顺序存储的。
上述控制单元103将上述稀疏向量sX1的索引中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的结果组成第一字符串;同理,对上述稀疏向量sX1的索引进行同样的处理,得到第二字符串;从上述第一字符串和第二字符串中,选取相同的元素,按照元素值从小到大的顺序排序,得到第三字符串;将上述第三字符串中每一个元素与其相邻且值小于该元素值的元素进行相减,得到的元素组成上述第一中间索引。
举例说明,上述稀疏向量sX1的索引为“01111”,上述稀疏向量sY1的索引为“022”,上述控制单元103将上述稀疏向量sX1的索引中的每个元素与其相邻的前一个元素相加,得到第一字符串“01234”;同理,上述控制单元103对上述稀疏向量sY1的索引进行相同的处理后得到的第二字符串为“024”。上述控制单元103从上述第一字符串“01234”和上述第二字符串“024”选组相同的元素,以得到第三字符串“024”。上述控制单元103将该第三字符串中的每个元素与其相邻的前一个元素进行相减,即0,(2-0),(4-2),以得到上述第一中间索引“022”。然后上述控制单元103根据该第一中间索引对上述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到上述筛选后的sX1和筛选后的稀疏向量sY1。
上述控制单元103根据上述方法获取上述筛选后的sX1和筛选后的稀疏向量sY1后,该控制单元103根据上述第一标量c1的首地址和第二标量c2的首地址从上述存储器101中分别获取上述第一标量c1和第二标量c2;并将上述筛选后的稀疏向量sX1、筛选后的的稀疏向量sY1、第一标量c1和第二标量c2传输至上述运算单元104。
上述运算单元104按照以下公式(1)对上述筛选后的稀疏向量sX1、筛选后的的稀疏向量sY1、第一标量c1和第二标量c2进行平面旋转运算。
Figure BDA0001761582850000111
其中,上述xi和yi分别为上述筛选后的稀疏向量sX1中的第i个元素和筛选后的稀疏向量sY1中的第i个元素。上述运算单元104将按照公式xi=c1*xi+s1*yi得到的结果存储到上述筛选后的稀疏向量sX1中第i个元素的首地址对应的存储空间中;将按照公式yi=c1*yi-s1*xi得到的结果存储到上述筛选后的稀疏向量sY1中第i个元素的首地址对应的存储空间中。
进一步地,所述操作域还包括所述稀疏向量sY1的索引表示方式;所述控制单元104还用于:
在获取所述稀疏向量sX1及其索引和所述稀疏向量sY1及其索引之后,根据所述稀疏向量sX1的索引、所述稀疏向量sX1的索引表示方式、所述稀疏向量sY1的索引和所述稀疏向量sY1的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到筛选后的稀疏向量sX1和筛选后的稀疏向量sY1;并将所述筛选后的稀疏向量sX1和筛选后的稀疏向量sY1传输至所述运算单元。
具体地,上述第二平面旋转指令还可表示为:ROT2(I_TYPEsX1,I_TYPEsY1,ValsX1,InsX1,ValsY1,InsY1,C1,C2)。其中,上述平面旋转指令的操作码为ROT2,用于指示进行平面旋转运算,该平面旋转指令的操作码分别为:I_TYPEsX1,I_TYPEsY1,ValsX1,InsX1,ValsY1,InsY1,C1和C2,其对应的含义描述见下表4。
操作码 功能描述
I_TYPEsX1 稀疏向量sX1的索引表示方式
I_TYPEsY1 稀疏向量sY1的索引表示方式
ValsX1 稀疏向量sX1中元素的首地址
InsX1 稀疏向量sX1的索引的首地址
ValsY1 稀疏向量sY1中元素的首地址
InsY1 稀疏向量sY1的索引的首地址
C1 第一标量c1的首地址
C2 第二标量c1的首地址
表4
上述控制单元103根据上述稀疏向量sX1的索引的首地址和稀疏向量sY1的索引的首地址分别从上述存储器101获取上述稀疏向量sX1的索引和稀疏向量sY1的索引后,根据该稀疏向量sX1的索引、上述稀疏向量sX1的索引表示方式、上述稀疏向量sY1的索引和上述稀疏向量sY1的索引表示方式,得到第二中间索引,包括:
当上述稀疏向量sX1的索引表示方式和稀疏向量sY1的索引表示方式均为直接索引表示方式时,上述控制单元103对上述稀疏向量sX1的索引和稀疏向量sY1的索引进行与操作,以得到上述第二中间索引;
当上述稀疏向量sX1的索引表示方式和稀疏向量sY1的索引表示方式均为步长索引表示方式时,上述控制单元103将上述稀疏向量sX1的索引中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的结果组成第一字符串;同理,对上述稀疏向量sY1的索引进行同样的处理,得到第二字符串;从上述第一字符串和第二字符串中,选取相同的元素,按照元素值从小到大的顺序排序,得到第三字符串;将上述第三字符串中每一个元素与其相邻且值小于该元素值的元素进行相减,得到的元素组成上述第二中间索引;
当上述稀疏向量sX1的索引表示方式和稀疏向量sY1的索引表示方式中,一个为直接索引表示方式,另一个为步长索引表示方式时,上述控制单元103将上述稀疏向量sX1的索引和上述稀疏向量sY1的索引中以步长索引表示方式表示的索引转换为以直接索引表示方式表示的索引,然后对该索引与上述稀疏向量sX1的索引和上述稀疏向量sY1的索引中以直接索引表示方式表示的索引进行与操作,以得到上述第二中间索引,或者;
上述控制单元103将上述稀疏向量sX1的索引和上述稀疏向量sY1的索引中以直接索引表示方式表示的索引转换为以步长索引表示方式表示的索引,然后根据上述方法对该索引和上述稀疏向量sX1的索引和上述稀疏向量sY1的索引中以步长索引表示方式表示的索引进行处理,以得到上述第二中间索引。
然后上述控制单元103根据该第二中间索引对上述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到上述筛选后的sX1和筛选后的稀疏向量sY1。
上述控制单元103根据上述方法获取上述筛选后的sX1和筛选后的稀疏向量sY1后,该控制单元103根据上述第一标量c1的首地址和第二标量c2的首地址从上述存储器101中分别获取上述第一标量c1和第二标量c2;并将上述筛选后的稀疏向量sX1、筛选后的的稀疏向量sY1、第一标量c1和第二标量c2传输至上述运算单元104。
上述运算单元104对上述筛选后的稀疏向量sX1、筛选后的的稀疏向量sY1、第一标量c1和第二标量c2进行平面旋转运算的具体过程可参见上述对表3的相关描述,在此不再叙述。
进一步地,所述操作域还包括:所述稀疏向量sX1中元素的个数和所述稀疏向量sY1中元素的个数;
所述控制单元根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sY1中元素的首地址分别从所述存储器中获取所述稀疏向量sX1和所述稀疏向量sY1,包括:
根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sX1中元素的个数从所述存储器中获取所述稀疏向量sX1;
根据所述稀疏向量sY1中元素的首地址和所述稀疏向量sY1中元素的个数从所述存储器中获取所述稀疏向量sY1。
可选地,上述第二平面旋转指令还可表示为:ROT2(D_TYPE1,I_TYPEsX1,Nnz1,ValsX1,InsX1,Mnz1,ValsY1,InsY1,C1,C2)。其中,上述平面旋转指令的操作码为ROT2,用于指示进行平面旋转运算,该平面旋转指令的操作码分别为:D_TYPE1,I_TYPEsX1,Nnz1,ValsX1,InsX1,Mnz1,ValsY1,InsY1,C1和C2,其对应的含义描述见下表5。
操作码 功能描述
D_TYPE1 进行操作的数据类型,支持实数和虚数
I_TYPEsX1 稀疏向量sX1的索引表示方式
Nnz1 稀疏向量sX1中元素的个数
ValsX1 稀疏向量sX1中元素的首地址
InsX1 稀疏向量sX1的索引的首地址
Mnz1 稀疏向量sY1中元素的个数
ValsY1 稀疏向量sY1中元素的首地址
InsY1 稀疏向量sY1的索引的首地址
C1 第一标量c1的首地址
C2 第二标量c1的首地址
表5
需要指出的是,上述表5中的操作域D_TYPE1表征参与上述平面旋转运算的数据的类型。
上述控制单元103根据上述稀疏向量sX1中元素的首地址和稀疏向量sX1中元素的个数从上述存储器101中获取上述稀疏向量sX1;根据上述稀疏向量sY1中元素的首地址和稀疏向量sY1中元素的个数从上述存储器101中获取上述稀疏向量sY1。在获取上述稀疏向量sX1和稀疏向量sY1后,上述控制单元103对上述稀疏向量sX1和稀疏向量sY1按照对上述表3的相关描述进行后续处理和运算,在此不再叙述。
可选地,上述第二平面旋转指令还可表示为:ROT2(D_TYPE1,I_TYPEsX1,I_TYPEsY1,Nnz1,ValsX1,InsX1,Mnz1,ValsY1,InsY1,C1,C2)。其中,上述平面旋转指令的操作码为ROT2,用于指示进行平面旋转运算,该平面旋转指令的操作码分别为:D_TYPE1,I_TYPEsX1,I_TYPEsY1,Nnz1,ValsX1,InsX1,Mnz1,ValsY1,InsY1,C1和C2,其对应的含义描述见下表6。
操作码 功能描述
D_TYPE1 进行操作的数据类型,支持实数和虚数
I_TYPEsX1 稀疏向量sX1的索引表示方式
I_TYPEsY1 稀疏向量sY1的索引表示方式
Nnz1 稀疏向量sX1中元素的个数
ValsX1 稀疏向量sX1中元素的首地址
InsX1 稀疏向量sX1的索引的首地址
Mnz1 稀疏向量sY1中元素的个数
ValsY1 稀疏向量sY1中元素的首地址
InsY1 稀疏向量sY1的索引的首地址
C1 第一标量c1的首地址
C2 第二标量c1的首地址
表6
需要指出的是,上述表6中的操作域D_TYPE1表征参与上述平面旋转运算的数据的类型。
上述控制单元103根据上述稀疏向量sX1中元素的首地址和稀疏向量sX1中元素的个数从上述存储器101中获取上述稀疏向量sX1;根据上述稀疏向量sY1中元素的首地址和稀疏向量sY1中元素的个数从上述存储器101中获取上述稀疏向量sY1。在获取上述稀疏向量sX1和稀疏向量sY1后,上述控制单元103对上述稀疏向量sX1和稀疏向量sY1按照对上述表4的相关描述进行后续处理和运算,在此不再叙述。
上表1-表6所示平面旋转指令的格式分别表示待进行运算的向量(向量X1和向量Y1)中一个向量为稀疏向量的和两个向量均为稀疏向量的情况。其中,两个向量的长度可变,可以减少指令数量,简化指令的使用。
上述平面旋转指令并且支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用,还支持多种索引表示方式,兼容性更高。还支持复数的运算,扩充了指令功能。更有助于扩大其指令的适用范围。
在一种可能的实施中,当输入数据的索引表示方式为直接索引表示方式时,该输入数据的索引为由0和1组成的字符串,0表示上述输入数据中元素不满足预设条件,1表示上述输入数据中的元素满足上述预设条件,或者;
当上述输入数据的索引表示方式为步长索引表示方式时,该输入数据的索引为该输入数据中满足上述预设条件的元素与上一个满足上述预设条件的元素之间的距离值组成的字符串;
其中,上述预设条件为:上述输入数据中的元素的绝对值大于(>)或者小于或者等于(≤)预设阈值,上述输入数据可为上述稀疏向量X1、稀疏向量sX1或稀疏向量sY1。
举例说明,假设上述输入数据为向量(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表示方式时,该输入数据的索引由至少一个元组组成,所述元组包括输入数据矩阵中绝对值大于预设阈值的元素在所述输入数据矩阵中的行号、列号和该绝对值大于上述预设阈值的元素的值。
举例说明,假设上述输入数据为
Figure BDA0001761582850000151
上述预设阈值为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)。
举例说明,假设上述输入数据为
Figure BDA0001761582850000161
上述预设阈值为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。
Figure BDA0001761582850000171
Figure BDA0001761582850000181
表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、处理装置对所述参与平面旋转运算的数据进行平面旋转运算。
在一种可能的实施例中,当所述平面旋转指令为第一平面旋转指令时,所述操作码用于指示进行第一平面旋转运算,所述操作域包括:稀疏向量X1的索引表示方式、稀疏向量X1的中元素的首地址、稀疏向量X1的索引的首地址、向量Y1中元素的首地址、第一标量的首地址和第二标量的首地址;所述根据所述操作域获取参与平面旋转运算的数据包括:
根据所述稀疏向量X1中元素的首地址获取所述稀疏向量X1;根据所述稀疏向量X1的索引的首地址获取稀疏向量X1的索引;根据所述向量Y1中元素的首地址获取所述向量Y1;根据所述稀疏向量X1的索引表示方式和所述向量X1的索引对所述向量Y1中的元素进行筛选,以得到稀疏向量Y1;根据所述第一标量的首地址和第二标量的首地址获取第一标量和第二标量;
所述对所述参与平面旋转运算的数据进行平面旋转运算,包括:
对所述稀疏向量X1、稀疏向量Y1、第一标量和第二标量进行第一平面旋转运算。
进一步地,所述稀疏向量X1中元素的个数、所述向量Y1中元素的个数和所述向量Y1中元素之间的地址间隔;
所述根据所述稀疏向量X1中元素的首地址获取所述稀疏向量X1,包括:
根据所述稀疏向量X1中元素的首地址和所述稀疏向量X1中元素的个数获取所述稀疏向量X1;
所述根据所述向量Y1中元素的首地址获取所述向量Y1,包括:
根据所述向量Y1中元素的首地址、所述向量Y1中元素的个数和所述向量Y1中元素之间的地址间隔获取所述向量Y1。
在一种可能的实施例中,当所述平面旋转指令为第二平面旋转指令时,所述操作码用于指示进行第二平面旋转运算,所述操作域包括:稀疏向量sX1的索引表示方式、稀疏向量sX1的中元素的首地址、稀疏向量sX1的索引的首地址、稀疏向量sY1中元素的首地址、稀疏向量sY1的索引的首地址、第一标量的首地址和第二标量的首地址;
所述根据所述操作域获取参与平面旋转运算的数据,包括:
根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sY1中元素的首地址分别获取所述稀疏向量sX1和所述稀疏向量sY1;
根据所述稀疏向量sX1的索引的首地址和所述稀疏向量sY1的索引的首地址分别获取所述稀疏向量sX1的索引和所述稀疏向量sY1的索引;
根据所述稀疏向量sX1的索引表示方式、所述稀疏向量sX1的索引和所述稀疏向量sY1的索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到筛选后的稀疏向量sX1和筛选后的稀疏向量sY1;
所述对所述参与平面旋转运算的数据进行平面旋转运算,包括:
对所述筛选后的稀疏向量sX1、筛选后的稀疏向量sY1、第一标量和第二标量进行第二平面旋转运算。
进一步地,所述操作域还包括所述稀疏向量sY1的索引表示方式;所述根据所述操作域获取参与平面旋转运算的数据,包括:
在获取所述稀疏向量sX1及其索引和所述稀疏向量sY1及其索引之后,根据所述稀疏向量sX1的索引、所述稀疏向量sX1的索引表示方式、所述稀疏向量sY1的索引和所述稀疏向量sY1的索引表示方式,得到第二中间索引;
根据所述第二中间索引对所述稀疏向量sX1和稀疏向量sY1中的元素进行筛选,以得到筛选后的稀疏向量sX1和筛选后的稀疏向量sY1。
进一步地,所述操作域还包括:所述稀疏向量sX1中元素的个数和所述稀疏向量sY1中元素的个数;
所述根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sY1中元素的首地址分别获取所述稀疏向量sX1和所述稀疏向量sY1,包括:
根据所述稀疏向量sX1中元素的首地址和所述稀疏向量sX1中元素的个数获取所述稀疏向量sX1;
根据所述稀疏向量sY1中元素的首地址和所述稀疏向量sY1中元素的个数获取所述稀疏向量sY1。
进一步地,当所述索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
上述输入数据可为稀疏向量X1,稀疏向量sX1或稀释向量sY1。
需要说明的是,上述方法实施例的具体描述可参见图1b所示实施例的相关描述,在此不再叙述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (19)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810914648.8A CN109062612B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行平面旋转指令的方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810110875.5A CN108388446A (zh) 2018-02-05 2018-02-05 运算模块以及方法
CN201810914648.8A CN109062612B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行平面旋转指令的方法
CN201810899812.2A CN109062609A (zh) 2018-02-05 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 (2)

Publication Number Publication Date
CN109062612A CN109062612A (zh) 2018-12-21
CN109062612B true CN109062612B (zh) 2023-06-27

Family

ID=63075199

Family Applications (14)

Application Number Title Priority Date Filing Date
CN201810110875.5A Pending CN108388446A (zh) 2018-02-05 2018-02-05 运算模块以及方法
CN201810912879.5A Pending CN109101272A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行矩阵相乘指令的方法
CN201810899812.2A Pending CN109062609A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行运算指令的方法
CN201810914599.8A Active CN109086076B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量点积指令的方法
CN201810914648.8A Active CN109062612B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行平面旋转指令的方法
CN201810912904.XA Active CN109062610B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行吉文斯旋转指令的方法
CN201810912901.6A Pending CN109189473A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量交换指令的方法
CN201810914600.7A Active CN109165732B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量乘加指令的方法
CN201810912880.8A Active CN109032669B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最小值指令的方法
CN201810914596.4A Active CN109189474B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量加和指令的方法
CN201810914647.3A Active CN109062611B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量缩放指令的方法
CN201810914419.6A Active CN109117186B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量外积指令的方法
CN201810914598.3A Active CN109165041B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量范数指令的方法
CN201810914420.9A Active CN109101273B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最大值指令的方法

Family Applications Before (4)

Application Number Title Priority Date Filing Date
CN201810110875.5A Pending CN108388446A (zh) 2018-02-05 2018-02-05 运算模块以及方法
CN201810912879.5A Pending CN109101272A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行矩阵相乘指令的方法
CN201810899812.2A Pending CN109062609A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行运算指令的方法
CN201810914599.8A Active CN109086076B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量点积指令的方法

Family Applications After (9)

Application Number Title Priority Date Filing Date
CN201810912904.XA Active CN109062610B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行吉文斯旋转指令的方法
CN201810912901.6A Pending CN109189473A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量交换指令的方法
CN201810914600.7A Active CN109165732B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量乘加指令的方法
CN201810912880.8A Active CN109032669B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最小值指令的方法
CN201810914596.4A Active CN109189474B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量加和指令的方法
CN201810914647.3A Active CN109062611B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量缩放指令的方法
CN201810914419.6A Active CN109117186B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量外积指令的方法
CN201810914598.3A Active CN109165041B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量范数指令的方法
CN201810914420.9A Active CN109101273B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最大值指令的方法

Country Status (3)

Country Link
US (1) US11836497B2 (zh)
CN (14) CN108388446A (zh)
WO (1) WO2019148781A1 (zh)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110968285A (zh) * 2018-09-28 2020-04-07 上海寒武纪信息科技有限公司 信号处理装置及相关产品
WO2020062392A1 (zh) 2018-09-28 2020-04-02 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111353595A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111353125B (zh) * 2018-12-20 2022-04-22 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111353124A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111047027A (zh) * 2018-10-12 2020-04-21 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111026440B (zh) * 2018-10-09 2022-03-29 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110096310B (zh) * 2018-11-14 2021-09-03 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111079907B (zh) * 2018-10-19 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111258644B (zh) * 2018-11-30 2022-08-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111813376A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111400341B (zh) * 2019-01-02 2022-12-09 上海寒武纪信息科技有限公司 标量查找指令处理方法、装置及相关产品
CN111401536A (zh) * 2018-12-28 2020-07-10 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111381872A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
WO2020108471A1 (zh) * 2018-11-30 2020-06-04 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111382850A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111382390B (zh) * 2018-12-28 2022-08-12 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111381873A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111813450A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111381871B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111813537A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111382851A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111813448A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111399905B (zh) * 2019-01-02 2022-08-16 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111813449A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109919311B (zh) * 2019-03-13 2020-04-10 北京地平线机器人技术研发有限公司 生成指令序列的方法、执行神经网络运算的方法和装置
CN111723919A (zh) * 2019-03-21 2020-09-29 中科寒武纪科技股份有限公司 数据处理方法、装置及相关产品
CN111723916A (zh) * 2019-03-21 2020-09-29 中科寒武纪科技股份有限公司 数据处理方法、装置及相关产品
CN111723920B (zh) * 2019-03-22 2024-05-17 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
CN111767995B (zh) * 2019-04-02 2023-12-05 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN112395008A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111949318B (zh) * 2019-05-17 2024-07-23 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN111966398B (zh) * 2019-05-20 2024-06-07 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN112394902A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 半精度浮点转浮点指令处理装置、方法及相关产品
CN112394995A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 半精度浮点转短整形指令处理装置、方法及相关产品
CN112394988A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 无符号转半精度浮点指令处理装置、方法及相关产品
CN112394997A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 八位整形转半精度浮点指令处理装置、方法及相关产品
CN110598175B (zh) * 2019-09-17 2021-01-01 西安邮电大学 一种基于图计算加速器的稀疏矩阵列向量比较装置
CN110647234B (zh) * 2019-09-27 2021-08-17 联想(北京)有限公司 一种指令处理方法及电子设备
CN112784207B (zh) * 2019-11-01 2024-02-02 中科寒武纪科技股份有限公司 运算方法及相关产品
CN112765541B (zh) * 2019-11-01 2024-02-23 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
US11416580B2 (en) * 2019-11-13 2022-08-16 Intel Corporation Dot product multiplier mechanism
CN111124500B (zh) * 2019-12-12 2022-03-08 浪潮(北京)电子信息产业有限公司 一种指令执行方法、装置、设备及存储介质
CN111027018B (zh) * 2019-12-20 2023-03-31 支付宝(杭州)信息技术有限公司 加速计算设备建模的方法、装置、计算设备及介质
CN113537476B (zh) * 2020-04-16 2024-09-06 中科寒武纪科技股份有限公司 运算装置以及相关产品
CN111783954B (zh) * 2020-06-30 2023-05-02 安徽寒武纪信息科技有限公司 一种用于确定神经网络的性能的方法、电子设备和存储介质
CN113867797A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN112259071A (zh) * 2020-09-22 2021-01-22 北京百度网讯科技有限公司 语音处理系统、语音处理方法、电子设备和可读存储介质
CN114692847B (zh) * 2020-12-25 2024-01-09 中科寒武纪科技股份有限公司 数据处理电路、数据处理方法及相关产品
CN112835552A (zh) * 2021-01-26 2021-05-25 算筹信息科技有限公司 一种外积累加求解稀疏矩阵与稠密矩阵内积的方法
CN112947908B (zh) * 2021-02-26 2024-09-13 上海商汤智能科技有限公司 代码生成方法、装置、设备及存储介质
CN113076083B (zh) * 2021-06-04 2021-08-31 南京后摩智能科技有限公司 数据乘加运算电路
CN115708090A (zh) * 2021-08-20 2023-02-21 华为技术有限公司 一种计算装置、方法、系统、电路、芯片及设备
CN115437602A (zh) * 2021-10-20 2022-12-06 中科寒武纪科技股份有限公司 任意精度计算加速器、集成电路装置、板卡及方法
WO2023230255A1 (en) * 2022-05-26 2023-11-30 Google Llc Instruction set architecture for matrix operations
CN115248701B (zh) * 2022-09-21 2022-12-20 进迭时空(杭州)科技有限公司 一种处理器寄存器堆之间的零拷贝数据传输装置及方法
CN115576895B (zh) * 2022-11-18 2023-05-02 摩尔线程智能科技(北京)有限责任公司 计算装置、计算方法及计算机可读存储介质
CN117931131B (zh) * 2024-03-22 2024-07-26 中国人民解放军国防科技大学 一种稀疏矩阵乘指令实现方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017185405A1 (zh) * 2016-04-26 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行向量外积运算的装置和方法
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
CN107861757A (zh) * 2017-11-30 2018-03-30 上海寒武纪信息科技有限公司 运算装置以及相关产品

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1187044B (zh) 1961-09-13 1965-02-11
JPH0623977B2 (ja) * 1984-10-17 1994-03-30 株式会社日立製作所 ベクトル処理装置
DE69132495T2 (de) 1990-03-16 2001-06-13 Texas Instruments Inc., Dallas Verteilter Verarbeitungsspeicher
US5206822A (en) * 1991-11-15 1993-04-27 Regents Of The University Of California Method and apparatus for optimized processing of sparse matrices
US5721892A (en) 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6115812A (en) 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
EP2302510B1 (en) 1998-08-24 2012-05-09 MicroUnity Systems Engineering, Inc. A processor and method performed by a processor for executing a matrix multipy operation using a wide operand
CN100545804C (zh) 2003-08-18 2009-09-30 上海海尔集成电路有限公司 一种基于cisc结构的微控制器及其指令集的实现方法
WO2006120470A2 (en) * 2005-05-12 2006-11-16 Cambridge Consultants Limited Processor and interface
US7676647B2 (en) 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
JP4755129B2 (ja) 2007-03-16 2011-08-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8281109B2 (en) * 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
CN101217304B (zh) 2008-01-10 2013-01-30 北京邮电大学 一种多子信道的多输入多输出预编码处理方法
CN102012802B (zh) 2010-11-25 2013-01-16 中国人民解放军国防科学技术大学 面向向量处理器数据交换的方法及装置
EP3805921B1 (en) * 2011-04-01 2023-09-06 INTEL Corporation Vector friendly instruction format and execution thereof
US8515964B2 (en) * 2011-07-25 2013-08-20 Yahoo! Inc. Method and system for fast similarity computation in high dimensional space
CN102360344B (zh) 2011-10-10 2014-03-12 西安交通大学 矩阵处理器及其指令集和嵌入式系统
US8892851B2 (en) * 2011-11-02 2014-11-18 International Business Machines Corporation Changing opcode of subsequent instruction when same destination address is not used as source address by intervening instructions
US8898516B2 (en) 2011-12-09 2014-11-25 Toyota Jidosha Kabushiki Kaisha Fault-tolerant computer system
JP5834997B2 (ja) * 2012-02-23 2015-12-24 株式会社ソシオネクスト ベクトルプロセッサ、ベクトルプロセッサの処理方法
CN102750127B (zh) 2012-06-12 2015-06-24 清华大学 一种协处理器
GB2513105A (en) * 2013-03-15 2014-10-22 Deepmind Technologies Ltd Signal processing systems
US9384168B2 (en) 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US20150067273A1 (en) 2013-08-30 2015-03-05 Microsoft Corporation Computation hardware with high-bandwidth memory interface
US9367519B2 (en) 2013-08-30 2016-06-14 Microsoft Technology Licensing, Llc Sparse matrix data structure
US9552205B2 (en) * 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
US9471377B2 (en) * 2013-11-13 2016-10-18 Reservoir Labs, Inc. Systems and methods for parallelizing and optimizing sparse tensor computations
CN103678257B (zh) 2013-12-20 2016-09-28 上海交通大学 基于fpga的正定矩阵浮点求逆器及其求逆方法
CN105468335B (zh) * 2015-11-24 2017-04-12 中国科学院计算技术研究所 流水级运算装置、数据处理方法及片上网络芯片
US20170177360A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Scatter Operations
CN111580865B (zh) 2016-01-20 2024-02-27 中科寒武纪科技股份有限公司 一种向量运算装置及运算方法
CN107704433A (zh) 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种矩阵运算指令及其方法
CN111651204B (zh) * 2016-04-26 2024-04-05 中科寒武纪科技股份有限公司 一种用于执行向量最大值最小值运算的装置和方法
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
CN111104164A (zh) 2016-04-26 2020-05-05 中科寒武纪科技股份有限公司 一种用于执行矩阵乘运算的装置和方法
CN111651200B (zh) 2016-04-26 2023-09-26 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法
CN111310904B (zh) * 2016-04-29 2024-03-08 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络训练的装置和方法
US20180074824A1 (en) 2016-09-13 2018-03-15 Apple Inc. Outer Product Engine
WO2018058427A1 (zh) * 2016-09-29 2018-04-05 北京中科寒武纪科技有限公司 神经网络运算装置及方法
CN107239824A (zh) 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
CN110073329B (zh) * 2016-12-16 2021-06-22 华为技术有限公司 访存设备、计算设备和应用于卷积神经网络运算的设备
US10489063B2 (en) 2016-12-19 2019-11-26 Intel Corporation Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication
CN108171323B (zh) 2016-12-28 2021-03-26 上海寒武纪信息科技有限公司 一种人工神经网络计算装置和方法
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10776699B2 (en) * 2017-05-05 2020-09-15 Intel Corporation Optimized compute hardware for machine learning operations
CN107729990B (zh) 2017-07-20 2021-06-08 上海寒武纪信息科技有限公司 支持离散数据表示的用于执行正向运算的装置及方法
CN108874445A (zh) 2017-10-30 2018-11-23 上海寒武纪信息科技有限公司 神经网络处理器及使用处理器执行向量点积指令的方法
CN107957975B (zh) * 2017-12-15 2021-01-05 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108009126B (zh) 2017-12-15 2021-02-09 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN107943756B (zh) * 2017-12-15 2021-03-23 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN108197705A (zh) * 2017-12-29 2018-06-22 国民技术股份有限公司 卷积神经网络硬件加速装置及卷积计算方法及存储介质
US10459866B1 (en) * 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017185405A1 (zh) * 2016-04-26 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行向量外积运算的装置和方法
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
CN107861757A (zh) * 2017-11-30 2018-03-30 上海寒武纪信息科技有限公司 运算装置以及相关产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于稀疏约束深度学习的交通目标跟踪;杨红红;曲仕茹;;中国公路学报(第06期);全文 *

Also Published As

Publication number Publication date
CN109189474A (zh) 2019-01-11
CN109101272A (zh) 2018-12-28
CN109086076A (zh) 2018-12-25
US20220091849A1 (en) 2022-03-24
CN109165041B (zh) 2023-06-30
CN109032669B (zh) 2023-08-29
CN109086076B (zh) 2023-08-25
WO2019148781A1 (zh) 2019-08-08
CN109189473A (zh) 2019-01-11
CN109101273B (zh) 2023-08-25
US11836497B2 (en) 2023-12-05
CN109062609A (zh) 2018-12-21
CN109062610B (zh) 2023-05-26
CN109117186B (zh) 2024-09-13
CN109117186A (zh) 2019-01-01
CN109062611B (zh) 2023-05-23
CN109101273A (zh) 2018-12-28
CN109189474B (zh) 2023-08-29
CN109165732B (zh) 2022-05-31
CN109032669A (zh) 2018-12-18
CN109165732A (zh) 2019-01-08
CN109165041A (zh) 2019-01-08
CN108388446A (zh) 2018-08-10
CN109062611A (zh) 2018-12-21
CN109062610A (zh) 2018-12-21
CN109062612A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
CN109062612B (zh) 神经网络处理装置及其执行平面旋转指令的方法
CN109032670B (zh) 神经网络处理装置及其执行向量复制指令的方法
CN108229654B (zh) 神经网络卷积运算装置及方法
CN109284823B (zh) 一种运算装置及相关产品
CN110163363B (zh) 一种计算装置及方法
CN111176727A (zh) 计算装置以及计算方法
WO2018113597A1 (zh) 矩阵乘加运算装置、神经网络运算装置和方法
JP2020126597A (ja) 計算装置と計算方法
CN111047022B (zh) 一种计算装置及相关产品
CN111488963A (zh) 神经网络计算装置和方法
CN111291871B (zh) 一种计算装置及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN113469333A (zh) 执行神经网络模型的人工智能处理器、方法及相关产品
CN111047024B (zh) 一种计算装置及相关产品
CN111222632B (zh) 计算装置、计算方法及相关产品
CN118278472A (zh) 量化处理方法及相关装置
CN115222027A (zh) 一种神经网络计算的方法、电子设备以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant