CN110245751B - 一种gemm运算方法及装置 - Google Patents
一种gemm运算方法及装置 Download PDFInfo
- Publication number
- CN110245751B CN110245751B CN201910530860.9A CN201910530860A CN110245751B CN 110245751 B CN110245751 B CN 110245751B CN 201910530860 A CN201910530860 A CN 201910530860A CN 110245751 B CN110245751 B CN 110245751B
- Authority
- CN
- China
- Prior art keywords
- matrix
- circuit
- data
- data block
- slave circuits
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000011773 genetically engineered mouse model Methods 0.000 title claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 83
- 239000011159 matrix material Substances 0.000 claims description 143
- 239000013598 vector Substances 0.000 claims description 41
- 230000006870 function Effects 0.000 claims description 25
- 229940050561 matrix product Drugs 0.000 claims description 15
- 238000012805 post-processing Methods 0.000 claims description 12
- 238000007781 pre-processing Methods 0.000 claims description 12
- 238000011176 pooling Methods 0.000 claims description 8
- 230000008707 rearrangement Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 230000017105 transposition Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 40
- 230000008901 benefit Effects 0.000 abstract description 6
- 238000005265 energy consumption Methods 0.000 abstract description 2
- 238000013528 artificial neural network Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 19
- 238000009825 accumulation Methods 0.000 description 13
- 230000004913 activation Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 5
- 210000004027 cell Anatomy 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2218/00—Aspects of pattern recognition specially adapted for signal processing
- G06F2218/02—Preprocessing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Mobile Radio Communication Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开提供一种GEMM运算方法及装置,所述方法应用于芯片装置,所述芯片装置用于执行GEMM运算。本披露提供的技术方案具有计算处理时间短,能耗低的优点。
Description
技术领域
本申请涉及芯片处理技术领域,具体涉及一种GEMM运算方法及装置。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现运算,此种运算的功耗高、计算时间长。
发明内容
本申请实施例提供了一种GEMM运算方法及装置,可提升GEMM运算的处理速度,提高效率、节省功耗。
第一方面,提供一种GEMM运算方法,所述方法应用于芯片装置,所述芯片装置包括:主电路和多个从电路,所述方法包括如下步骤:
所述主电路接收矩阵A、矩阵B以及GEMM指令,将矩阵A以及矩阵B分别执行OP操作得到OP(A)以及OP(B),将OP(A)拆分成M个基础数据块,将M个基础数据块分发给所述多个从电路,将OP(B)广播给所述多个从电路;
所述多个从电路并行执行基础数据块与OP(B)的内积运算得到多个处理结果,将多个处理结果发送至所述主电路;
所述主电路将所述多个处理结果拼接得到矩阵乘积结果,将所述矩阵乘积结果与alpha相乘后与beta*C相加得到所述GEMM运算结果;
所述alpha、所述beta为标量,所述C为输出矩阵。
在一种可选的方案中,所述将M个基础数据块分发给所述多个从电路具体包括:
将所述M个基础数据块按任意不重复的方式分发给所述多个从处理电路。
在一种可选的方案中,所述将OP(B)广播给所述多个从电路;所述多个从电路并行执行基础数据块与OP(B)的内积运算得到多个处理结果,将多个处理结果发送至所述主电路具体包括:
所述主电路将所述OP(B)的前α列广播给所述多个从电路,所述多个从电路并行执行基础数据块与前α列的内积运算得到多个前处理结果,将所述多个前处理结果发送至所述主处理电路,所述主处理电路将所述OP(B)的中β列广播给所述多个从处理电路,所述多个从电路并行执行基础数据块与中β列的内积运算得到多个中处理结果,将所述多个中处理结果发送至所述主处理电路;所述主处理电路将所述OP(B)的后γ列广播给所述多个从处理电路,所述多个从电路并行执行基础数据块与后γ列的内积运算得到多个后处理结果,将所述多个后处理结果发送至所述主处理电路,所述主处理电路将多个前处理结果、多个中处理结果以及多个后处理结果按前、中、后组合一起得到矩阵乘积结果。
在一种可选的方案中,如所述多个从处理电路为k个从处理电路,所述k为大于等于2的整数;所述主电路将M个基础数据块分发给所述多个从电路具体包括:
如M>k,将M个基础数据块中的一个或多个分发给k个从电路中的一个从电路;
如M≤k,所述主电路将M个基础数据块中的一个分发给k个从电路中的一个从电路。
在一种可选的方案中,所述芯片装置还包括:分支电路,所述分支电路连接所述主电路与多个从电路,所述方法还包括:
所述分支电路转发所述主电路与多个从电路之间的数据。
在一种可选的方案中,所述主电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。
在一种可选的方案中,所述OP操作具体包括:转置操作、非线性函数运算或池化操作。
第二方面,提供一种芯片装置,所述芯片装置包括:主电路和多个从电路,
所述主电路,用于接收矩阵A、矩阵B以及GEMM指令,将矩阵A以及矩阵B分别执行OP操作得到OP(A)以及OP(B),将OP(A)拆分成M个基础数据块,将M个基础数据块分发给所述多个从电路,将OP(B)广播给所述多个从电路;
所述多个从电路,用于并行执行基础数据块与OP(B)的内积运算得到多个处理结果,将多个处理结果发送至所述主电路;
所述主电路,还用于将所述多个处理结果拼接得到矩阵乘积结果,将矩阵乘积结果与alpha相乘后与beta*C相加得到所述GEMM运算结果;
所述alpha、所述beta为标量,所述C为输出矩阵。
在一种可选的方案中,所述主电路,具体用于将所述M个基础数据块按任意不重复的方式分发给所述多个从处理电路
在一种可选的方案中,所述主电路,具体用于将所述OP(B)的前α列广播给所述多个从电路;
所述多个从电路,具体用于并行执行基础数据块与前α列的内积运算得到多个前处理结果,将所述多个前处理结果发送至所述主处理电路;
所述主处理电路,具体用于将所述OP(B)的中β列广播给所述多个从处理电路;
所述多个从电路。具体用于并行执行基础数据块与中β列的内积运算得到多个中处理结果,将所述多个中处理结果发送至所述主处理电路;
所述主处理电路,具体用于将所述OP(B)的后γ列广播给所述多个从处理电路;
所述多个从电路,具体用于并行执行基础数据块与后γ列的内积运算得到多个后处理结果,将所述多个后处理结果发送至所述主处理电路;
所述主处理电路,具体用于将多个前处理结果、多个中处理结果以及多个后处理结果按前、中、后组合一起得到矩阵乘积结果。
在一种可选的方案中,所述多个从处理电路为k个从处理电路;
如M>k,所述主电路,具体用于将M个基础数据块中的一个或多个分发给k个从电路中的一个从电路;
如M≤k,所述主电路,具体用于将M个基础数据块中的一个分发给k个从电路中的一个从电路。
在一种可选的方案中,所述芯片装置还包括分支电路,所述分支电路连接所述主电路以及所述多个从电路;
所述分支电路,用于转发所述主电路与多个从电路之间的数据。
在一种可选的方案中,所述分支电路包括多个分支电路,每个分支电路连接所述主电路以及至少一个从处理电路。
在一种可选的方案中,所述主电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。
在一种可选的方案中,所述从电路包括:内积运算器电路或累加器电路等中一个或任意组合。
第三方面,提供一种计算装置,所述计算装置包括第二方面提供的芯片装置。
第四方面,提供一种计算机可读存储介质,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本披露提供的一种芯片装置的结构示意图。
图1b是本披露提供的另一种芯片装置的结构示意图。
图1c是本披露提供的芯片装置的数据分发示意图。
图1d为一种芯片装置的数据回传示意图。
图2是本披露实施例提供的一种神经网络的运算方法的流程示意图。
图2a是本披露实施例提供的矩阵A乘以矩阵B的示意图。
图3是本披露实施例提供的神经网络的运算方法的流程示意图。
图3a为全连接1的单样本数据示意图。
图3b为全连接2的多样本数据示意图。
图3c为卷积1的M个卷积核数据示意图。
图3d为卷积2输入数据示意图。
图3e为输入数据的一个三维数据块的运算窗口示意图。
图3f为输入数据的一个三维数据块的另一运算窗口示意图。
图3g为输入数据的一个三维数据块的又一运算窗口示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
本披露的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本披露的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面以CPU为例来说明神经网络的运算方法,在神经网络中,矩阵与矩阵的乘法在神经网络中大量的使用,这里以矩阵A与矩阵B的乘法为例来说明CPU的“与”运算方式。假设矩阵A与矩阵B的结果为C,即C=A*B;下述所示:
对于CPU来说,其在计算得到C采用的步骤可以为首先对第一行的完成计算,然后对第二行完成计算,最后对第三行完成运算,即对于CPU来说其运算时一行数据计算完毕以后再执行第二行数据的计算。以上述公式为例,具体的,首先,CPU对第一行完成计算,即需要完成,a11*b11+a12*b21+a13*b31、a11*b12+a12*b22+a13*b32和a11*b13+a12*b23+a13*b33;计算完上述以后,在计算a21*b11+a22*b21+a23*b31、a21*b12+a22*b22+a23*b32和a21*b13+a22*b23+a23*b33;最后再计算a31*b11+a32*b21+a33*b31、a31*b12+a32*b22+a33*b32和a31*b13+a32*b23+a33*b33。
所以对于CPU或GPU来说,其需要一行一行的计算,即对第一行计算完毕以后再进行第二行的计算,然后再执行第三行的计算直至所有行计算完毕,对于神经网络来说,其行数可能有上千行的数据,所以其计算的时间很长,并且在计算时,CPU长期处于工作状态,能耗也高。
参阅图1b,图1b为一种芯片装置的结构示意图,如图1b所示,该芯片装置包括:主单元电路、基本单元电路和分支单元电路。其中,主单元电路可以包括寄存器和/或片上缓存电路,该主单元还可以包括:向量运算器电路、ALU(arithmetic and logic unit,算数逻辑单元)电路、累加器电路、矩阵转置电路、DMA(Direct Memory Access,直接内存存取)电路、数据重排电路等的一个或任意组合;每个基础单元可以包括基础寄存器和/或基础片上缓存电路;每个基础单元还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。所述电路都可以是集成电路。如具有分支单元时,其中主单元与分支单元连接,该分支单元与基本单元连接,该基本单元用于执行数据块之间的内积运算,该主单元,用于收发外部数据,以及将外部数据分发至分支单元,该分支单元用于收发主单元或基本单元的数据。如图1b所示的结构适合复杂数据的计算,因为对于主单元来说,其连接的单元的数量有限,所以需要在主单元与基本单元之间添加分支单元以实现更多的基本单元的接入,从而实现对复杂数据块的计算。
分支单元和基础单元的连接结构可以是任意的,不局限在图1b的H型结构。可选的,主单元到基础单元是广播或分发的结构,基础单元到主单元是收集(gather)的结构。广播,分发和收集的定义如下:
所述主单元到基础单元的数据传递方式可以包括:
主单元与多个分支单元分别相连,每个分支单元再与多个基础单元分别相连。
主单元与一个分支单元相连,该分支单元再连接一个分支单元,依次类推,串联多个分支单元,然后,每个分支单元再与多个基础单元分别相连。
主单元与多个分支单元分别相连,每个分支单元再串联多个基础单元。
主单元与一个分支单元相连,该分支单元再连接一个分支单元,依次类推,串联多个分支单元,然后,每个分支单元再串联多个基础单元。
分发数据时,主单元向部分或者全部基础单元传输数据,各个接收数据的基础单元收到的数据可以不同;
广播数据时,主单元向部分或者全部基础单元传输数据,各个接收数据的基础单元收到相同的数据。
收集数据时,部分或全部基础单元向主单元传输数据。需要说明的,如图1a或如图1b所示的芯片装置可以是一个单独的物理芯片,当然在实际应用中,该芯片装置也可以集成在其他的芯片内(例如CPU,GPU),本申请具体实施方式并不限制上述芯片装置的物理表现形式。
参阅图1c,图1c为一种芯片装置的数据分发示意图,如图1c的箭头所示,该箭头为数据的分发方向,如图1c所示,主单元接收到外部数据以后,将外部数据拆分以后,分发至多个分支单元,分支单元将拆分数据发送至基本单元。
参阅图1d,图1d为一种芯片装置的数据回传示意图,如图1d的箭头所示,该箭头为数据的回传方向,如图1d所示,基本单元将数据(例如内积计算结果)回传给分支单元,分支单元在回传至主单元。
参阅图1a,图1a为另一种芯片装置的结构示意图,该芯片装置包括:主单元以及基本单元,该主单元与基本单元连接。如图1a所示的结构由于基本单元与主单元直接物理连接,所以该结构连接的基本单元的数量有限,其适合简单的数据的计算。
参阅图2,图2提供了一种使用上述芯片装置进行神经网络的运算方法,该方法采用如图1a或如图1b所示的芯片装置来执行,该方法如图2所示,包括如下步骤:
步骤S201、芯片装置的主单元获取待计算的数据块以及运算指令。
上述步骤S201中的待计算的数据块具体可以为,矩阵、向量、三维数据、四维数据、多维数据等等,本披露具体实施方式并不限制上述数据块的具体表现形式,该运算指令具体可以为,乘法指令、卷积指令、加法指令、减法指令、BLAS(英文:Basic Linear AlgebraSubprograms,基础线性代数子程序)函数或激活函数等等。
步骤S202、主单元依据该运算指令对该待计算的数据块划分成分发数据块以及广播数据块。
上述步骤S202的实现方法具体可以为:
如该运算指令为乘法指令,确定乘数数据块为广播数据块,被乘数数据块为分发数据块。
如该运算指令为卷积指令,确定输入数据块为广播数据块,卷积核为分发数据块。
步骤S2031、主单元对该分发数据块进行拆分处理得到多个基本数据块,将该多个基本数据块分发至多个基本单元,
步骤S2032,主单元将该广播数据块广播至多个基本单元。
可选的,上述步骤S2031以及步骤S2032也可以采用循环执行,对数据量比较大的情况下,主单元对该分发数据块进行拆分处理得到多个基本数据块,将每个基本数据块拆分成m个基本数据子块,对广播数据块也拆分成m个广播数据子块,主单元每次分发一个基本数据子块以及广播一个广播数据子块,该基本数据子块与广播数据子块均为能够执行并行神经网络计算的数据块。例如,以一个1000*1000的矩阵A*1000*1000的矩阵B为例,该基本数据块可以为矩阵A的第z行数据,该基本数据子块可以为矩阵A第z行数据中的前20列数据,该广播数据子块可以为矩阵B第z列中的前20行数据。
上述步骤S203中的基本数据块具体可以为,能够执行内积运算的最小数据块,以矩阵乘法为例,该基本数据块可以为矩阵的一行数据,以卷积为例,该基本数据块可以为一个卷积核的权值。
上述步骤S203中的分发的方式可以参见下述实施例的描述,这里不再赘述,广播该广播数据块的方法也可以参见下述实施例的描述,这里不再赘述。
步骤S2041、芯片装置的基本单元对该基本数据块与广播数据块执行内积运算得到运算结果,(可能是中间结果)。
步骤S2042、如果运算结果不是中间结果,将运算结果回传至主单元。
上述步骤S204中的回转方式可以参见下述实施例的描述,这里不再赘述。
步骤S205、主单元对该运算结果处理得到该待计算的数据块以及运算指令的指令结果。
上述步骤S205中的处理方式可以为累加、排序等等方式,本披露并不限于上述处理的具体方式,该具体的方式需要依据不同的运算指令来配置,例如还可以包括执行非线性变换等。
本披露提供的技术方案在执行运算时,由主单元接收外部数据,该外部数据包括待计算的数据块以及运算指令,获取到待计算的数据块以及运算指令,依据该运算指令确定该待计算的数据块的分发数据块以及广播数据块,将分发数据块拆分成多个基本数据块,将广播数据块广播给多个基本单元,将多个基本数据块分发至多个基本单元,多个基本单元分别对该基本数据块以及广播数据块执行内积运算得到运算结果,多个基本单元将该运算结果返回给主单元,主单元根据返回的运算结果得到该运算指令的指令结果。此技术方案的技术点在于,针对神经网络,其很大的运算量在于数据块与数据块之间的内积运算,内积运算的开销大,计算时间长,所以本披露实施例通过该运算指令以及待运算的指令首先区分该待计算的数据块中的分发数据块以及广播数据块,对于广播数据块来说,即实现内积运算时必须使用的数据块,对于分发数据块,其属于在内积运算中可以拆分的数据块,以矩阵乘法为例,如待计算的数据块为矩阵A和矩阵B,其运算指令为乘法指令(A*B),依据矩阵乘法的规则,确定矩阵A为可以拆分的分发数据块,确定矩阵B为广播的数据块,因为对于矩阵乘法来说,被乘数矩阵A可以被拆分成多个基本数据块,乘数矩阵B可以为广播数据块。依据矩阵乘法的定义,被乘数矩阵A需要每行数据分别与乘数矩阵B执行内积运算,所以本申请的技术方案将矩阵A分成M个基本数据块,M个基本数据块中,每个基本数据块可以为矩阵A的一行数据。所以对于矩阵乘法来说,其耗时比较大的运算时间被多个基本单元分别执行,所以在内积运算中,多个基本单元可以快速的并行运算出结果,从而减少计算时间,较少的计算时间也能够减少芯片装置的工作时间,从而降低功耗。
下面通过实际的例子来说明本披露提供的技术方案的效果。如图2a所示,为一种矩阵A乘以向量B的示意图,如图2a所示,矩阵A具有M行,L列,向量B具有L行,假设运算器运算矩阵A的一行与向量B的内积所需时间为t1,如采用CPU或GPU计算,其需要计算完一行以后在进行下一行,那么对于GPU或CPU计算的方法计算的时间T0=m*t1。而采用本披露具体实施例提供的技术方案,这里假设基本单元具有M个,则矩阵A会被拆分成M个基本数据块,每个基本数据块为矩阵A的一行数据,M个基本单元同时执行内积运算,那么其计算时间为t1,对于采用本披露具体实施例提供的技术方案所需要的时间T1=t1+t2+t3,其中t2可以为主单元拆分数据的时间,t3可以为处理内积运算的运算结果得到指令结果所需的时间,由于拆分数据以及处理运算结果的计算量非常小,所以花费的时间非常少,所以T0>>T1,所以采用本披露具体实施方式的技术方案能够非常明显的减少计算的时间,同时对于待运算的数据所产生的功耗来说,由于T0>>T1,所以对于本披露提供的芯片装置由于其工作时间特别短,通过实验证明,当芯片装置的工作时间非常短时,其能耗会远低于工作时间长的能耗,所以其具有节省能耗的优点。
上述步骤S203中主单元将该广播数据块广播至多个基本单元的实现方式有多种,具体可以为:
方式甲、将广播数据块通过一次广播至该多个基本单元。(所述广播是指进行“一对多”的数据传输,即由主单元同时向多个(全部或者一部分)基础单元发送相同的数据块)例如,矩阵A*矩阵B,其中矩阵B为广播数据块,将矩阵B通过一次广播至该多个基本单元,又如,在卷积中,该输入数据为广播数据块,将该输入数据块一次广播至该多个基本单元。此方式的优点在于能够节省主单元与基本单元的数据传输量,即只经过一次广播即能够将所有的广播数据传输至多个基本单元。
方式乙、将广播数据块分成多个部分广播数据块,将多个部分广播数据块通过多次广播至该多个基本单元,例如,矩阵B通过多次广播至该多个基本单元,具体的,每次广播矩阵B的N列数据。此方式的优点在于可以降低基本单元的配置,因为对于基本单元其配置的寄存器的存储空间不可能很大,如果对于数据量比较大的矩阵B,一次将矩阵B下发给基本单元,那么基本单元存储这些数据就需要比较大的寄存器空间,因为基本单元的数量众多,提高寄存器空间必然对成本的增加产生很大影响,所以此时采用多次广播该广播数据块的方案,即对于基本单元来说,其只需要存储每次广播的广播数据块的部分数据即可,从而降低成本。
需要说明的是,上述步骤S203中的将多个基本数据块分发至多个基本单元也可以采用上述方式甲或方式乙,不同点仅仅在于,其传输的方式为单播方式并且传输的数据为基本数据块。
上述步骤S204的实现方法具体可以为:
如采用方式甲广播该广播数据块以及方式甲的方式分发基本数据块(如图3a所示),基本单元对该基本数据块与广播数据块执行内积处理得到内积处理结果,即一次执行一行的内积运算,将该内积处理结果(运算结果中一种)发送至主单元,主单元将内积处理结果累加,当然在实际应用中,该基本单元可以将该内积处理结果累加后,将累加后的结果(运算结果中的另一种)发送至主单元。上述方式可以减少主单元与基本单元之间的数据传输量,进而提高计算的速度。
如采用方式乙广播数据块,在一种可选的技术方案中,基本单元每接收到部分广播数据块,执行一次基本数据块与部分广播数据块的部分内积运算得到部分处理结果,基本单元将该处理结果发送至主单元,主单元将处理结果累加。在另一种可选方案中,如基本单元接收的基本数据块为n个,复用该广播数据块执行该广播数据块与该n个基本数据块内积运算得到n个部分处理结果,基本单元将该n个处理结果发送至主单元,主单元将n个处理结果分别累加。当然上述累加也可以在基本单元内执行。
对于上述情况一般为广播数据块的数据量非常大且分发数据块也较大,因为对于芯片装置来说,由于其属于硬件的配置,所以其配置的基本单元虽然在理论上可以无数个,但是在实际中其数量有限,一般为几十个基本单元,该数量随着技术发展,可能会不断变化,比如增加。但是对于神经网络的矩阵乘矩阵的运算中,该矩阵A的行数可能有数千行,矩阵B的列数也有数千列,那么一次广播数据将矩阵B下发给基本单元就无法实现,那么其实现的方式可以为,一次广播矩阵B的部分数据,例如前5列数据,对于矩阵A来说也可以采用类似的方式,对于基本单元来说,其就可以每次进行部分内积计算,然后将部分内积计算的结果存储在寄存器内,等该行所有的内积运算执行完毕后,将该行所有的部分内积计算的结果累加即可以得到一种运算结果,将该运算结果发送至主单元。此种方式具有提高计算速度的优点。
参阅图3,图3提供了一种神经网络的计算方法,本实施例中的计算以矩阵A*矩阵B的计算方式来说明,该矩阵A*矩阵B可以为图3a所示的矩阵示意图,为了方便说明,如图3所示的神经网络的计算方法在如图1b所示的芯片装置内执行,如图1b所示,该芯片装置具有16个基本单元,为了方便描述以及分配,这里设置如图3a所示的M的取值可以为32,该N的取值可以为15,L的取值可以为20。当然可以理解计算装置可以有任意多个基本单元。该方法如图3所示,包括如下步骤:
步骤S301、主单元接收矩阵A、矩阵B以及乘法运算指令A*B。
步骤S302、主单元依据乘法运算指令A*B确定矩阵B为广播数据块,矩阵A为分发数据块,将矩阵A拆分成32个基本数据块,每个基本数据块为矩阵A的一行数据。
步骤S303、主单元将32个基本数据块均匀分配给16个基本单元,将32个基本数据块均匀分配给16个基本单元,即每个基本单元接收2个基本数据块,这两个数据块的分配方式可以是任意不重复的分配顺序。
上述步骤S303的分配方式可以采用一些其他分配方式,例如当数据块数量无法恰好均分给每个基础单元的时候,可以不平均分配数据库给每个基础单元;也可以对其中的一些无法均分的数据块进行分割然后平均分配等方式,本披露具体实施方式并不限制上述基本数据块如何分配给多个基本单元的方式。
步骤S304、主单元提取矩阵B的前几列(比如前5列)的部分数据,矩阵B将前5列的部分数据广播至16个基本单元。
步骤S305、16个基本单元二次复用该前5列的部分数据与2个基本数据块执行内积运算以及累加运算得到32*5个前处理结果,将32*5个前处理结果发送至主单元。
步骤S306、主单元提取矩阵B的中5列的部分数据,矩阵B将中5列的部分数据广播至16个基本单元。
步骤S307、16个基本单元二次复用该中5列的部分数据与2个基本数据块执行内积运算以及累加运算得到32*5个中处理结果,将32*5个中处理结果发送至主单元。
步骤S308、主单元提取矩阵B的后5列的部分数据,矩阵B将后5列的部分数据广播至16个基本单元。
步骤S309、16个基本单元二次复用该后5列的部分数据与2个基本数据块执行内积运算以及累加运算得到32*5个后处理结果,将32*5个后处理结果发送至主单元。
步骤S310、主单元将32*5个前处理结果、32*5个中处理结果以及32*5个后处理结果按前、中、后组合在一起得到一个32*15的矩阵C,该矩阵C即为矩阵A*矩阵B的指令结果。
如图3所示的技术方案将矩阵A拆分成32个基本数据块,然后分批次广播矩阵B,使得基本单元能够分批次的得到指令结果,由于该内积拆分成16个基本单元来计算,所以能够极大的降低计算的时间,所以其具有计算时间短,能耗低的优点。
参阅图1a,图1a为本披露提供的一种芯片装置,所述芯片装置包括:主单元以及基本单元,所述主单元为硬件芯片单元,所述基本单元也为硬件芯片单元;
所述主单元,用于执行神经网络运算中的各个连续的运算以及与所述基本单元传输数据;
所述基本单元,用于依据所述主单元传输的数据执行神经网络中并行加速的运算,并将运算结果传输给所述主单元。
上述并行加速的运算包括但不限于:数据块与数据块之间的乘法运算、卷积运算等等大规模并且可以并行的运算。
上述各个连续的运算包括但不限于:累加运算、矩阵转置运算、数据排序运算等等连续的运算。
主单元以及多个基本单元,所述主单元,用于获取待计算的数据块以及运算指令,依据该运算指令对所述待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至所述多个基本单元,将所述广播数据块广播至所述多个基本单元;所述基本单元,用于对所述基本数据块与所述广播数据块执行内积运算得到运算结果,将所述运算结果发送至所述主单元;所述主单元,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
可选的,所述芯片装置还包括:分支单元,所述分支单元设置在主单元与基本单元之间;所述分支单元,用于转发数据。
可选的,所述主单元,具体用于将所述广播数据块通过一次广播至所述多个基本单元。
可选的,所述基本单元,具体用于将所述基本数据块与所述广播数据块执行内积处理得到内积处理结果,将所述内积处理结果累加得到运算结果,将所述运算结果发送至所述主单元。
可选的,所述主单元,用于在如所述运算结果为内积处理的结果时,对所述运算结果累加后得到累加结果,将该累加结果排列得到所述待计算的数据块以及运算指令的指令结果。
可选的,所述主单元,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述多个基本单元。
可选的,所述基本单元,具体用于将所述部分广播数据块与所述基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主单元。
可选的,所述基本单元,具体用于复用n次该部分广播数据块执行该部分广播数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主单元,所述n为大于等于2的整数。
本披露具体实施方式还提供一种如图1a所示的芯片装置的应用方法,该应用方法具体可以用于执行矩阵乘矩阵运算、矩阵乘向量运算、卷积运算或全连接运算中的一种或任意组合。
具体地,所述主单元还可以执行pooling(池化)运算,规则化(归一化)运算,如batch normalization,lrn等神经网络运算步骤。
本申请具体实施方式还提供一种芯片,该芯片包括如图1a或如1b所示的芯片装置。
本申请具体实施方式还提供一种智能设备,该智能设备包括上述芯片,该芯片集成有如图1a或如图1b所示的芯片装置。该智能设备包括但不限于:智能手机、平板电脑、个人数字助理、智能手表、智能摄像头、智能电视、智能冰箱等等智能设备,上述设备仅仅为了举例说明,本申请具体实施方式并不局限上述设备的具体表现形式。
上述矩阵乘矩阵运算可以参见如图3所示实施例的描述。这里不再赘述。
使用芯片装置进行全连接运算;
如果全连接层的输入数据是一个长度为L的向量(如“图3a所示全连接1-单样本”中向量B)(即神经网络的输入是单个样本的情况),全连接层的输出是一个长度为M的向量,全连接层的权值是一个M*L的矩阵(如“图3b全连接1-单样本”中矩阵A),则以全连接层的权值矩阵作为矩阵A(即拆分数据块),输入数据作为向量B(即广播数据块),按照上述如图2所示的方法一执行运算。具体的运算方法可以为:
如果全连接层的输入数据是一个矩阵(即神经网络的输入是多个样本作为batch一起进行运算的情况)(全连接层的输入数据表示N个输入样本,每个样本是一个长度为L的向量,则输入数据用一个L*N的矩阵表示,如“图3b全连接1-多样本”中矩阵B表示),全连接层对每一个样本的输出是一个长度为M的向量,则全连接层的输出数据是一个M*N的矩阵,如“图3a全连接1-多样本”中的结果矩阵,全连接层的权值是一个M*L的矩阵(如“图3a全连接1-多样本”中矩阵A),则以全连接层的权值矩阵作为矩阵A(即拆分数据块),输入数据矩阵作为矩阵B(即广播数据块),或者以全连接层的权值矩阵作为矩阵B(即广播数据块),输入向量作为矩阵A(即拆分数据块),按照上述如图2所示的方法一执行运算。
芯片装置
使用所述芯片装置进行人工神经网络运算时候,神经网络中的卷积层,池化层,规则化层(也叫归一化层,如BN(Batch normalization)或者LRN(Local ResponseNormalization))等的输入数据如“图3d卷积2-输入数据”(为了表示清楚,这里对表示每个样本的三维数据块使用C=5,H=10,W=12作为示例进行说明,实际使用中N,C,H,W的大小不局限在图3d中所示的数值)所示,图3d中的每一个三维数据块表示一个样本对应与这一层的输入数据,每个三维数据块的三个维度分别是C、H和W,共有N个这样的三维数据块。
在进行上述这些神经网络层的计算时,主单元接收到输入数据后,对每一个输入数据的样本,使用主单元的数据重排电路,将输入数据按照一定的顺序摆放,该顺序可以是任意的顺序;
可选的,该顺序将按上述示意图代表的C维度坐标变化最快的方式摆放输入数据,例如NHWC和NWHC等。其中,C表示数据块最内层的维度,该N表示数据块最外层的维度,H和W是中间层的维度。这样的效果是C的数据是挨在一起的,由此易于提高运算的并行度,更易于多个特征图(Feature map)进行并行运算。
以下解释对于不同的神经网络运算,C、H和W如何理解。对于卷积和池化来说,H和W是进行卷积和池化运算时的相关运算窗口滑动维度(运算窗口在W维度上滑动的示例图如图3e卷积3-滑动a”和“图3f卷积3-滑动b”这两个图表示,运算窗口在H维度上滑动的示意图如图3g所示,其中运算窗口的大小与M个卷积核中的一个卷积核中的大小一致,如图3c所示的M个卷积核,每个卷积核为5*3*3的三维数据块,那么其运算窗口也为5*3*3的三维数据块,对于如图3c所示的M个卷积核中的KH以及KW表示其KH对应的维度为输入数据的H维度,该KW表示的对应的维度为输入数据的W维度。图3e、3f、3g中灰色部分方块是每一次滑动运算窗口进行运算使用的数据,其滑动的方向可以是以H为滑动方向以后在以W为滑动方向或以W为滑动方向完成以后在以H为滑动方向。具体地,对于卷积来说是,每一个滑动窗口处的运算是图中灰色部分方块表示的数据块与“图3c卷积1-卷积核”表示的M个卷积核数据块分别进行内积运算,卷积将对每一个滑动窗口位置对应每一个卷积核输出一个数值,即对于每个滑动窗口具有M个输出数值;对于池化来说,每一个滑动窗口处的运算是图中灰色方块表示的数据块在H和W维度(在图中的例子里是该灰色数据块中处于同一个平面上的9个数中)进行选取最大值,或者计算平均值等运算,池化将对每一个滑动窗口位置输出C个数值。C是单个样本的三维数据块中,除了H和W之外另一个维度,N代表一共有N个样本同时进行这一层的运算。对于规则化算法中的LRN来说,C维度的定义是:每一次基本的LRN运算沿着C维度选取一个连续的数据块(即Y*1*1的数据块),其中Y*1*1的数据块中的Y为C维度上的取值,Y的取值小于等于C维度的最大值,第一个1表示H维度,第二个1表示W维度;剩下的两个维度定义成H和W维度,即,对每一个样本的三维数据块中,每一次进行LRN规则化的运算时,要对相同的W坐标和相同的H坐标中不同C坐标中连续的一部分数据进行。对于规则化算法BN来说,将N个样本的三维数据块中所有的具有相同的C维度上的坐标的数值求平均值和方差(或者标准差)。
所述“图3c-图3g”中均使用一个方块表示一个数值,也可以称为一个权值;示意图中所使用的数字均仅限举例说明,实际情况中维度数据可能是任意数值(包括某个维度为1的情况,这种情况下,所述四维数据块自动成为三维数据块,例如,当同时计算的样本数量为1的情况下,输入数据就是一个三维数据块;在例如,当卷积核数量为1的情况下,卷积和数据为一个三维数据块)。使用所述芯片装置进行输入数据B和卷积核A之间的卷积运算;
对于一个卷积层,其权值(所有的卷积核)如“图3c卷积1-卷积核”所示,记其卷积核的数量为M,每个卷积核由C个KH行KW列的矩阵组成,所以卷积层的权值可以表示为一个四个维度分别是M,C,KH,KW的四维数据块;卷积层的输入数据为四维数据块,由N个三维数据块组成,每个所述三维数据块由C个H行W列的特征矩阵组成(即四个维度分别是N,C,H,W的数据块);如“图3d卷积2-输入数据”所示。将M个卷积核中的每一个卷积核的权值从主单元分发到K个基础单元中的某一个上,保存在基础单元的片上缓存和/或寄存器中(此时的M个卷积核为分发数据块,每个卷积核可以是一个基本数据块,当然在实际应用中,也可以将该基本数据块变更成更小的温度,例如一个卷积核的一个平面的矩阵);具体的分发方法可以为:如果卷积核的个数M<=K则,给M个基础单元分别分发一个卷积核的权值;如果卷积核的个数M>K,则给每个基础单元分别分发一个或多个卷积核的权值。(分发到第i个基础单元的卷积核权值集合为Ai,共有Mi个卷积核。)在每个基础单元中,例如第i个基础单元中:将收到的由主单元分发的卷积核权值Ai保存在其寄存器和/或片上缓存中;将输入数据中各部分(即如图3e、图3f或如3g所示的滑动窗口)以广播的方式传输给各个基础单元(上述广播的方式可以采用上述方式甲或方式乙),在广播时,可以通过多次广播的方式将运算窗口的权值广播至所有的基本单元,具体的,可以每次广播部分运算窗口的权值,例如每次广播一个平面的矩阵,以图3e为例,每次可以广播一个C平面的KH*KW矩阵,当然在实际应用中,还可以一次广播一个C平面的KH*HW矩阵中的前n行或前n列的数据,本披露并不限制上述部分数据的发送方式以及部分数据的排列方式;将输入数据的摆放方式变换为任意维度顺序的摆放方式,然后按顺序依次广播各部分输入数据给基础单元。可选的,上述分发数据即卷积核的发送方式也可以采用与输入数据的运算窗口类似的方法送方式,这里不再赘述。可选的,将输入数据的摆放方式变换为C为最内层的循环。这样的效果是C的数据是挨在一起的,由此提高卷积运算的并行度,更易于多个特征图(Feature map)进行并行运算。可选的,将输入数据的摆放方式变换为维度顺序是NHWC或者NWHC的摆放方式每个基础单元,例如第i个基础单元,计算权值Ai中的卷积核和接收到的广播的数据对应部分(即运算窗口)的内积;权值Ai中对应部分的数据可以直接从片上缓存中读出来使用,也可以先读到寄存器中以便进行复用。每个基础单元内积运算的结果进行累加并传输回主单元。可以将每次基础单元执行内积运算得到的部分和传输回主单元进行累加;可以将每次基础单元执行的内积运算得到的部分和保存在基础单元的寄存器和/或片上缓存中,累加结束之后传输回主单元;也可以将每次基础单元执行的内积运算得到的部分和在部分情况下保存在基础单元的寄存器和/或片上缓存中进行累加,部分情况下传输到主单元进行累加,累加结束之后传输回主单元。
采用芯片装置实现BLAS(英文:Basic Linear Algebra Subprograms,基础线性代数子程序)函数的方法
GEMM,GEMM计算是指:BLAS库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:C=alpha*op(A)*op(B)+beta*C,其中,A和B为输入的两个矩阵,C为输出矩阵,alpha和beta为标量,op代表对矩阵A或B的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的A和B的宽高;
使用所述装置实现GEMM计算的步骤为:
对输入矩阵A和矩阵B进行各自相应的op操作;该op操作可以为矩阵的转置操作,当然还可以是其他的操作,例如,非线性函数运算,池化等。利用主单元的向量运算功能,实现矩阵op操作;如某个矩阵的op可以为空,则主单元对该矩阵不执行任何操作;
采用如图2所示的方法完成op(A)与op(B)之间的矩阵乘法计算;
利用主单元的向量运算功能,对op(A)*op(B)的结果中的每一个值进行乘以alpha的操作;
利用主单元的向量运算功能,实现矩阵alpha*op(A)*op(B)和beta*C之间对应位置相加的步骤;
GEMV
GEMV计算是指:BLAS库中的矩阵-向量乘法的运算。该运算的通常表示形式为:C=alpha*op(A)*B+beta*C,其中,A为输入矩阵,B为输入的向量,C为输出向量,alpha和beta为标量,op代表对矩阵A的某种操作;
使用所述装置实现GEMV计算的步骤为:
对输入矩阵A进行相应的op操作;芯片装置的使用如图2所示的方法完成矩阵op(A)与向量B之间的矩阵-向量乘法计算;利用主单元的向量运算功能,对op(A)*B的结果中的每一个值进行乘以alpha的操作;利用主单元的向量运算功能,实现矩阵alpha*op(A)*B和beta*C之间对应位置相加的步骤。
采用芯片装置实现激活函数的方法
激活函数通常是指对一个数据块(可以是向量或者多维矩阵)中的每个数执行非线性运算。比如,激活函数可以是:y=max(m,x),其中x是输入数值,y是输出数值,m是一个常数;激活函数还可以是:y=tanh(x),其中x是输入数值,y是输出数值;激活函数也可以是:y=sigmoid(x),其中x是输入数值,y是输出数值;激活函数也可以是一个分段线性函数;激活函数可以是任意输入一个数,输出一个数的函数。
实现激活函数时,芯片装置利用主单元的向量计算功能,输入一向量,计算出该向量的激活向量;主单元将输入向量中的每一个值通过一个激活函数(激活函数的输入时一个数值,输出也是一个数值),计算出一个数值输出到输出向量的对应位置;
上述输入向量的来源包括但不限于:芯片装置的外部数据、芯片装置的分支单元转发的基本单元的计算结果数据。
上述计算结果数据具体可以为进行矩阵乘向量的运算结果;上述计算结果数据具体还可以进行矩阵乘矩阵的运算结果;上述输入数据可以为主单元实现加偏置之后的计算结果。
采用芯片装置实现加偏置操作
利用主单元可以实现两个向量或者两个矩阵相加的功能;利用主单元可以实现把一个向量加到一个矩阵的每一行上,或者每一个列上的功能。
可选的,上述矩阵可以来自所述设备执行矩阵乘矩阵运算的结果;所述矩阵可以来自所述装置执行矩阵乘向量运算的结果;所述矩阵可以来自所述装置的主单元从外部接受的数据。所述向量可以来自所述装置的主单元从外部接受的数据。
上述输入数据以及计算结果数据仅仅是举例说明,在实际应用中,还可以是其他类型或来源的数据,本披露具体实施方式对上述数据的来源方式以及表达方式并不限定。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元/模块都是以硬件的形式实现。比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
所述作为说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
Claims (8)
1.一种GEMM运算方法,其特征在于,所述方法应用于芯片装置,所述芯片装置包括:主电路和多个从电路,主电路和多个从电路物理连接,所述芯片装置为一个单独的物理芯片或集成在其他的芯片内;所述方法包括如下步骤:
所述主电路接收矩阵A、矩阵B以及GEMM指令,将矩阵A以及矩阵B分别执行OP操作得到OP(A)以及OP(B),将OP(A)拆分成M个基础数据块,将M个基础数据块分发给所述多个从电路,将OP(B)广播给所述多个从电路;
所述多个从电路并行执行基础数据块与OP(B)的内积运算得到多个处理结果,将多个处理结果发送至所述主电路;
所述主电路将所述多个处理结果拼接得到矩阵乘积结果,将所述矩阵乘积结果与alpha相乘后与beta*C相加得到所述GEMM运算结果;
所述alpha、所述beta为标量,所述C为输出矩阵;
所述将M个基础数据块分发给所述多个从电路具体包括:
将所述M个基础数据块按任意不重复的方式分发给所述多个从电路。
2.根据权利要求1所述的方法,其特征在于,所述将OP(B)广播给所述多个从电路;所述多个从电路并行执行基础数据块与OP(B)的内积运算得到多个处理结果,将多个处理结果发送至所述主电路具体包括:
所述主电路将所述OP(B)的前α列广播给所述多个从电路,所述多个从电路并行执行基础数据块与前α列的内积运算得到多个前处理结果,将所述多个前处理结果发送至所述主电路,所述主电路将所述OP(B)的中β列广播给所述多个从电路,所述多个从电路并行执行基础数据块与中β列的内积运算得到多个中处理结果,将所述多个中处理结果发送至所述主电路;所述主电路将所述OP(B)的后γ列广播给所述多个从电路,所述多个从电路并行执行基础数据块与后γ列的内积运算得到多个后处理结果,将所述多个后处理结果发送至所述主电路,所述主电路将多个前处理结果、多个中处理结果以及多个后处理结果按前、中、后组合一起得到矩阵乘积结果。
3.根据权利要求1-2任意一项所述的方法,其特征在于,所述芯片装置还包括:分支电路,所述分支电路连接所述主电路与多个从电路,所述方法还包括:
所述分支电路转发所述主电路与多个从电路之间的数据。
4.根据权利要求1-2任意一项所述的方法,其特征在于,所述主电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。
5.根据权利要求1-2任意一项所述的方法,其特征在于,
所述OP操作具体包括:转置操作、非线性函数运算或池化操作。
6.一种芯片装置,所述芯片装置包括:主电路和多个从电路,主电路和多个从电路物理连接,所述芯片装置为一个单独的物理芯片或集成在其他的芯片内;
所述主电路,用于接收矩阵A、矩阵B以及GEMM指令,将矩阵A以及矩阵B分别执行OP操作得到OP(A)以及OP(B),将OP(A)拆分成M个基础数据块,将M个基础数据块分发给所述多个从电路,将OP(B)广播给所述多个从电路;
所述多个从电路,用于并行执行基础数据块与OP(B)的内积运算得到多个处理结果,将多个处理结果发送至所述主电路;
所述主电路,还用于将所述多个处理结果拼接得到矩阵乘积结果,将矩阵乘积结果与alpha相乘后与beta*C相加得到所述GEMM运算结果;
所述alpha、所述beta为标量,所述C为输出矩阵;
所述将M个基础数据块分发给所述多个从电路具体包括:
将所述M个基础数据块按任意不重复的方式分发给所述多个从电路。
7.一种计算装置,其特征在于,所述计算装置包括如权利要求6所述的芯片装置。
8.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910530860.9A CN110245751B (zh) | 2017-08-31 | 2017-08-31 | 一种gemm运算方法及装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910530860.9A CN110245751B (zh) | 2017-08-31 | 2017-08-31 | 一种gemm运算方法及装置 |
CN201780002287.3A CN109729734B8 (zh) | 2017-08-31 | 2017-08-31 | 芯片装置及相关产品 |
PCT/CN2017/099991 WO2019041251A1 (zh) | 2017-08-31 | 2017-08-31 | 芯片装置及相关产品 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780002287.3A Division CN109729734B8 (zh) | 2017-08-31 | 2017-08-31 | 芯片装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110245751A CN110245751A (zh) | 2019-09-17 |
CN110245751B true CN110245751B (zh) | 2020-10-09 |
Family
ID=65436282
Family Applications (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910531031.2A Active CN110222308B (zh) | 2017-08-31 | 2017-08-31 | 一种矩阵乘矩阵运算方法及装置 |
CN201910534528.XA Active CN110245752B (zh) | 2017-08-31 | 2017-08-31 | 一种使用芯片装置进行全连接运算方法及装置 |
CN201910530860.9A Active CN110245751B (zh) | 2017-08-31 | 2017-08-31 | 一种gemm运算方法及装置 |
CN201910534527.5A Active CN110083390B (zh) | 2017-08-31 | 2017-08-31 | 一种gemv运算运算方法及装置 |
CN202010628834.2A Pending CN111860815A (zh) | 2017-08-31 | 2017-08-31 | 一种卷积运算方法及装置 |
CN201910102972.4A Active CN109902804B (zh) | 2017-08-31 | 2017-08-31 | 一种池化运算方法及装置 |
CN201910534118.5A Active CN110231958B (zh) | 2017-08-31 | 2017-08-31 | 一种矩阵乘向量运算方法及装置 |
CN201780002287.3A Active CN109729734B8 (zh) | 2017-08-31 | 2017-08-31 | 芯片装置及相关产品 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910531031.2A Active CN110222308B (zh) | 2017-08-31 | 2017-08-31 | 一种矩阵乘矩阵运算方法及装置 |
CN201910534528.XA Active CN110245752B (zh) | 2017-08-31 | 2017-08-31 | 一种使用芯片装置进行全连接运算方法及装置 |
Family Applications After (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910534527.5A Active CN110083390B (zh) | 2017-08-31 | 2017-08-31 | 一种gemv运算运算方法及装置 |
CN202010628834.2A Pending CN111860815A (zh) | 2017-08-31 | 2017-08-31 | 一种卷积运算方法及装置 |
CN201910102972.4A Active CN109902804B (zh) | 2017-08-31 | 2017-08-31 | 一种池化运算方法及装置 |
CN201910534118.5A Active CN110231958B (zh) | 2017-08-31 | 2017-08-31 | 一种矩阵乘向量运算方法及装置 |
CN201780002287.3A Active CN109729734B8 (zh) | 2017-08-31 | 2017-08-31 | 芯片装置及相关产品 |
Country Status (7)
Country | Link |
---|---|
US (7) | US11409535B2 (zh) |
EP (6) | EP3654210A1 (zh) |
JP (1) | JP7065877B2 (zh) |
KR (3) | KR102467688B1 (zh) |
CN (8) | CN110222308B (zh) |
TW (1) | TWI749249B (zh) |
WO (1) | WO2019041251A1 (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992743B (zh) * | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
CN116991226A (zh) * | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
CN110210610B (zh) * | 2018-03-27 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
CN110162799B (zh) * | 2018-11-28 | 2023-08-04 | 腾讯科技(深圳)有限公司 | 模型训练方法、机器翻译方法以及相关装置和设备 |
US11175946B2 (en) * | 2018-12-06 | 2021-11-16 | Advanced Micro Devices, Inc. | Pipelined matrix multiplication at a graphics processing unit |
US11657119B2 (en) * | 2018-12-10 | 2023-05-23 | Advanced Micro Devices, Inc. | Hardware accelerated convolution |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
WO2021009901A1 (ja) * | 2019-07-18 | 2021-01-21 | 技術研究組合光電子融合基盤技術研究所 | 並列計算方法およびシステム |
US11481471B2 (en) * | 2019-08-16 | 2022-10-25 | Meta Platforms, Inc. | Mapping convolution to a matrix processor unit |
CN110516793B (zh) * | 2019-08-27 | 2022-06-17 | Oppo广东移动通信有限公司 | 一种池化处理方法及装置、存储介质 |
CN110826687B (zh) * | 2019-08-30 | 2023-11-21 | 安谋科技(中国)有限公司 | 数据处理方法及其装置、介质和*** |
US20210150313A1 (en) * | 2019-11-15 | 2021-05-20 | Samsung Electronics Co., Ltd. | Electronic device and method for inference binary and ternary neural networks |
KR20210071471A (ko) * | 2019-12-06 | 2021-06-16 | 삼성전자주식회사 | 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법 |
CN111161705B (zh) * | 2019-12-19 | 2022-11-18 | 寒武纪(西安)集成电路有限公司 | 语音转换方法及装置 |
CN111126582B (zh) * | 2019-12-20 | 2024-04-05 | 上海寒武纪信息科技有限公司 | 数据处理方法和相关产品 |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US10713493B1 (en) * | 2020-02-06 | 2020-07-14 | Shenzhen Malong Technologies Co., Ltd. | 4D convolutional neural networks for video recognition |
CN113743598B (zh) * | 2020-05-27 | 2023-08-04 | 杭州海康威视数字技术股份有限公司 | 一种ai芯片的运行方式的确定方法和装置 |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
CN114115995A (zh) * | 2020-08-27 | 2022-03-01 | 华为技术有限公司 | 人工智能芯片及运算板卡、数据处理方法及电子设备 |
CN112491555B (zh) * | 2020-11-20 | 2022-04-05 | 山西智杰软件工程有限公司 | 医疗电子签名的处理方法及电子设备 |
CN112416433B (zh) * | 2020-11-24 | 2023-01-17 | 中科寒武纪科技股份有限公司 | 一种数据处理装置、数据处理方法及相关产品 |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
CN112953701B (zh) * | 2021-02-04 | 2023-10-31 | 沈阳建筑大学 | 一种四维混沌电路装置 |
CN112799598B (zh) * | 2021-02-08 | 2022-07-15 | 清华大学 | 一种数据处理方法、处理器及电子设备 |
CN113240570B (zh) * | 2021-04-13 | 2023-01-06 | 华南理工大学 | 一种GEMM运算加速器及基于GoogLeNet的图像处理加速方法 |
CN112990370B (zh) * | 2021-04-26 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 图像数据的处理方法和装置、存储介质及电子设备 |
CN115481713A (zh) * | 2021-06-15 | 2022-12-16 | 瑞昱半导体股份有限公司 | 改进卷积神经网络进行计算的方法 |
KR20230068572A (ko) * | 2021-11-11 | 2023-05-18 | 삼성전자주식회사 | 메모리 어레이 내의 연결 회로 |
CN116150555A (zh) * | 2021-11-19 | 2023-05-23 | 中科寒武纪科技股份有限公司 | 计算装置、利用计算装置实施卷积运算的方法及相关产品 |
CN114936633B (zh) * | 2022-06-15 | 2023-06-30 | 北京爱芯科技有限公司 | 用于转置运算的数据处理单元及图像转置运算方法 |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214160A (zh) * | 2011-07-08 | 2011-10-12 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
CN103631761A (zh) * | 2012-08-29 | 2014-03-12 | 睿励科学仪器(上海)有限公司 | 并行处理架构进行矩阵运算并用于严格波耦合分析的方法 |
CN105426344A (zh) * | 2015-11-09 | 2016-03-23 | 南京大学 | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 |
CN105608056A (zh) * | 2015-11-09 | 2016-05-25 | 南京大学 | 一种基于Flink的大规模矩阵并行化的计算方法 |
CN105956659A (zh) * | 2016-05-11 | 2016-09-21 | 北京比特大陆科技有限公司 | 数据处理装置和***、服务器 |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5023833A (en) * | 1987-12-08 | 1991-06-11 | California Institute Of Technology | Feed forward neural network for unary associative memory |
US5956703A (en) * | 1995-07-28 | 1999-09-21 | Delco Electronics Corporation | Configurable neural network integrated circuit |
JPH117438A (ja) * | 1997-06-18 | 1999-01-12 | Fuji Xerox Co Ltd | 積和演算処理方法、装置及び記録媒体 |
JP2001188767A (ja) * | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
US7672952B2 (en) * | 2000-07-13 | 2010-03-02 | Novell, Inc. | System and method of semantic correlation of rich content |
US6925479B2 (en) * | 2001-04-30 | 2005-08-02 | Industrial Technology Research Institute | General finite-field multiplier and method of the same |
US7065544B2 (en) * | 2001-11-29 | 2006-06-20 | Hewlett-Packard Development Company, L.P. | System and method for detecting repetitions in a multimedia stream |
US7737994B1 (en) * | 2003-09-26 | 2010-06-15 | Oracle America, Inc. | Large-kernel convolution using multiple industry-standard graphics accelerators |
US20050125477A1 (en) * | 2003-12-04 | 2005-06-09 | Genov Roman A. | High-precision matrix-vector multiplication on a charge-mode array with embedded dynamic memory and stochastic method thereof |
US7634137B2 (en) * | 2005-10-14 | 2009-12-15 | Microsoft Corporation | Unfolded convolution for fast feature extraction |
WO2007137047A2 (en) * | 2006-05-16 | 2007-11-29 | Greer Douglas S | Modeling the neocortex |
US8644643B2 (en) * | 2006-06-14 | 2014-02-04 | Qualcomm Incorporated | Convolution filtering in a graphics processor |
JP4942095B2 (ja) * | 2007-01-25 | 2012-05-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチコア・プロセッサにより演算を行う技術 |
US20080288756A1 (en) * | 2007-05-18 | 2008-11-20 | Johnson Timothy J | "or" bit matrix multiply vector instruction |
US8190543B2 (en) * | 2008-03-08 | 2012-05-29 | Tokyo Electron Limited | Autonomous biologically based learning tool |
WO2010043401A2 (en) * | 2008-10-15 | 2010-04-22 | Martin Vorbach | Data processing device |
US20100122070A1 (en) * | 2008-11-07 | 2010-05-13 | Nokia Corporation | Combined associative and distributed arithmetics for multiple inner products |
US20110025816A1 (en) * | 2009-07-31 | 2011-02-03 | Microsoft Corporation | Advertising as a real-time video call |
US8577950B2 (en) * | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US8583896B2 (en) * | 2009-11-13 | 2013-11-12 | Nec Laboratories America, Inc. | Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain |
US20110314256A1 (en) * | 2010-06-18 | 2011-12-22 | Microsoft Corporation | Data Parallel Programming Model |
US8577820B2 (en) * | 2011-03-04 | 2013-11-05 | Tokyo Electron Limited | Accurate and fast neural network training for library-based critical dimension (CD) metrology |
US10078620B2 (en) * | 2011-05-27 | 2018-09-18 | New York University | Runtime reconfigurable dataflow processor with multi-port memory access module |
DE102013104567A1 (de) * | 2013-05-03 | 2014-11-06 | Infineon Technologies Ag | Chipanordnung, Chipkartenanordnung und Verfahren zum Herstellen einer Chipanordnung |
CN103440121B (zh) * | 2013-08-20 | 2016-06-29 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
DE102013109200A1 (de) * | 2013-08-26 | 2015-02-26 | Infineon Technologies Austria Ag | Chip, Chip-Anordnung und Verfahren zum Herstellen eines Chips |
CN104425299B (zh) * | 2013-08-27 | 2017-08-11 | 珠海艾派克微电子有限公司 | 芯片加工装置以及应用芯片加工装置进行芯片加工的方法 |
US20150324686A1 (en) * | 2014-05-12 | 2015-11-12 | Qualcomm Incorporated | Distributed model learning |
CN104036451B (zh) * | 2014-06-20 | 2018-12-11 | 深圳市腾讯计算机***有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104317352B (zh) * | 2014-10-13 | 2017-10-24 | 中国科学院光电技术研究所 | 一种自适应光学控制***快速去倾斜分量处理方法 |
CN104346318B (zh) * | 2014-10-15 | 2017-03-15 | 中国人民解放军国防科学技术大学 | 面向通用多核dsp的矩阵乘加速方法 |
CN104463324A (zh) * | 2014-11-21 | 2015-03-25 | 长沙马沙电子科技有限公司 | 一种基于大规模高性能集群的卷积神经网络并行处理方法 |
CN105701120B (zh) * | 2014-11-28 | 2019-05-03 | 华为技术有限公司 | 确定语义匹配度的方法和装置 |
CN104992430B (zh) * | 2015-04-14 | 2017-12-22 | 杭州奥视图像技术有限公司 | 基于卷积神经网络的全自动的三维肝脏分割方法 |
CN104866855A (zh) * | 2015-05-07 | 2015-08-26 | 华为技术有限公司 | 一种图像特征提取方法及装置 |
US10489703B2 (en) | 2015-05-20 | 2019-11-26 | Nec Corporation | Memory efficiency for convolutional neural networks operating on graphics processing units |
US10417555B2 (en) * | 2015-05-29 | 2019-09-17 | Samsung Electronics Co., Ltd. | Data-optimized neural network traversal |
CN104866904B (zh) * | 2015-06-16 | 2019-01-01 | 中电科软件信息服务有限公司 | 一种基于spark的遗传算法优化的BP神经网络并行化方法 |
CN105005911B (zh) * | 2015-06-26 | 2017-09-19 | 深圳市腾讯计算机***有限公司 | 深度神经网络的运算***及运算方法 |
CN106293893B (zh) * | 2015-06-26 | 2019-12-06 | 阿里巴巴集团控股有限公司 | 作业调度方法、装置及分布式*** |
CN105608490B (zh) * | 2015-07-29 | 2018-10-26 | 上海磁宇信息科技有限公司 | 细胞阵列计算***以及其中的通信方法 |
US10970617B2 (en) * | 2015-08-21 | 2021-04-06 | Institute Of Automation Chinese Academy Of Sciences | Deep convolutional neural network acceleration and compression method based on parameter quantification |
CN105260776B (zh) * | 2015-09-10 | 2018-03-27 | 华为技术有限公司 | 神经网络处理器和卷积神经网络处理器 |
CN106548124B (zh) * | 2015-09-17 | 2021-09-07 | 松下知识产权经营株式会社 | 主题推定***、主题推定方法 |
CN106485322B (zh) * | 2015-10-08 | 2019-02-26 | 上海兆芯集成电路有限公司 | 同时执行长短期记忆胞计算的神经网络单元 |
EP3154001B1 (en) * | 2015-10-08 | 2019-07-17 | VIA Alliance Semiconductor Co., Ltd. | Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US11024024B2 (en) * | 2015-12-15 | 2021-06-01 | The Regents Of The University Of California | Systems and methods for analyzing perfusion-weighted medical imaging using deep neural networks |
US10482380B2 (en) * | 2015-12-30 | 2019-11-19 | Amazon Technologies, Inc. | Conditional parallel processing in fully-connected neural networks |
CN107578099B (zh) * | 2016-01-20 | 2021-06-11 | 中科寒武纪科技股份有限公司 | 计算装置和方法 |
CN110135581B (zh) * | 2016-01-20 | 2020-11-06 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络反向运算的装置和方法 |
CN109242094B (zh) * | 2016-01-20 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN108510064B (zh) * | 2016-04-18 | 2021-12-10 | 中国科学院计算技术研究所 | 包括多个核心处理模块的人工神经网络的处理***及方法 |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
US10796220B2 (en) * | 2016-05-24 | 2020-10-06 | Marvell Asia Pte, Ltd. | Systems and methods for vectorized FFT for multi-dimensional convolution operations |
KR102120396B1 (ko) * | 2016-05-26 | 2020-06-08 | 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 | 심층 신경망용 가속기 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算***和电子设备 |
CN106203621B (zh) * | 2016-07-11 | 2019-04-30 | 北京深鉴智能科技有限公司 | 用于卷积神经网络计算的处理器 |
CN106228240B (zh) * | 2016-07-30 | 2020-09-01 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
US10891538B2 (en) * | 2016-08-11 | 2021-01-12 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US20180046903A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
CN106407561B (zh) * | 2016-09-19 | 2020-07-03 | 复旦大学 | 一种并行gpdt算法在多核soc上的划分方法 |
CN106446546B (zh) * | 2016-09-23 | 2019-02-22 | 西安电子科技大学 | 基于卷积自动编解码算法的气象数据填补方法 |
CN106650922B (zh) * | 2016-09-29 | 2019-05-03 | 清华大学 | 硬件神经网络转换方法、计算装置、软硬件协作*** |
CN106504232B (zh) * | 2016-10-14 | 2019-06-14 | 北京网医智捷科技有限公司 | 一种基于3d卷积神经网络的肺部结节自动检测*** |
US9779786B1 (en) * | 2016-10-26 | 2017-10-03 | Xilinx, Inc. | Tensor operations and acceleration |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN110050267B (zh) * | 2016-12-09 | 2023-05-26 | 北京地平线信息技术有限公司 | 用于数据管理的***和方法 |
CN106844294B (zh) * | 2016-12-29 | 2019-05-03 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
US10402527B2 (en) * | 2017-01-04 | 2019-09-03 | Stmicroelectronics S.R.L. | Reconfigurable interconnect |
IT201700008949A1 (it) * | 2017-01-27 | 2018-07-27 | St Microelectronics Srl | Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti |
CN106940815B (zh) * | 2017-02-13 | 2020-07-28 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN106951395B (zh) * | 2017-02-13 | 2018-08-17 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
US11144820B2 (en) * | 2017-02-28 | 2021-10-12 | Microsoft Technology Licensing, Llc | Hardware node with position-dependent memories for neural network processing |
CN107066239A (zh) * | 2017-03-01 | 2017-08-18 | 智擎信息***(上海)有限公司 | 一种实现卷积神经网络前向计算的硬件结构 |
US10528147B2 (en) * | 2017-03-06 | 2020-01-07 | Microsoft Technology Licensing, Llc | Ultrasonic based gesture recognition |
WO2018174935A1 (en) * | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and apparatus for matrix operations |
CN106970896B (zh) * | 2017-03-30 | 2020-05-12 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
US10186011B2 (en) * | 2017-04-28 | 2019-01-22 | Intel Corporation | Programmable coarse grained and sparse matrix compute hardware with advanced scheduling |
US10169298B1 (en) * | 2017-05-11 | 2019-01-01 | NovuMind Limited | Native tensor processor, using outer product unit |
WO2018222896A1 (en) * | 2017-05-31 | 2018-12-06 | Intel Corporation | Gradient-based training engine for quaternion-based machine-learning systems |
US10167800B1 (en) * | 2017-08-18 | 2019-01-01 | Microsoft Technology Licensing, Llc | Hardware node having a matrix vector unit with block-floating point processing |
US10963780B2 (en) * | 2017-08-24 | 2021-03-30 | Google Llc | Yield improvements for three-dimensionally stacked neural network accelerators |
US20190102671A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Inner product convolutional neural network accelerator |
US11222256B2 (en) * | 2017-10-17 | 2022-01-11 | Xilinx, Inc. | Neural network processing system having multiple processors and a neural network accelerator |
-
2017
- 2017-08-31 EP EP19212368.5A patent/EP3654210A1/en active Pending
- 2017-08-31 EP EP19212365.1A patent/EP3654209A1/en active Pending
- 2017-08-31 JP JP2019553977A patent/JP7065877B2/ja active Active
- 2017-08-31 EP EP19211995.6A patent/EP3651030A1/en active Pending
- 2017-08-31 CN CN201910531031.2A patent/CN110222308B/zh active Active
- 2017-08-31 CN CN201910534528.XA patent/CN110245752B/zh active Active
- 2017-08-31 KR KR1020197029020A patent/KR102467688B1/ko active IP Right Grant
- 2017-08-31 EP EP19212010.3A patent/EP3654208A1/en active Pending
- 2017-08-31 KR KR1020197037903A patent/KR102477404B1/ko active IP Right Grant
- 2017-08-31 KR KR1020197037895A patent/KR102481256B1/ko active IP Right Grant
- 2017-08-31 CN CN201910530860.9A patent/CN110245751B/zh active Active
- 2017-08-31 CN CN201910534527.5A patent/CN110083390B/zh active Active
- 2017-08-31 CN CN202010628834.2A patent/CN111860815A/zh active Pending
- 2017-08-31 CN CN201910102972.4A patent/CN109902804B/zh active Active
- 2017-08-31 EP EP19212002.0A patent/EP3651031A1/en active Pending
- 2017-08-31 CN CN201910534118.5A patent/CN110231958B/zh active Active
- 2017-08-31 EP EP17923228.5A patent/EP3605402B1/en active Active
- 2017-08-31 CN CN201780002287.3A patent/CN109729734B8/zh active Active
- 2017-08-31 WO PCT/CN2017/099991 patent/WO2019041251A1/zh unknown
-
2018
- 2018-07-25 TW TW107125681A patent/TWI749249B/zh active
- 2018-10-23 US US16/168,778 patent/US11409535B2/en active Active
-
2019
- 2019-10-24 US US16/663,210 patent/US11354133B2/en active Active
- 2019-10-24 US US16/663,174 patent/US11775311B2/en active Active
- 2019-10-24 US US16/663,164 patent/US11531553B2/en active Active
- 2019-10-24 US US16/663,206 patent/US11334363B2/en active Active
- 2019-10-24 US US16/663,205 patent/US11347516B2/en active Active
- 2019-10-24 US US16/663,181 patent/US11561800B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214160A (zh) * | 2011-07-08 | 2011-10-12 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
CN103631761A (zh) * | 2012-08-29 | 2014-03-12 | 睿励科学仪器(上海)有限公司 | 并行处理架构进行矩阵运算并用于严格波耦合分析的方法 |
CN105426344A (zh) * | 2015-11-09 | 2016-03-23 | 南京大学 | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 |
CN105608056A (zh) * | 2015-11-09 | 2016-05-25 | 南京大学 | 一种基于Flink的大规模矩阵并行化的计算方法 |
CN105956659A (zh) * | 2016-05-11 | 2016-09-21 | 北京比特大陆科技有限公司 | 数据处理装置和***、服务器 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245751B (zh) | 一种gemm运算方法及装置 | |
CN109615061B (zh) | 一种卷积运算方法及装置 | |
JP6888073B2 (ja) | チップ装置および関連製品 | |
JP6888074B2 (ja) | チップ装置および関連製品 | |
CN109615062B (zh) | 一种卷积运算方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |