CN113918120A - 计算装置、神经网络处理设备、芯片及处理数据的方法 - Google Patents
计算装置、神经网络处理设备、芯片及处理数据的方法 Download PDFInfo
- Publication number
- CN113918120A CN113918120A CN202111218718.4A CN202111218718A CN113918120A CN 113918120 A CN113918120 A CN 113918120A CN 202111218718 A CN202111218718 A CN 202111218718A CN 113918120 A CN113918120 A CN 113918120A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- multiply
- vector
- accumulators
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000012545 processing Methods 0.000 title claims abstract description 25
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 14
- 239000011159 matrix material Substances 0.000 claims abstract description 290
- 239000013598 vector Substances 0.000 claims abstract description 140
- 238000004364 calculation method Methods 0.000 claims abstract description 48
- 238000013500 data storage Methods 0.000 claims abstract description 17
- 230000005540 biological transmission Effects 0.000 abstract description 11
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000005192 partition Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
提供了一种计算装置、神经网络处理设备、芯片及处理数据的方法。该计算装置包括:数据存储器,用于存储第一矩阵和第二矩阵的矩阵数据,第一矩阵为m×s的矩阵,第二矩阵为s×n的矩阵,矩阵数据包括s组数据,其中每组数据包括第一矩阵中的一个列向量以及第二矩阵中的与列向量索引相同的一个行向量;计算模块,与数据存储器相连,用于执行第一矩阵和第二矩阵的乘法运算;调度模块,与数据存储器相连,用于控制数据存储器向计算模块输入s组数据,计算模块基于s组数据执行s次向量外积运算,以得到第一矩阵和第二矩阵的乘积结果。本申请实施例提出一种基于向量外积的矩阵乘法运算,具有更高的数据复用率,因此能够降低数据传输量和传输功耗。
Description
技术领域
本申请涉及数据处理领域,并且更为具体地,涉及一种计算装置、神经网络处理设备、芯片及处理数据的方法。
背景技术
很多数据处理任务的本质是矩阵乘法运算。例如,卷积运算任务、全连接运算任务的本质均为矩阵乘法。
传统的矩阵乘法运算方式采用基于向量内积的运算方式。针对矩阵数据中的同一元素,基于向量内积的运算方式需要将该元素对应的数据进行大量的重复调度,导致矩阵乘法运算过程需要传输的数据量大、传输功耗高。
发明内容
本申请提供一种计算装置、神经网络处理设备、芯片及处理数据的方法,以降低矩阵乘法运算需要传输的数据量和传输功耗。
第一方面,提供一种计算装置,包括:数据存储器,用于存储第一矩阵和第二矩阵的矩阵数据,所述第一矩阵为m×s的矩阵,所述第二矩阵为s×n的矩阵,所述矩阵数据包括s组数据,其中每组数据包括所述第一矩阵中的一个列向量以及所述第二矩阵中的与所述列向量索引相同的一个行向量,其中s、m、n均为大于或等于1的正整数;计算模块,与所述数据存储器相连,用于执行所述第一矩阵和所述第二矩阵的乘法运算;调度模块,与所述数据存储器相连,用于控制所述数据存储器向所述计算模块输入所述s组数据,所述计算模块基于所述s组数据中的每组数据中的列向量和行向量执行一次向量外积运算,以得到所述s组数据一一对应的s个m×n的中间结果矩阵,并将所述s个m×n的中间结果矩阵中的对应元素相加,得到所述第一矩阵和所述第二矩阵的乘积结果。
第二方面,提供一种神经网络处理设备,包括如第一方面所述的计算装置。
第三方面,提供一种芯片,包括如第一方面或第二方面所述的计算装置。
第四方面,提供一种处理数据的方法,所述方法应用于计算装置,所述计算装置包括:数据存储器,用于存储第一矩阵和第二矩阵的矩阵数据,所述第一矩阵为m×s的矩阵,所述第二矩阵为s×n的矩阵,所述矩阵数据包括s组数据,其中每组数据包括所述第一矩阵中的一个列向量以及所述第二矩阵中的与所述列向量索引相同的一个行向量,其中s、m、n均为大于或等于1的正整数;计算模块,与所述数据存储器相连,用于执行所述第一矩阵和所述第二矩阵的乘法运算;所述方法包括:控制所述数据存储器向所述计算模块输入所述s组数据;基于所述s组数据中的每组数据中的列向量和行向量执行一次向量外积运算,以得到所述s组数据一一对应的s个m×n的中间结果矩阵;将所述s个m×n的中间结果矩阵中的对应元素相加,得到所述第一矩阵和所述第二矩阵的乘积结果。
本申请实施例提出一种基于向量外积的矩阵乘法运算,与传统的基于向量内积的矩阵乘法运算相比,基于向量外积的矩阵乘法运算具有更高的数据复用率,因此能够降低数据的传输量和传输功耗。
附图说明
图1是基于向量内积的矩阵乘法示例图。
图2是本申请实施例提供的计算装置的结构示意图。
图3是本申请实施例提供的计算装置的硬件架构示例图。
图4是本申请实施例提供的基于向量外积的矩阵乘法示例图。
图5是将图4的方法应用于图3所示的硬件架构时的数据映射方式示例图。
图6是卷积运算的示例图。
图7是利用本申请实施例提供的基于向量外积的矩阵乘法执行图6所示的卷积运算的示例图。
图8是利用本申请实施例提供的基于向量外积的矩阵乘法执行全连接运算的示例图。
图9是本申请实施例提供的装置的结构示意图。
图10是本申请实施例提供的处理数据的方法的示意性流程图。
具体实施方式
为了便于理解,先对本申请实施例涉及的一些相关概念进行介绍。
向量内积
两个向量的内积运算也可称为两个向量的点乘运算,即对两个向量对应位置的元素一一相乘之后求和。两个向量的内积运算的结果为一个数值(或称一个标量)。以向量a=(a1,a2,...,an)和向量b=(b1,b2,...,bn)为例,向量a和向量b的内积的计算方式为:a1b1+a2b2+...+anbn。
向量外积
矩阵乘法运算
矩阵的乘法运算可以转换成矩阵的行列向量的向量内积运算。下面结合图1,以m×s的第一矩阵12以及s×n的第二矩阵14为例,对矩阵的乘法运算进行举例说明。
如图1所示,第一矩阵12包括m个行向量,第二矩阵14包括n个列向量。第一矩阵12和第二矩阵14相乘得到的结果矩阵16为m×n的矩阵。第一矩阵12和第二矩阵14的乘法运算可以看成是第一矩阵的m个行向量与第二矩阵的n个列向量两两之间的向量内积运算。每次向量内积运算可以得到结果矩阵16中的一个元素161的取值。按照类似的方式,经过m×n次向量内积运算之后,即可得到结果矩阵16中的所有元素的取值。
矩阵分块
将矩阵B分解成如下4个分块矩阵:
接着,可以将矩阵A和矩阵B的乘法运算转换成如下形式的分块矩阵运算:
在介绍上述基本概念之后,下文对本申请实施例涉及的计算装置的整体架构进行详细描述。本申请提及的计算装置可以指基于硬件架构的、且能够执行两个矩阵的乘法运算的任意类型的计算装置。
为了便于理解,先结合图2,对本申请实施例提及的计算装置20的整体架构进行介绍。
如图2所示,该计算装置20可以包括数据存储器22、计算模块24以及调度模块26。
数据存储器22可用于存储第一矩阵和第二矩阵的矩阵数据。为了便于描述,下文以第一矩阵为m×s的矩阵,第二矩阵为s×n的矩阵为例进行说明。在第一矩阵中,m表示第一矩阵的行索引,s表示第一矩阵的列索引。m和s通常为大于1的正整数。但是,本申请实施例不限于此。在一些实施例中,m和s之一也可以等于1,在这种情况下,第一矩阵可以理解为一个向量。在第二矩阵中,s表示第二矩阵的行索引,n表示第二矩阵的列索引。s和n通常为大于1的正整数。但是,本申请实施例不限于此。在一些实施例中,s和n之一也可以等于1,在这种情况下,第二矩阵可以理解为一个向量。
本申请实施例对第一矩阵和第二矩阵的矩阵数据的数据内容不做具体限定,这与计算装置20执行的计算任务有关。以计算装置20执行的是卷积运算任务为例(卷积运算本质上为矩阵乘法,后文会结合图6对卷积运算进行举例说明,具体可以参见图6的相关描述),则第一矩阵中的数据可以是输入特征图的数据,第二矩阵中的数据可以是卷积核中的权重数据。
数据存储器22例如可以包括高速随机存取存储器(random access memory,RAM)。该数据存储器22例如可以是神经网络处理器(neural-network processing units,NPU)的数据缓存。
计算模块24也可称为处理单元(processing element,PE)或运算电路。计算模块24可以与数据存储器22相连。计算模块24可以负责完成计算装置20上的部分或全部的计算任务。例如,计算模块24可用于执行第一矩阵和第二矩阵的乘法运算。
计算模块24的实现方式可以有多种。由于矩阵乘法运算本质上是乘累加运算,因此,在一些实施例中,计算模块24可以是基于乘累加器的计算模块。
图3给出了计算模块24的一种可能的实现方式。如图3所示,该计算模块24中的基本单元为乘累加器241。乘累加器241可以包括一个乘法器2411和一个加法器2412。乘法器2411的输入分别为第一矩阵的一个元素和第二矩阵的一个元素。以卷积运算为例,则第一矩阵中的数据为输入特征图中的数据,第二矩阵中的数据为卷积核中的权重数据。在这种情况下,乘法器2411的输入可以采用F和W表示。其中,F表示输入特征图中的特征数据;W表示卷积核中的权重数据。
计算模块24可以包括m×n个乘累加树242(图3中的一列乘累加器即对应一个乘累加树242)。乘累加树242可以包括s个乘累加器241。该s个乘累加器241通过数据线2413首尾相连,形成了一条数据运算的流水线。该流水线能够将该乘累加树242中的s个乘累加器的计算结果逐级累加在一起。
以图3中的附图标记242所示的乘累加树为例,该乘累加树242中的乘累加器241a表示的是该乘累加树242的第一级乘累加器,乘累加器241s表示的是该乘累加树242的最后一级乘累加器。在运算过程中,该乘累加树242可以利用其内部的s个乘累加器执行s次乘法运算,然后,乘累加树242可以从第一级乘累加器241a开始,将s次乘法结果逐级向下传递至最后一级乘累加器241s,并在传递过程中将各级乘累加器的乘法结果累加。经过上述过程,最后一级乘累加器241s输出的即为该乘累加树242中的s个乘累加器执行的s个乘法运算的累加和。
重新参见图2,调度模块26可以与数据存储器22相连。调度模块26例如可以是具有数据调度功能的控制器。调度模块26可以控制数据存储器22向计算模块24输入待乘的第一矩阵和第二矩阵的矩阵数据,从而利用计算模块24完成第一矩阵和第二矩阵的矩阵运算。
受到硬件结构的影响,数据存储器22的线宽通常有一定的限制。因此,调度模块26通常会按照一定的数据调度策略对矩阵数据进行调度。作为一种可能的数据调度方式,调度模块26可以按照图1所示的矩阵乘法运算方式,将第一矩阵的一个行向量和第二矩阵的一个列向量输入至计算模块24。在得到第一矩阵的行向量和第二矩阵的列向量之后,计算模块24会按照向量内积的方式执行一次乘累加运算,从而得到结果矩阵中的一个元素的取值,具体的计算方式可以参见图1的相关描述。以图3所示的计算模块24为例,调度模块26可以将第一矩阵的行向量(包括s个元素)和第二矩阵的列向量(包括s个元素)分别读入图3中的一个乘累加树242的s个乘累加器中。然后,该乘累加树242就可以执行s次乘法,并将该s次乘法的结果进行累加,得到结果矩阵中的一个元素的取值。
本申请实施例将上述数据调度和计算方式称为基于向量内积的矩阵乘法。采用基于向量内积的矩阵乘法,每执行一次向量内积运算,计算模块24可以得到结果矩阵中的一个元素的取值,执行m×n次向量内积运算,即可得到结果矩阵中的所有的m×n个元素的取值。但是,在计算该m×n个元素的取值的过程中,每计算其中一个元素的取值,需要向计算模块26输入2s个元素(第一矩阵的一行和第二矩阵的一列,共2s个元素)对应的数据量。因此,要想得到结果矩阵中的m×n个元素的取值,共需要输入2s×m×n个元素对应的数据量。在执行基于向量内积的矩阵乘法时,第一矩阵的行向量以及第二矩阵的列向量会被多次的重复调度。例如,由于第一矩阵的每个行向量均需要与第二矩阵的n个列向量相乘,因此,第一矩阵的每个行向量会被重复调度n次;同样地,由于第二矩阵的每个列向量均需要与第一矩阵的m个行向量相乘,因此,第二矩阵的每个列向量会被重复调度m次。这样大规模的数据重复调度势必会增大需要传输的数据量和传输功耗。
针对上述问题,本申请实施例提供一种基于向量外积的矩阵乘法,能够降低矩阵乘法运算过程中需要传输的数据量和传输功耗。
下面对基于向量外积的矩阵乘法进行详细描述。
第一矩阵和第二矩阵的矩阵数据可以包括s组数据。该s组数据中的每组数据可以包括第一矩阵中的一个列向量以及第二矩阵中的与列向量索引相同的一个行向量。例如,该s组数据中的第i组数据可以包括第一矩阵的第i个列向量与第二矩阵的第i个行向量。
调度模块26可以控制数据存储器22向计算模块24输入s组数据。例如,调度模块26可以向计算模块24依次输入s组数据。或者,调度模块26也可以一次性输入s组数据中的多组数据。
如图4所示,计算模块24可以基于s组数据中的每组数据中的列向量和行向量执行一次向量外积运算,以得到s组数据一一对应的s个m×n的中间结果矩阵(图4中的一个矩阵162代表一个m×n的中间结果矩阵),并将s个m×n的中间结果矩阵中的对应元素相加,得到第一矩阵和第二矩阵的乘积结果。示例性地,计算模块24可以从第一矩阵12的第0列和第二矩阵14的第0行开始,基于第一矩阵12的列向量0和第二矩阵的行向量0执行一次向量外积。待计算完毕之后,可以沿着图4中的第一矩阵12中的箭头方向,取第一矩阵12的列向量1,并沿着图4中的第二矩阵14中的箭头方向取第二矩阵14的行向量1,然后基于第一矩阵12的列向量1和第二矩阵的行向量1再执行一次向量外积。以此类推,计算模块24在完成s次向量外积运算之后,可以得到第一矩阵和第二矩阵的乘积结果。
本申请实施例将上述矩阵数据的调度和计算方式称为基于向量外积的矩阵乘法。基于向量外积的矩阵乘法执行一次向量外积运算需要第一矩阵的一个列向量和第二矩阵的一个行向量,共(m+n)个元素。要想得到第一矩阵和第二矩阵的乘积结果,基于向量外积的矩阵乘法需要执行s次上述向量外积运算,一共需要s×(m+n)个元素对应的数据量。前文提到,基于向量内积的矩阵乘法要想得到第一矩阵和第二矩阵的乘积结果,共需要输入2s×m×n个元素对应的数据量。二者相比,基于向量外积的矩阵乘法具有更高的数据复用率,因此能够很大程度降低需要通过数据存储器向计算模块传输的数据量,从而降低数据的传输功率。当计算模块采用芯片形式实现时,数据存储器需要传输的数据量的减少,意味着可以减少输入数据的线宽,这样有助于优化芯片的面积。
前文结合图3,给出了计算模块24的一种可能的实现方式。图3所示的硬件架构既适用于基于向量内积的矩阵乘法,也适用于基于向量外积的矩阵乘法。换句话说,基于向量外积的矩阵乘法与基于向量内积的矩阵乘法可以共用同一硬件架构。
下面结合图3和图5,对基于向量内积的矩阵乘法在图3所示的硬件架构上的实现方式进行更为详细地举例说明。
前文结合图3提到,该计算模块24包括m×n个乘累加树,每个乘累加树包括首尾依次相连的s个乘累加器(对应于图3或图5中的一列乘累加器)。可以将该m×n个乘累加树的乘累加器分成s组乘累加器,每组包括m×n个乘累加器,且该m×n个乘累加器分别属于m×n个乘累加树。也就是说,s组乘累加器中的每组乘累加器中的任意两个乘累加器来自m×n个乘累加树中的不同乘累加树。
以图5为例,可以将图5中的每行乘累加器243分为一组。这样一来,图5中的s行乘累加器即可形成上述s组乘累加器。实际计算过程中,计算模块24可以基于s组乘累加器分别执行上文提到的s次向量外积运算,从而得到s个m×n的中间结果矩阵。例如,在图5的示例中,计算模块24可以控制s行乘累加器中的第i行乘累加器执行第一矩阵的第i个列向量与第二矩阵的第i个行向量的向量外积运算,从而得到s个m×n的中间结果矩阵,计算完毕之后,该s个m×n的中间结果矩阵分别存储在图5所示的s×m×n个乘累加器中。
接着,计算模块24可以利用m×n个乘累加树提供的数据处理流水线,将s个m×n的中间结果矩阵中的对应元素相加,从而得到第一矩阵和第二矩阵的乘积结果。例如,计算模块24可以从每个乘累加树的第一级乘累加器开始,将每个乘累加树中的乘法结果累加起来,并在每个乘累加树的最后一级乘累加器输出一个乘累加的最终结果。该m×n个乘累加树输出的m×n个最终结果与基于向量内积的矩阵乘法得到的m×n个最终结果是相同的。
在一些实施例中,待执行乘法运算的两个矩阵(为了便于描述,下文将这两个矩阵称为第三矩阵和第四矩阵)的尺寸可能比较大。受到硬件处理能力的限制,计算装置20无法一次性执行完该两个矩阵的乘法运算。面对这种情况,可以先按照前文介绍的矩阵分块方式对第三矩阵和/或第四矩阵进行分块处理。例如,可以将第三矩阵分成A个分块(A个分块的尺寸均小于或等于m×s),并将第四矩阵分成B个分块(B个分块的尺寸均小于或等于s×n),从而使得计算装置20能够支持A个分块和B个分块两两之间的矩阵乘法运算。接着,计算装置20就可以按照前文介绍的基于向量外积的矩阵乘法,将A个分块和B个分块两两相乘,并基于A个分块和B个分块两两相乘的结果,得到第三矩阵和第四矩阵的乘积结果。
本申请实施例提供的计算装置可应用于各种需要进行矩阵乘法运算场景或运算任务中。举例说明,目前,神经网络已经广泛应用于各行各业。神经网络中的很多算子的本质均是矩阵乘法。例如,神经网络中经常运用的卷积运算和全连接运算,其本质就是矩阵乘法。因此,在一些实施例中,可以将本申请实施例提供的计算装置20用于执行神经网络运算,如用于执行卷积运算或全连接运算。以本申请实施例提供的计算装置20执行卷积运算为例,该计算装置20也可称为卷积设备、卷积处理器、卷积加速器、卷积加速引擎等。
下面对本申请实施例提供的计算装置在卷积运算和全连接运算场景下的运算方式进行举例说明。
卷积运算广泛应用于神经网络计算中。卷积运算的本质是两个矩阵的乘法运算。因此,与两个矩阵的乘法运算相同,卷积运算的核心运算是乘累加运算。
图6以1×1的卷积核为例,给出了卷积运算的一个示例。图6的左上角示出的是输入特征图像(inputfeaturemap)。M表示输入特征图的宽度,S表示输入特征图的通道数(通道例如可以是R、G、B)。图2的左下角示出的是卷积核(kernel),卷积核中的数据可以称为权重数据。N表示卷积核的数量。卷积核的通道数与输入特征图的通道数相等,均为S。图2右侧示出的是输出特征图(output feature map)。对于卷积运算而言,输出特征图的通道数等于卷积核的数量。
卷积运算的运算量通常较大,因此,采用上文提到的计算装置20执行卷积运算时,需要考虑该计算装置的硬件处理能力。例如,图6中的s、m、n为计算装置20能够一次处理的输入通道数目、特征图像宽度以及卷积核的数目。因此,在一些实施例,可以先把输入特征图和卷积核中的权重数据按照两个矩阵的形式进行排列,形成如图7所示的待执行矩阵乘法的第三矩阵和第四矩阵。第三矩阵的尺寸为M×S,第四矩阵的尺寸为S×N。接着,可以先按照前文介绍的矩阵分块方式对第三矩阵和/或第四矩阵进行分块处理。例如,可以将第三矩阵分成A个分块(A个分块的尺寸均小于或等于m×s),并将第四矩阵分成B个分块(B个分块的尺寸均小于或等于s×n),从而使得计算装置20能够支持A个分块和B个分块两两之间的矩阵乘法运算。接着,计算装置20就可以按照前文介绍的基于向量外积的调度方式,将A个分块和B个分块两两相乘,并基于A个分块和B个分块两两相乘的结果,得到第三矩阵和第四矩阵的乘积结果(即对A个分块和B个分块两两相乘的结果中的对应元素进行累加运算,得到第三矩阵和第四矩阵的乘积结果)。该第三矩阵和第四矩阵的乘积结果即可作为输出特征图中的数据。
需要说明的是,图6虽然是以1×1的卷积核为例对本申请实施例提供的卷积运算进行举例说明的,但本申请实施例不限于此,对于其他尺寸的卷积核,比如3×3,5×5,7×7等尺寸的卷积核,其核心也是矩阵的乘法运算,同样可以转换为基于向量外积的矩阵运算来减小数据的传输量和传输功耗。
由于卷积运算涉及大量的矩阵运算,因此将本申请实施例提供的计算装置应用于卷积运算,可以很大程度降低卷积运算过程需要传输的数据量,从而可以降低传输数据的功率和数据存储器的线宽。
全连接运算是矩阵乘法的一种特殊情况。参见图8,以前文提到的m×s的第一矩阵和s×n的第二矩阵的矩阵乘法为例,如果将m的取值设置为1,则第一矩阵和第二矩阵的乘法即可看成是全连接运算。
采用基于向量外积的矩阵乘法执行图8所述的全连接操作的过程与图4所示的过程是基本相同的,只不过,对于第一矩阵而言,其执行向量外积操作的列向量仅包含一个元素,得到的s个中间结果矩阵为s个大小为n的向量。
需要说明的是,本申请实施例提及的计算装置20除了包括上文提及的数据存储器22、计算模块24以及调度模块26之外,还可以包括其他各种类型的部件。例如,计算装置20还可以包括以下部件中的一种或多种:能够执行其他运算的计算模块(或运算电路,如执行激活运算的激活电路,执行池化运算的池化电路等)、寄存器,内部存储器等。
参见图9,本申请实施例还提供一种设备90。该设备90可以包括前文所述的计算装置20。在一些实施例中,该设备90可以为神经网络处理设备和/或芯片。在另一些实施例中,该设备90例如可以是移动终端(如手机)、计算机、服务器等。
上文结合图1至图9,详细描述了本申请的装置实施例,下面结合图10,详细描述本申请的方法实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面装置实施例。
图10是本申请实施例提供的处理数据的方法的示意性流程图。图10的方法可应用于计算装置。该计算装置可以是前文提及的计算装置20。图10的方法包括步骤S1010~S1030。
在步骤S1010,控制数据存储器向计算模块输入s组数据。
在步骤S1020,基于s组数据中的每组数据中的列向量和行向量执行一次向量外积运算,以得到s组数据一一对应的s个m×n的中间结果矩阵。
在步骤S1030,将s个m×n的中间结果矩阵中的对应元素相加,得到第一矩阵和第二矩阵的乘积结果。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种计算装置,其特征在于,包括:
数据存储器,用于存储第一矩阵和第二矩阵的矩阵数据,所述第一矩阵为m×s的矩阵,所述第二矩阵为s×n的矩阵,所述矩阵数据包括s组数据,其中每组数据包括所述第一矩阵中的一个列向量以及所述第二矩阵中的与所述列向量索引相同的一个行向量,其中s、m、n均为大于或等于1的正整数;
计算模块,与所述数据存储器相连,用于执行所述第一矩阵和所述第二矩阵的乘法运算;
调度模块,与所述数据存储器相连,用于控制所述数据存储器向所述计算模块输入所述s组数据,所述计算模块基于所述s组数据中的每组数据中的列向量和行向量执行一次向量外积运算,以得到所述s组数据一一对应的s个m×n的中间结果矩阵,并将所述s个m×n的中间结果矩阵中的对应元素相加,得到所述第一矩阵和所述第二矩阵的乘积结果。
2.根据权利要求1所述的计算装置,其特征在于:
所述计算模块包括m×n个乘累加树,所述m×n个乘累加树中的乘累加器形成s组乘累加器,所述s组乘累加器中的每组乘累加器包括m×n个乘累加器,所述m×n个乘累加器中的任意两个乘累加器属于所述m×n个乘累加树中的不同的乘累加树;
所述计算模块基于所述s组乘累加器分别执行所述s次向量外积运算,得到所述s个m×n的中间结果矩阵,并利用所述m×n个乘累加树,将所述s个m×n的中间结果矩阵中的对应元素相加,得到所述第一矩阵和所述第二矩阵的乘积结果。
3.根据权利要求2所述的计算装置,其特征在于,所述第一矩阵属于第三矩阵的A个分块中的一个分块,所述第二矩阵属于第四矩阵的B个分块中的一个分块,所述A个分块的尺寸均小于或等于m×s,所述B个分块的尺寸均小于或等于s×n,所述计算模块还用于将所述A个分块和所述B个分块两两相乘,并基于所述A个分块和所述B个分块两两相乘的结果,得到所述第三矩阵和所述第四矩阵的乘积结果,其中,A、B均为大于1的正整数。
4.根据权利要求3所述的计算装置,其特征在于,所述计算装置用于执行卷积运算,所述第三矩阵中的元素为输入特征图中的数据,所述第四矩阵中的元素为卷积核中的权重数据,其中,所述第三矩阵为M×S的矩阵,所述第四矩阵为S×N的矩阵,M表示所述输入特征图的宽度,S表示所述输入特征图的通道数,N表示卷积核的数量,M、S、N均为大于或等于1的正整数。
5.一种神经网络处理设备,其特征在于,包括如权利要求1-4中任一项所述的计算装置。
6.一种芯片,其特征在于,包括如权利要求1-4中任一项所述的计算装置。
7.一种处理数据的方法,其特征在于,所述方法应用于计算装置,所述计算装置包括:
数据存储器,用于存储第一矩阵和第二矩阵的矩阵数据,所述第一矩阵为m×s的矩阵,所述第二矩阵为s×n的矩阵,所述矩阵数据包括s组数据,其中每组数据包括所述第一矩阵中的一个列向量以及所述第二矩阵中的与所述列向量索引相同的一个行向量,其中s、m、n均为大于或等于1的正整数;
计算模块,与所述数据存储器相连,用于执行所述第一矩阵和所述第二矩阵的乘法运算;
所述方法包括:
控制所述数据存储器向所述计算模块输入所述s组数据;
基于所述s组数据中的每组数据中的列向量和行向量执行一次向量外积运算,以得到所述s组数据一一对应的s个m×n的中间结果矩阵;
将所述s个m×n的中间结果矩阵中的对应元素相加,得到所述第一矩阵和所述第二矩阵的乘积结果。
8.根据权利要求7所述的方法,其特征在于,所述计算模块包括m×n个乘累加树,所述m×n个乘累加树中的乘累加器形成s组乘累加器,所述s组乘累加器中的每组乘累加器包括m×n个乘累加器,所述m×n个乘累加器中的任意两个乘累加器属于所述m×n个乘累加树中的不同的乘累加树,所述计算模块基于所述s组乘累加器分别执行所述s次向量外积运算,得到所述s个m×n的中间结果矩阵,并利用所述m×n个乘累加树,将所述s个m×n的中间结果矩阵中的对应元素相加,得到所述第一矩阵和所述第二矩阵的乘积结果。
9.根据权利要求8所述的方法,其特征在于,所述第一矩阵属于第三矩阵的A个分块中的一个分块,所述第二矩阵属于第四矩阵的B个分块中的一个分块,所述A个分块的尺寸均小于或等于m×s,所述B个分块的尺寸均小于或等于s×n,
所述方法还包括:
控制所述计算模块将所述A个分块和所述B个分块两两相乘,并基于所述A个分块和所述B个分块两两相乘的结果,得到所述第三矩阵和所述第四矩阵的乘积结果,其中,A、B均为大于1的正整数。
10.根据权利要求9所述的方法,其特征在于,所述计算装置用于执行卷积运算,所述第三矩阵中的元素为输入特征图中的数据,所述第四矩阵中的元素为卷积核中的权重数据,其中,所述第三矩阵为M×S的矩阵,所述第四矩阵为S×N的矩阵,M表示所述输入特征图的宽度,S表示所述输入特征图的通道数,N表示卷积核的数量,M、S、N均为大于或等于1的正整数。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111218718.4A CN113918120A (zh) | 2021-10-19 | 2021-10-19 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
PCT/CN2022/121442 WO2023065983A1 (zh) | 2021-10-19 | 2022-09-26 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111218718.4A CN113918120A (zh) | 2021-10-19 | 2021-10-19 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113918120A true CN113918120A (zh) | 2022-01-11 |
Family
ID=79241552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111218718.4A Pending CN113918120A (zh) | 2021-10-19 | 2021-10-19 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113918120A (zh) |
WO (1) | WO2023065983A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023065983A1 (zh) * | 2021-10-19 | 2023-04-27 | Oppo广东移动通信有限公司 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
CN116795432A (zh) * | 2023-08-18 | 2023-09-22 | 腾讯科技(深圳)有限公司 | 运算指令的执行方法、装置、电路、处理器及设备 |
CN118378004A (zh) * | 2024-06-20 | 2024-07-23 | 苏州元脑智能科技有限公司 | 一种计算系统、方法、产品、设备及存储介质 |
WO2024169293A1 (zh) * | 2023-02-15 | 2024-08-22 | 苏州元脑智能科技有限公司 | 计算核、加速器、计算方法、装置、设备、非易失性可读存储介质及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108875958A (zh) * | 2017-05-11 | 2018-11-23 | 广州异构智能科技有限公司 | 使用外积单元的原生张量处理器 |
US20180373678A1 (en) * | 2017-02-24 | 2018-12-27 | Texas Instruments Incorporated | Outer product multipler system and method |
US20200160221A1 (en) * | 2018-02-13 | 2020-05-21 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214726B (zh) * | 2017-07-07 | 2024-05-03 | 华为技术有限公司 | 运算加速器 |
CN109992743B (zh) * | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
CN110770697A (zh) * | 2018-09-25 | 2020-02-07 | 深圳市大疆创新科技有限公司 | 数据处理装置和方法 |
US11194549B2 (en) * | 2019-10-25 | 2021-12-07 | Arm Limited | Matrix multiplication system, apparatus and method |
CN113110822A (zh) * | 2021-04-20 | 2021-07-13 | 安徽芯纪元科技有限公司 | 一种可配置矩阵乘法装置及算法 |
CN113918120A (zh) * | 2021-10-19 | 2022-01-11 | Oppo广东移动通信有限公司 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
-
2021
- 2021-10-19 CN CN202111218718.4A patent/CN113918120A/zh active Pending
-
2022
- 2022-09-26 WO PCT/CN2022/121442 patent/WO2023065983A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180373678A1 (en) * | 2017-02-24 | 2018-12-27 | Texas Instruments Incorporated | Outer product multipler system and method |
CN108875958A (zh) * | 2017-05-11 | 2018-11-23 | 广州异构智能科技有限公司 | 使用外积单元的原生张量处理器 |
US20200160221A1 (en) * | 2018-02-13 | 2020-05-21 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023065983A1 (zh) * | 2021-10-19 | 2023-04-27 | Oppo广东移动通信有限公司 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
WO2024169293A1 (zh) * | 2023-02-15 | 2024-08-22 | 苏州元脑智能科技有限公司 | 计算核、加速器、计算方法、装置、设备、非易失性可读存储介质及系统 |
CN116795432A (zh) * | 2023-08-18 | 2023-09-22 | 腾讯科技(深圳)有限公司 | 运算指令的执行方法、装置、电路、处理器及设备 |
CN116795432B (zh) * | 2023-08-18 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 运算指令的执行方法、装置、电路、处理器及设备 |
CN118378004A (zh) * | 2024-06-20 | 2024-07-23 | 苏州元脑智能科技有限公司 | 一种计算系统、方法、产品、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023065983A1 (zh) | 2023-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113918120A (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
CN112214726B (zh) | 运算加速器 | |
US20190095776A1 (en) | Efficient data distribution for parallel processing | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN112734020B (zh) | 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法 | |
CN116167424B (zh) | 基于cim的神经网络加速器、方法、存算处理系统与设备 | |
EP3968237A1 (en) | Grouped convolution using point-to-point connected channel convolution engines | |
CN113313247B (zh) | 基于数据流架构的稀疏神经网络的运算方法 | |
CN112765540A (zh) | 数据处理方法、装置及相关产品 | |
WO2022041188A1 (zh) | 用于神经网络的加速器、方法、装置及计算机存储介质 | |
EP4206996A1 (en) | Neural network accelerator with configurable pooling processing unit | |
CN111008691B (zh) | 一种权值和激活值都二值化的卷积神经网络加速器架构 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
CN110554854A (zh) | 数据处理器、方法、芯片及电子设备 | |
EP4345691A1 (en) | Methods and systems for performing channel equalisation on a convolution layer in a neural network | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
CN111985628A (zh) | 计算装置及包括所述计算装置的神经网络处理器 | |
CN112668709B (zh) | 计算装置以及用于数据重用的方法 | |
US20220004363A1 (en) | Semiconductor device, data generation methods used for the same, and method of controlling the same | |
TWI798591B (zh) | 卷積神經網路運算方法及裝置 | |
WO2020108486A1 (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN112418417A (zh) | 基于simd技术的卷积神经网络加速装置及方法 | |
CN110807479A (zh) | 一种基于Kmeans算法的神经网络卷积计算加速方法 |
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 |