CN117688995A - 一种卷积运算加速器及相关方法 - Google Patents
一种卷积运算加速器及相关方法 Download PDFInfo
- Publication number
- CN117688995A CN117688995A CN202211047527.0A CN202211047527A CN117688995A CN 117688995 A CN117688995 A CN 117688995A CN 202211047527 A CN202211047527 A CN 202211047527A CN 117688995 A CN117688995 A CN 117688995A
- Authority
- CN
- China
- Prior art keywords
- target
- row
- data
- operators
- input
- 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 47
- 239000013598 vector Substances 0.000 claims abstract description 249
- 239000011159 matrix material Substances 0.000 claims abstract description 229
- 238000004364 calculation method Methods 0.000 claims abstract description 85
- 238000012545 processing Methods 0.000 claims abstract description 59
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 44
- 238000013473 artificial intelligence Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 101100136063 Mycobacterium tuberculosis (strain ATCC 25618 / H37Rv) PE11 gene Proteins 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 101100136062 Mycobacterium tuberculosis (strain ATCC 25618 / H37Rv) PE10 gene Proteins 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000001788 irregular Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101100136064 Mycobacterium tuberculosis (strain ATCC 25618 / H37Rv) PE13 gene Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000010349 pulsation Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000035922 thirst Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/15—Correlation function computation including computation of convolution operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
本申请实施例公开了一种卷积运算加速器及相关方法,其特征在于,包括处理单元、第一数据加载器和第二数据加载器;处理单元,用于基于权重矩阵AK*L的大小,确定目标算子集合,目标算子集合包括至少K*L个目标算子;第一数据加载器,用于将AK*L中的K个第一行向量加载至目标算子集合,每个目标算子加载一个权重数据;第二数据加载器,用于按照时钟周期以及AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个第一行向量各自所在的目标算子中;处理单元,还用于通过目标算子集合获得AK*L和BM*N的卷积结果。采用本申请实施例能够提高卷积计算的效率。
Description
技术领域
本申请涉及人工智能领域的数据处理技术,尤其涉及一种卷积运算加速器及相关方法。
背景技术
近年来,随着深度神经网络、异构计算、高带宽高存储密度、大数据、云计算等技术的突破,人工智能的应用迅猛发展,走进大众生活的方方面面。当前的人工智能很大一部分的计算就是各种神经网络的运算,而卷积计算占据了整个神经网络的大部分计算量和数据吞吐量。由于各种人工智能(Artificial Intelligence,AI)设备的遍及,云端大数据分析计算对AI加速的饥渴需求,神经网络的计算,特别是对卷积的计算能力、计算效率的提升问题日显突出。卷积神经网络的主要组成部分为卷积计算,占据整个卷积神经网络95%以上计算量。
因此,如何提高卷积计算的效率,达到显著的提高神经网络算法的应用效果成为亟待解决的问题。
发明内容
本申请实施例所要解决的技术问题在于,提供一种卷积运算加速器及相关方法,以提高卷积计算的效率,达到显著的提高神经网络算法的应用效果。
第一方面,本申请实施案例提供一种卷积运算加速器,其特征在于,所述卷积运算加速器包括处理单元、第一数据加载器和第二数据加载器;其中,所述处理单元,用于:基于权重矩阵AK*L的大小,确定目标算子集合,所述目标算子集合包括至少K*L个目标算子,K和L为大于0的整数;所述第一数据加载器,用于:将所述AK*L中的K个第一行向量加载至所述目标算子集合,其中,所述K个第一行向量中每个所述第一行向量包括L个权重数据,每个所述目标算子加载一个权重数据;所述第二数据加载器,用于:按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,所述第二行向量为所述BM*N中的M个第二行向量中的任意一个,M和N为大于0的整数;所述处理单元,还用于:通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果。
本发明实施例,提供一种卷积运算加速器,该卷积运算加速器可以根据权重矩阵的大小先确定参与卷积运算的目标算子集合,然后将权重矩阵加载至目标算子集合中,且一组权重矩阵可以加载到多列目标算子中,以提升算子的利用率。在加载输入矩阵时,可以根据输入矩阵与权重矩阵的卷积关系,将每行输入矩阵中的输入数据按照时钟周期逐个广播至对应的一行或多行目标算子中,降低了输入数据在行间复用的时间,提升了卷积计算效率。
在一种可能的实现方式中,所述目标算子集合包括K*L个目标算子,且所述K*L个目标算子呈K行,L列分布,其中,K行中的每行目标算子中相邻的目标算子相连接,且第L列目标算子中相邻的目标算子相连接;所述第一数据加载器,具体用于:将所述AK*L中的第i行第j列的权重数据加载至所述目标算子集合中的第i行第j列的目标算子中,i依次取值1,2…,K,j依次取值1,2…,L。
在本发明实施例中,当目标算子集合中目标算子个数与权重数据个数相等时,目标算子呈K行,L列分布,且每行目标算子中相邻的目标算子相连接,且最后一列目标算子中相邻的目标算子相连接。在此情况下,权重矩阵中的一个权重数据可以加载到一个目标算子中,且为了确保卷积结果的正确性,权重矩阵中权重数据的位置可以与目标算子的位置保持一致,即权重矩阵中的第i行第j列的权重数据与第i行第j列的目标算子相对应。进一步地,第一数据加载器可以提前将第i行第j列的权重数据加载到第i行第j列的目标算子中,以便后续与输入数据进行乘累加运算。
在一种可能的实现方式中,在M=K时,所述AK*L和输入矩阵BM*N的卷积关系为第i个第一行向量与第i个第二行向量对应;所述第二数据加载器,具体用于:将所述BM*N中第i个第二行向量中的N个输入数据,按照时钟周期逐个广播至所述目标算子集合中加载第i个第一行向量的L个目标算子中。
在本发明实施例中,当目标算子集合中目标算子个数与权重数据个数相等,且M=K时,处理单元中输入一组权重矩阵(即K个第一行向量),权重矩阵AK*L和输入矩阵BM*N的卷积关系可以为第i个第二行向量与第i个第一行向量进行乘累加运算,即一个第二行向量对应一个第一行向量,第二数据加载器可以将第i个第二行向量中的N个输入数据按照时钟周期逐个广播至第i个第一行向量所在的L个目标算子中,为了确保卷积计算的正确性,相邻的第二行向量可以错开一个时钟周期,以便后续与权重数据进行乘累加运算,降低了输入数据在行间复用的时间,提升了卷积计算的效率。
在一种可能的实现方式中,所述处理单元,具体用于:通过第Pi,j个目标算子,按照时钟周期将接收到的输入数据、第Pi,j-1个目标算子发送的运算结果,以及第Pi,j个目标算子中加载的权重数据进行乘累加运算;通过第Pi+1,L个目标算子,按照时钟周期将接收到的第Pi,L个目标算子的运算结果与第Pi+1,L个目标算子的运算结果进行累加运算;通过第PK,L个目标算子,获得所述AK*L和所述BM*N的卷积结果。
在本发明实施例中,第二数据加载器按照时钟周期开始向目标算子集合加载输入数据,第一列的目标算子可以将接收到的输入数据与自身已加载的权重数据进行乘运算,并且在下一个时钟周期将计算结果传递给下一个目标算子;其他列的目标算子将接收到的输入数据与自身已加载的权重数据进行乘运算,同时将乘运算结果与接收到的上一个目标算子发送的计算结果进行累加,并在下一个周期将累加后结果传递给下一个目标算子;最后一列的目标算子在将每一行的乘累加结果向下传递,以使得从PEK,L直接获得输入矩阵与权重矩阵对应项乘累加的结果(即输入矩阵与权重矩阵的卷积结果),从而提升了卷积计算的效率。
在一种可能的实现方式中,所述目标算子集合包括S*Q个目标算子,且所述S*Q个目标算子呈S行,Q列,S=K*L,Q为大于1的整数,其中,Q列目标算子中的每列目标算子中的相邻目标算子相连接;所述第一数据加载器,具体用于:依次将所述AK*L中的所述K个第一行向量按序加载至所述Q列目标算子中的每列目标算子中,其中,S行中的每行目标算子中加载的权重数据相同。
在本发明实施例中,当目标算子集合中目标算子个数与权重数据个数呈Q倍时,目标算子呈S行,Q列分布,S=K*L,Q为大于1的整数,且每列目标算子中相邻的目标算子相连接。在此情况下,权重矩阵中的一个权重数据可以加载到Q个目标算子中,即第一数据加载器依次将K个第一行向量按序加载至Q列目标算子中的每列目标算子中,以使得处理单元中输入Q组权重矩阵,且每组权重矩阵中包括相同的K个第一行向量。进一步地,每组权重矩阵所在的目标算子都可以用于与一个卷积窗口进行卷积计算,以实现并行计算,从而提升卷积计算的效率。
在一种可能的实现方式中,在M>K时,所述AK*L和所述BM*N的卷积关系包括M-K+1个卷积子关系,每个所述卷积子关系为对应输入子矩阵中的K个第二行向量与一列目标算子中加载的K个第一行向量的对应关系,其中,所述输入子矩阵为所述BM*N中M-K+1个输入子矩阵中的任意一个,每个所述输入子矩阵中包括所述M个第二行向量中相邻的K个第二行向量,且相邻输入子矩阵中包括K-1个相同的第二行向量;所述第二数据加载器,具体用于:按照时钟周期,将每个所述输入子矩阵中的K个第二行向量中每个第二行向量的N个输入数据分别逐个广播至一列对应的所述第一行向量所在的L个目标算子中,其中,相邻输入子矩阵中相同的第二行向量共享相同的时钟。
在本发明实施例中,当M>K时,输入矩阵BM*N的行数比权重矩阵AK*L的行数多,可以从输入矩阵中的M个第二行向量中按序取出的K个第二行向量,即在输入矩阵中将第1个至第K个第二行向量确定为第一个输入子矩阵,然后以一个步幅为单位向下滑动可以得到M-K+1个输入子矩阵,因此相邻输入子矩阵中包括K-1个相同的第二行向量。在此情况下,AK*L和BM*N的卷积关系中包括了M-K+1个卷积子关系,每个卷积子关系为对应输入子矩阵中的K个第二行向量与一列目标算子中加载的K个第一行向量的对应关系,即一个输入子矩阵中每个第二行向量需要与一组权重矩阵中的哪一个第一行向量进行乘累加运算的关系。在AK*L和BM*N进行卷积时,由于目标算子集合中目标算子个数与权重数据个数呈Q倍,且在目标算子集合的每列目标算子中都加载了相同的权重矩阵,即目标算子集合中加载了Q组相同的权重矩阵。因此,Q列目标算子可以同时与Q个输入子矩阵进行运算,但在运算过程中由于不同的输入子矩阵之间存在相同的第二行向量,进而第二数据加载器在加载输入矩阵时,可以将第二行向量中的输入数据按照时钟周期逐个广播到不同列的目标算子中,使得不同列的目标算子可以共享相同的输入数据,实现了输入数据在列间的复用,从而提升了卷积计算的效率。
在一种可能的实现方式中,所述处理单元,具体用于:通过所述Q列中每列目标算子输出对应输入子矩阵的卷积结果;基于所述M-K+1个输入子矩阵分别对应的卷积结果,获得所述AK*L和所述BM*N的卷积结果。
在本发明实施例中,当目标算子集合中目标算子个数与权重数据个数呈Q倍时,目标算子呈S行,Q列分布,S=K*L,Q为大于1的整数,且每列目标算子中相邻的目标算子相连接。在此情况下,处理单元中输入Q组相同的权重矩阵。当第二数据加载器开始加载输入数据后,Q列目标算子可以同时与Q个输入子矩阵进行运算。进一步地,每列目标算子中的最后一个目标算子可以输出对应输入子矩阵的卷积结果,然后基于各个输入子矩阵分别对应的卷积结果,能够获得AK*L和BM*N的卷积结果,从而提升了卷积计算的效率。
第二方面,本申请实施案例提供一种卷积运算方法,其特征在于,应用于卷积运算加速器,所述卷积运算加速器包括处理单元、第一数据加载器和第二数据加载器,所述方法包括:
通过所述处理单元,基于权重矩阵AK*L的大小,确定目标算子集合,所述目标算子集合包括至少K*L个目标算子,K和L为大于0的整数;通过所述第一数据加载器,将所述AK*L中的K个第一行向量加载至所述目标算子集合,其中,所述K个第一行向量中每个所述第一行向量包括L个权重数据,每个所述目标算子加载一个权重数据;通过所述第二数据加载器,按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,所述第二行向量为所述BM*N中的M个第二行向量中的任意一个,M和N为大于0的整数;通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果。
在一种可能的实现方式中,所述目标算子集合包括K*L个目标算子,且所述K*L个目标算子呈K行,L列分布,其中,K行中的每行目标算子中相邻的目标算子相连接,且第L列目标算子中相邻的目标算子相连接;所述将所述AK*L中的K个第一行向量加载至所述目标算子集合,包括:通过所述第一数据加载器,将所述AK*L中的第i行第j列的权重数据加载至所述目标算子集合中的第i行第j列的目标算子中,i依次取值1,2…,K,j依次取值1,2…,L。
在一种可能的实现方式中,在M=K时,所述AK*L和输入矩阵BM*N的卷积关系为第i个第一行向量与第i个第二行向量对应;所述按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,包括:通过所述第二数据加载器,将所述BM*N中第i个第二行向量中的N个输入数据,按照时钟周期逐个广播至所述目标算子集合中加载第i个第一行向量的L个目标算子中。
在一种可能的实现方式中,所述通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果,包括:通过第Pi,j个目标算子,按照时钟周期将接收到的输入数据、第Pi,j-1个目标算子发送的运算结果,以及第Pi,j个目标算子中加载的权重数据进行乘累加运算;通过第Pi+1,L个目标算子,按照时钟周期将接收到的第Pi,L个目标算子的运算结果与第Pi+1,L个目标算子的运算结果进行累加运算;通过第PK,L个目标算子,获得所述AK*L和所述BM*N的卷积结果。
在一种可能的实现方式中,所述目标算子集合包括S*Q个目标算子,且所述S*Q个目标算子呈S行,Q列,S=K*L,Q为大于1的整数,其中,Q列目标算子中的每列目标算子中的相邻目标算子相连接;所述将所述AK*L中的K个第一行向量加载至所述目标算子集合,包括:通过所述第一数据加载器,依次将所述AK*L中的所述K个第一行向量按序加载至所述Q列目标算子中的每列目标算子中,其中,S行中的每行目标算子中加载的权重数据相同。
在一种可能的实现方式中,在M>K时,所述AK*L和所述BM*N的卷积关系包括M-K+1个卷积子关系,每个所述卷积子关系为对应输入子矩阵中的K个第二行向量与一列目标算子中加载的K个第一行向量的对应关系,其中,所述输入子矩阵为所述BM*N中M-K+1个输入子矩阵中的任意一个,每个所述输入子矩阵中包括所述M个第二行向量中相邻的K个第二行向量,且相邻输入子矩阵中包括K-1个相同的第二行向量;所述按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,包括:通过所述第二数据加载器,按照时钟周期,将每个所述输入子矩阵中的K个第二行向量中每个第二行向量的N个输入数据分别逐个广播至一列对应的所述第一行向量所在的L个目标算子中,其中,相邻输入子矩阵中相同的第二行向量共享相同的时钟。
在一种可能的实现方式中,所述通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果,包括:通过所述Q列中每列目标算子输出对应输入子矩阵的卷积结果;基于所述M-K+1个输入子矩阵分别对应的卷积结果,获得所述AK*L和所述BM*N的卷积结果。
第三方面,本申请提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第二方面任意一项所述的方法。
第四方面,本申请实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现第二方面提供的一种卷积运算方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。
第五方面,本申请提供了一种芯片***,该芯片***包括处理器,用于支持电子设备实现上述第二方面中所涉及的功能,例如,生成或处理上述卷积运算方法中所涉及的信息。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
第六方面,本申请提供一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述第二方面中任意一项所述的方法。
附图说明
图1为本发明实施例提供的一种可重构计算架构的结构示意图。
图2为本发明实施例提供的一种卷积运算的示意图。
图3为本发明实施例提供的一种卷积窗口的示意图。
图4为现有技术提供的一种脉动阵列的计算架构示意图。
图5为现有技术提供的一种全局共享输入数据的阵列计算架构示意图。
图6为本发明实施例提供的一种卷积运算加速器的结构示意图。
图7为本发明实施例提供的一种权重矩阵和输入矩阵的示意图。
图8为本发明实施例提供的一种处理单元的示意图。
图9为本发明实施例提供的一种加载权重矩阵的示意图。
图10为本发明实施例提供的一种加载输入矩阵的示意图。
图11为本发明实施例提供的一种目标算子集合的示意图。
图12为本发明实施例提供的一种基于第一种计算阵列加载输入数据的示意图。
图13为本发明实施例提供的另一种基于第一种计算阵列加载输入数据的示意图。
图14为本发明实施例提供的一种4×5输入矩阵的示意图。
图15为本发明实施例提供的一种掩码生成的示意图。
图16为本发明实施例提供的另一种目标算子集合的示意图。
图17为本发明实施例提供的另一种输入矩阵和权重矩阵的示意图。
图18为本发明实施例提供的一种列间数据复用的示意图。
图19为本发明实施例提供的一种输入数据排布的示意图。
图20为本发明实施例提供的一种数据加载方式的示意图。
图21为本发明实施例提供的一种二维扩展算子阵列的示意图。
图22为本发明实施例提供的另一种二维扩展算子阵列的示意图。
图23是本发明实施例提供的一种卷积运算方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)人工智能(Artificial Intelligence,AI),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
(2)卷积,就是卷积核跟卷积层的输入矩阵的运算。通常输入矩阵(input matrix)是卷积时根据卷积核的步幅(stride)从图像矩阵提取出来的矩阵。卷积核是一个小窗口,记录的是权重。卷积核在图像矩阵上按步幅滑动,每次滑动卷积核对应图像矩阵的一个子矩阵,将卷积核中的权值和该子矩阵包含的值相乘再相加,赋给卷积核当前所在的特征图矩阵(输出矩阵)对应的一个元素。
基于上述,本发明实施例提供一种可重构计算架构。请参见图1,图1为本发明实施例提供的一种可重构计算架构的结构示意图,可重构计算架构(Coarse-grainedReconfigurable Architecture,CGRA)是一种空域上的并行计算模式,以空域的硬件结构组织不同粒度和不同功能的计算资源。在运行时,根据数据流的特点,让配置好的硬件资源互连形成相对固定的计算通路,以接近“专用电路”的方式进行计算。当算法和应用变换时,再次通过配置,重构为不同的计算通路去执行不同的任务。可重构计算架构可以包括但不限于主控制器,指令存储器,数据存储器,以及多个计算单元(Processing Element,PE)。其中,主控制器可用于配置多个计算单元之间的连接关系,以及计算单元的算子功能(如加、减、乘、除等);指令存储器可以用于暂存当前正在执行的指令;数据存储器可用于存储运算过程中需要使用的数据。
多个计算单元,通常是以PE阵列的方式存在,PE单元的算子(加、减、乘、除等)是可配置的,而且PE之间的数据传输也是可以根据配置信息进行灵活配置的,PE的基本结构如图1所示,PE互联方式较多,有简单的PE间直连,也有更复杂的路由连接;PE算子也可以根据实际需要进行定制,提高特定计算的能效。PE阵列的计算能效还和数据加载方式有关。在本申请中,通过配置PE间的连接关系、算子功能和数据加载方式,以尽可能地进行数据复用来达到整体计算能效的提高。与时同时,CGRA还有很好的可扩展性,可以进行一维、二维、三维的扩展,以适配不同的应用场景。CGRA相较于专用集成电路(Application SpecificIntegrated Circuit,ASIC)具有更高的可编程性以及近似相当的能效,相较于中央处理器(Central Processing Unit,CPU)具有更高的能效的同时兼具可编程性,适合用于领域加速计算。
可以理解的是,图1中的可重构计算架构只是本发明实施例提供的一些示例性的实施方式,本发明实施例中的可重构计算架构包括但不仅限于以上实现方式。
其次,提出本申请需要解决的技术问题及应用场景。近些年,由于卷积神经网络在图像分类、图像识别、音频识别以及其他相关领域的不俗表现,使其成为了学术界与工业界的研究与开发热门。卷积神经网络主要包括卷积和全连接(fully connected,FC)运算,其中,卷积运算的运算量通常能够占据整个网络运算量的70%以上。
如图2所示,图2为本发明实施例提供的一种卷积运算的示意图,图中当输入矩阵(如在图像处理领域,输入矩阵可以为图像矩阵)与权重矩阵进行卷积计算时,数据以滑动窗口的方式进行计算,即可以先基于权重矩阵的大小,从输入矩阵中确定卷积窗口,然后将卷积窗口内的数据和权重数据进行乘累加运算得到卷积结果。例如,如图2所示,假设输入矩阵为5×5的矩阵,权重矩阵为3×3的矩阵,首先可以基于权重矩阵的大小从输入矩阵中确定一个3×3的卷积窗口,然后将权重矩阵与卷积窗口对应项进行乘累加得到卷积结果中的一个元素,即如Out=0×0+1×1+2×0+5×1+5×2+8×1+3×0+5×1+4×0。
进一步地,如图3所示,图3为本发明实施例提供的一种卷积窗口的示意图,图中当基于权重矩阵的大小确定了卷积窗口的大小,以及第一个卷积窗口后,以一个步幅为单位在输入矩阵中可以依次从左向右,从上向下进行移动,以得到多个卷积窗口。然后,将多个卷积窗口内的数据分别与权重矩阵进行乘累加运算,得到输入矩阵与权重矩阵卷积结果。
目前,要计算输入矩阵与权重矩阵的卷积结果,可以通过以下两种阵列计算架构中的任意一种进行计算:
方式一、张量处理器(Tensor Processing Unit,TPU)的脉动阵列计算架构。
如图4所示,图4为现有技术提供的一种脉动阵列的计算架构示意图,图中TPU架构在计算卷积运算时,PE单元间的数据采用脉动阵列的方式进行数据传递。首先,将权重数据通过脉动的方式预加载到PE单元中,然后是输入数据的加载;每一行PE单元对应一个数据加载器(Value Loader),数据通过数据加载器直接加载到每一行最左面的PE单元,然后每过一个时钟周期数据脉动传递到右方相邻的PE单元,这样可以做到输入数据在PE单元各列之间进行复用;PE单元的计算结果向下传递,在下面相邻的PE单元里面进行数据累加,为了保证最终计算结果的正确性,每行之间的数据加载会错开一个时钟周期,当上面的PE单元计算结果传递到下面时,下面也同时获得了左侧传来的输入数据,经过多个周期的计算与数据传递,最下面的PE得到了这一列PE乘加的数据和;多列PE之间因为加载的是相同的输入数据与不同的权重输出,所以每列输出的是不同输出通道的数据。
缺点:该方案不适用于图像处理中的单通道数据处理,计算方式不够高效,因为在单通道数据处理时,同一输入数据只需要一组权重数据参与运算,此时该方案的PE单元阵列只有第一列PE单元参与运算,其他PE单元就会处于闲置状态,PE单元的利用率很低,导致计算资源的浪费。
方式二、全局共享输入数据的阵列计算架构。
如图5所示,图5为现有技术提供的一种全局共享输入数据的阵列计算架构示意图,首先将权重数据提前加载至计算单元中,然后将特征值(也即输入数据)通过逐个广播的方式传递给所有的计算单元,这里的计算单元只是乘累加(MAC)示意,通过不断的输入特征值进行计算。具体地,全部的MAC单元并不是每一个时钟周期都会进行计算,第一周期只有第一个MAC单元进行X00与W00乘法运算得到P0_0,然后把计算结果传递给第二个MAC单元,在第二周期,第二个MAC单元进行X01与W01乘法运算得到P0_1,再同时与P0_0进行加和,与时同时,第一个MAC单元会对新输入的特征值X01进行计算得到P1_0,以此类推,MAC3在第三周期得到该行的部分和。图5中的多行MAC单元可以在输入图形的多行之间进行数据复用,输入数据的卷积窗口是往下的方向滑动,而不是通常的向右滑动,每一行都会得到部分和,多行结果累加之后才能得到最终计算结果。
缺点:该方案每一行MAC单元计算完成后只能得到最终结果的部分和,而且需要多个时钟周期,不仅减慢了计算速度,还需要单独的加法器以及额外的访存操作完成最终计算,影响计算效率。
下面结合本发明实施例中的附图对本发明实施例进行描述。
请参见图6,图6为本发明实施例提供的一种卷积运算加速器的结构示意图,下面将结合附图6对本申请实施例中的卷积运算加速器进行详细描述。如图6所示,该卷积运算加速器可以包括但不限于处理单元201、第一数据加载器202和第二数据加载器203。需要说明的是,本申请提供的卷积运算加速器可以为上述图1中的可重构计算架构。又如图7所示,图7为本发明实施例提供的一种权重矩阵和输入矩阵的示意图,图中权重矩阵AK*L包括K个第一行向量,且每个第一行向量中包括L个权重数据;输入矩阵BM*N包括M个第二行向量,且每个第二行向量中包括N个输入数据。图7中,以K=M=L=N=4为例,即以4×4权重矩阵与4×4输入数据矩阵进行卷积运算为例。接下来,将说明卷积运算加速器如何计算得到权重矩阵与输入矩阵的卷积结果,详细描述如下:
所述处理单元201,用于:基于权重矩阵AK*L的大小,确定目标算子集合。
具体的,所述目标算子集合包括至少K*L个目标算子,K和L为大于0的整数。如图8所示,图8为本发明实施例提供的一种处理单元的示意图,图中处理单元201中可以由一个或多个算子阵列组成,每个算子阵列中可以包括多个算子,且不同算子之间的连接关系和算子功能(即加减乘除)可以根据计算要求进行配置。在做卷积运算时,可以根据权重矩阵AK*L的大小在处理单元201中确定目标算子集合,该目标算子集合中包括至少K*L个目标算子。可选的,为提高处理单元201的利用率,处理单元201中的空闲算子(即除目标算子以外的其他算子),可以用于进行其他的运算。需要说明的是,在确定目标算子集合时,为了简化卷积电路的复杂度,可以尽量选择同一个算子阵列中的算子作为目标算子。
所述第一数据加载器202,用于:将所述AK*L中的K个第一行向量加载至所述目标算子集合。
具体的,可以将权重矩阵AK*L划分为K个第一行向量,且每个第一行向量中包括L个权重数据,第一数据加载器202可以提前将权重矩阵中的K个第一行向量加载至目标算子集合中,且每个目标算子加载一个权重数据。
当目标算子集合中包括K*L个目标算子时,即目标算子个数与权重数据个数相等时,一个权重数据可以加载到一个目标算子。例如,如图9所示,图9为本发明实施例提供的一种加载权重矩阵的示意图,图中以权重矩阵AK*L为4×4大小(即K=L=4),且目标算子集合中包括16个目标算子为例,第一数据加载器202可以将权重数据依次加载至目标算子集合,其中,一个权重数据加载到一个目标算子,如将W00加载至PE00,将W01加载至PE01,以此列推。
当目标算子集合中包括Q*K*L个目标算子时(Q为大于1的整数),即目标算子个数是权重数据个数的Q倍时,一个权重数据可以加载到Q个目标算子。后续将会根据不同的情况进行详细描述,在此先不赘述。
需要说明的是,第一数据加载器202实际加载权重数据的方法可以包括多种,在此不具体限定。
所述第二数据加载器203,用于:按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中。
具体的,所述第二行向量为所述BM*N中的M个第二行向量中的任意一个,M和N为大于0的整数。可以将输入矩阵BM*N划分为M个第二行向量,且每个第二行向量中可以包括N个输入数据。第二数据加载器203中可以包括M个存取单元(Load Store Unit,LSU),每一个LSU可以对应一个第二行向量。权重矩阵AK*L和输入矩阵BM*N的卷积关系可以理解为输入矩阵中的任意一个第二行向量与权重矩阵中的哪一个或哪几个第一行向量对应的关系,即一个第二行向量需要与权重矩阵中的哪一个或哪几个第一行向量进行乘累加运算的关系。
当目标算子集合中目标算子个数与权重数据个数相等,且M=K时,处理单元201中输入一组权重矩阵(即K个第一行向量),权重矩阵AK*L和输入矩阵BM*N的卷积关系可以为第i个第二行向量与第i个第一行向量进行乘累加运算,即一个第二行向量对应一个第一行向量,第二数据加载器203(可以为加载第i个第二行向量的LSU)可以将第i个第二行向量中的N个输入数据按照时钟周期逐个广播至第i个第一行向量所在的L个目标算子中,为了确保卷积计算的正确性,相邻的第二行向量错开一个时钟周期。
当目标算子集合中目标算子个数与权重数据个数呈Q倍,且M>K时,处理单元201中输入Q组权重矩阵,且每组权重矩阵中包括相同的K个第一行向量,每组权重矩阵所在的目标算子都可以用于与一个卷积窗口进行卷积计算,卷积窗口(在一些实施例中也可以称为输入子矩阵)可以理解为从输入矩阵中的M个第二行向量中按序取出的K个第二行向量,即在输入矩阵中将第1个至第K个第二行向量确定为第一个卷积窗口,然后以一个步幅为单位向下滑动可以得到多个卷积窗口。由于相邻卷积窗口中存在相同的第二行向量,因此Q组权重矩阵所在的目标算子与Q个卷积窗口进行卷积运算时,存在将一个第二行向量输入都不同组权重矩阵所在的目标算子中的情况,即一个第二行向量对应多个第一行向量。第二数据加载器203可以将第i个第二行向量中的N个输入数据按照时钟周期逐个广播至对应的多个第一行向量各自所在的L个目标算子中,为了确保卷积计算的正确性,一个卷积窗口中相邻的第二行向量错开一个时钟周期。
例如,如图10所示,图10为本发明实施例提供的一种加载输入矩阵的示意图,图中假设K=L=M=N=4,且提前通过第一数据加载器202将权重矩阵加载至目标算子集合中。在此情况下,权重矩阵AK*L和输入矩阵BM*N的卷积关系为第i个第二行向量与第i个第一行向量对应,i=1,2,3,4。第二数据加载器203中可以包括4个LSU,且每个LSU对应一个第二行向量,如第1个LSU用于向第1行目标算子加载第1个第二行向量,第2个LSU用于向第2行目标算子加载第2个第二行向量,以此类推。进一步地,根据时钟周期将每个第二行向量中的N个输入数据逐个广播至对应的第一行向量所在的全部目标算子中,为了确保卷积计算的正确性,相邻的第二行向量错开一个时钟周期,如在第一个时钟周期,将a00广播至PE00、PE01、PE02、PE03,在第二个时钟周期,将a01广播至PE00、PE01、PE02、PE03,同时将a10广播至PE10、PE11、PE12、PE13,以此类推。
可选的,LSU每次加载一个数据,在一行PE内进行广播,在启动计算和结束计算阶段会有不规则情况,针对该问题可以采用统一的掩码模块生成相应的掩码,后续将结合具体情况进行详细描述,在此先不赘述。
所述处理单元201,还用于:通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果。
具体的,目标算子集合中的目标算子可以将加载的权重数据和接收到的输入数据进行乘累加运算,从而获得权重矩阵与输入矩阵的卷积结果。
本发明实施例提供两种具体的计算阵列,用于计算输入矩阵与权重矩阵的卷积结果。
方式一:当目标算子集合包括K*L个目标算子,且M=K时,目标算子呈K行,L列分布。
在一种可能的实现方式中,所述目标算子集合包括K*L个目标算子,且所述K*L个目标算子呈K行,L列分布,其中,K行中的每行目标算子中相邻的目标算子相连接,且第L列目标算子中相邻的目标算子相连接;所述第一数据加载器202,具体用于:将所述AK*L中的第i行第j列的权重数据加载至所述目标算子集合中的第i行第j列的目标算子中,i依次取值1,2…,K,j依次取值1,2…,L。
具体的,当目标算子集合中目标算子个数与权重数据个数相等时,目标算子呈K行,L列分布,且每行目标算子中相邻的目标算子相连接,且最后一列目标算子中相邻的目标算子相连接。在此情况下,权重矩阵中的一个权重数据可以加载到一个目标算子中,且为了确保卷积结果的正确性,权重矩阵中权重数据的位置可以与目标算子的位置保持一致,即权重矩阵中的第i行第j列的权重数据与第i行第j列的目标算子相对应。进一步地,第一数据加载器202可以提前将第i行第j列的权重数据加载到第i行第j列的目标算子中,以便后续与输入数据进行乘累加运算。
例如,如图11所示,图11为本发明实施例提供的一种目标算子集合的示意图,图中以K=L=M=4为例,权重矩阵AK*L的大小为4×4,基于权重矩阵的大小选择出16个目标算子(PE),且这16个目标算子呈4行,4列分布。进一步地,可以配置目标算子集合中的目标算子之间的连接关系,以使得每行目标算子中相邻的目标算子相连接,即每行的第i个目标算子与第i+1个目标算子相连接,i=1,2,3。同时,第L列(L=4,即第4列)目标算子中相邻的目标算子相连接,即第4列中的第i个目标算子与第i+1个目标算子相连接,i=1,2,3。进一步地,由于目标算子集合中目标算子个数与权重数据个数相等,一个权重数据可以加载到一个目标算子,为了确保卷积结果的正确性,可以将权重矩阵中的第i行第j列的权重数据加载至第i行第j列的目标算子中,以便后续与输入数据进行乘累加运算。
在一种可能的实现方式中,在M=K时,所述AK*L和输入矩阵BM*N的卷积关系为第i个第一行向量与第i个第二行向量对应;所述第二数据加载器203,具体用于:将所述BM*N中第i个第二行向量中的N个输入数据,按照时钟周期逐个广播至所述目标算子集合中加载第i个第一行向量的L个目标算子中。
具体的,当目标算子集合中目标算子个数与权重数据个数相等,且M=K时,处理单元201中输入一组权重矩阵(即K个第一行向量),权重矩阵AK*L和输入矩阵BM*N的卷积关系可以为第i个第二行向量与第i个第一行向量进行乘累加运算,即一个第二行向量对应一个第一行向量,第二数据加载器203(可以为加载第i个第二行向量的LSU)可以将第i个第二行向量中的N个输入数据按照时钟周期逐个广播至第i个第一行向量所在的L个目标算子中,为了确保卷积计算的正确性,相邻的第二行向量错开一个时钟周期,以便后续与权重数据进行乘累加运算。
例如,如图12所示,图12为本发明实施例提供的一种基于第一种计算阵列加载输入数据的示意图,图中以K=L=M=4为例,权重矩阵AK*L的大小为4×4,基于权重矩阵的大小选择出16个目标算子(PE),且这16个目标算子呈4行,4列分布。在加载输入矩阵前,第一数据加载器202可以提前将权重矩阵加载至目标算子集合中。在第二数据加载器203加载输入矩阵的M个第二行向量时,为了确保卷积计算的正确性,相邻的第二行向量错开一个时钟周期。如图12所示,图中第一个时钟周期广播第一行(即第一个第二行向量)输入矩阵中的第一个输入数据到第一行的所有目标算子中,即在T1时,将a00广播至PE00,PE01,PE02,PE03中。又如图13所示,图13为本发明实施例提供的另一种基于第一种计算阵列加载输入数据的示意图,在第二个时钟周期广播第一行输入矩阵中的第二个输入数据到第一行的所有目标算子中,同时广播第二输入数据矩阵中的第一个输入数据到第二行的所有目标算子中,即在T2时,将a01广播至PE00,PE01,PE02,PE03中,同时将a10广播至PE10,PE11,PE12,PE13中,以此列推。
需要说明的是,第二数据加载器203每次加载一个输入数据,在一行PE内进行广播,在启动计算和结束计算阶段会有不规则情况,针对该问题可以采用统一的掩码模块生成相应的掩码。例如,如图12所示,在启动计算阶段,a00只需与W00相乘,而无需与W01,W02,W03相乘,因此可以将输入数据与掩码相结合再进行广播,即将加载至PE00的a00乘1,将加载至PE01,PE02,PE03的a00乘0。又例如,如图13所示,a01只需与W00和W01相乘,而无需与W02和W03相乘,则可以将加载至PE00和PE01的a01乘1,将加载至PE02和PE03的a01乘0;a10只需与W10相乘,而无需与W11,W12和W13相乘,则将加载至PE10的a10乘1,将加载至PE11,PE12和PE13的a01乘0。
在一种可能的实现方式中,所述处理单元201,具体用于:通过第Pi,j个目标算子,按照时钟周期将接收到的输入数据、第Pi,j-1个目标算子发送的运算结果,以及第Pi,j个目标算子中加载的权重数据进行乘累加运算;通过第Pi+1,L个目标算子,按照时钟周期将接收到的第Pi,L个目标算子的运算结果与第Pi+1,L个目标算子的运算结果进行累加运算;通过第PK,L个目标算子,获得所述AK*L和所述BM*N的卷积结果。
具体的,第二数据加载器203按照时钟周期开始向目标算子集合加载输入数据,第一列的目标算子可以将接收到的输入数据与自身已加载的权重数据进行乘运算,并且在下一个时钟周期将计算结果传递给下一个目标算子;其他列的目标算子将接收到的输入数据与自身已加载的权重数据进行乘运算,同时将乘运算结果与接收到的上一个目标算子发送的计算结果进行累加,并在下一个周期将累加后结果传递给下一个目标算子;最后一列的目标算子在将每一行的乘累加结果向下传递,以使得从PEK,L直接获得输入矩阵与权重矩阵对应项乘累加的结果(即输入矩阵与权重矩阵的卷积结果),从而提升了卷积计算的效率。
例如,如图11所示,图中以K=L=4为例,权重矩阵AK*L的大小为4×4,基于权重矩阵的大小选择出16个目标算子(PE),且这16个目标算子呈4行,4列分布。在确定了目标算子集合中的目标算子后,可以将PE(00/10/20/30)配置为乘运算模式(即a*b计算模式),将PE(01/11/21/31,02/12/22/32,03)配置乘加运算模式(即a*b+c计算模式),将PE(13/23/33)配置为乘加加运算模式(即a*b+c+d计算模式)。进一步地,第二数据加载器203按照时钟周期开始向目标算子集合加载输入数据,第一列的目标算子可以将接收到的输入数据与自身已加载的权重数据进行乘运算,并且在下一个时钟周期将计算结果传递给下一个目标算子;第二列和第三列的目标算子分别将接收到的输入数据与自身已加载的权重数据进行乘运算,同时将乘运算结果与接收到的上一个目标算子发送的计算结果进行累加,并在下一个周期将累加后结果传递给下一个目标算子;第4列的目标算子在将每一行的乘累加结果向下传递,以使得在PE33获得输入矩阵与权重矩阵对应项乘累加的结果(即输入矩阵与权重矩阵的卷积结果)。假设,K=L=M=N=4时,即输入矩阵的大小与权重矩阵的大小相同,计算过程如下所示:
第一周期:P00=a00*W00;
第二周期:P01=P00+a01*W01;P10=a10*W10;
第三周期:P02=P01+a02*W02;P11=P10+a11*W11;P20=a20*W20;
第四周期:P03=P02+a03*W03;P12=P11+a12*W12;P21=P20+a21*W21;P30=a30*W30;
第五周期:P13=P12+P03+a13*W13;P22=P21+a22*W22;P31=P30+a31*W31;
第六周期:P23=P22+P13+a23*W23;P32=P31+a32*W32;
第七周期:P33=P32+P23+a33*W33;
最后通过,PE33能够直接输出P33(为4×4输入矩阵与4×4权重矩阵的计算结果)。
需要说明的是,如图14所示,图14为本发明实施例提供的一种4×5输入矩阵的示意图,图中输入矩阵为4×5的矩阵,即输入矩阵中包括4个第二行向量,每个第二行向量中包括5个输入数据。由于权重矩阵为4×4的矩阵,数据以滑动窗口的方式进行计算,即可以先基于权重矩阵的大小,从输入矩阵中确定第一个卷积窗口,然后以一个步幅为单位向右滑动获得第二卷积窗口。进一步地,将卷积窗口内的输入数据和权重数据进行乘累加运算得到卷积结果。通过本申请提供的卷积运算加速器计算卷积窗口内的数据(输入矩阵中的数据)和权重数据乘累加结果时,可以并行计算向右滑动的卷积窗口的卷积结果,以最大化的进行数据复用,同时提升PE利用率,从而提升卷积计算效率。
需要说明的是,不同卷积窗口的卷积结果需要在不同的时钟周期输出,在一些实施例中,第一个卷积窗口的卷积结果输出时间与下一个卷积窗口的卷积结果输出时间相差一个时钟周期。
可选的,可以为每行PE分配一个LSU单元,每行数据都是通过数据广播与掩码相结合的方式进行加载;每行PE的数据填充错开一个时钟周期:LSU每次加载一个数据,在一行PE内进行广播,在启动和结束阶段会有不规则情况,针对该问题采用统一的掩码模块生成相应的掩码,掩码生成示例如图15所示,图15为本发明实施例提供的一种掩码生成的示意图,图中以输入数据为4×5的输入矩阵为例,图中有数据的表示掩码为“1”,空的表示掩码为“0”,图15中同时还描述了计算两个卷积窗口的数据加载情况,灰色标识的为第一个卷积窗口所需的数据,斜杠标识的为第二个卷积窗口所需的数据。
方式二:当目标算子集合包括S*Q个目标算子时,S=K*L,目标算子呈S行,Q列分布。
在一种可能的实现方式中,所述目标算子集合包括S*Q个目标算子,且所述S*Q个目标算子呈S行,Q列,S=K*L,Q为大于1的整数,其中,Q列目标算子中的每列目标算子中的相邻目标算子相连接;所述第一数据加载器202,具体用于:依次将所述AK*L中的所述K个第一行向量按序加载至所述Q列目标算子中的每列目标算子中,其中,S行中的每行目标算子中加载的权重数据相同。
具体的,当目标算子集合中目标算子个数与权重数据个数呈Q倍时,目标算子呈S行,Q列分布,S=K*L,Q为大于1的整数,且每列目标算子中相邻的目标算子相连接。在此情况下,权重矩阵中的一个权重数据可以加载到Q个目标算子中,即第一数据加载器202可以依次将K个第一行向量按序加载至Q列目标算子中的每列目标算子中,以使得处理单元201中输入Q组权重矩阵,且每组权重矩阵中包括相同的K个第一行向量。进一步地,每组权重矩阵所在的目标算子都可以用于与一个卷积窗口进行卷积计算,从而提升卷积计算的效率。卷积窗口(在一些实施例中也可以称为输入子矩阵)可以理解为从输入矩阵中的M个第二行向量中按序取出的K个第二行向量,即在输入矩阵中将第1个至第K个第二行向量确定为第一个卷积窗口,然后以一个步幅为单位向下滑动可以得到多个卷积窗口。
例如,如图16所示,图16为本发明实施例提供的另一种目标算子集合的示意图,图中假设目标算子集合中包括16个目标算子,而权重矩阵为2×2的矩阵,存在2个第一行向量,且每个第一行向量中包括2个权重数据,其中,第一个第一行向量包括W00和W01,第二个第一行向量包括W10和W11,在此情况下,目标算子个数为权重数据个数的4倍。第一数据加载器202可以按序将这两个第一行向量依次加载至每列目标算子中,即将W00,W01,W10,W11加载至每列目标算子中,以使得处理单元201中输入4组相同的权重矩阵,便于后续进行并行计算,从而提升卷积计算的效率。
在一种可能的实现方式中,在M>K时,所述AK*L和所述BM*N的卷积关系包括M-K+1个卷积子关系,每个所述卷积子关系为对应输入子矩阵中的K个第二行向量与一列目标算子中加载的K个第一行向量的对应关系,其中,所述输入子矩阵为所述BM*N中M-K+1个输入子矩阵中的任意一个,每个所述输入子矩阵中包括所述M个第二行向量中相邻的K个第二行向量,且相邻输入子矩阵中包括K-1个相同的第二行向量;所述第二数据加载器203,具体用于:按照时钟周期,将每个所述输入子矩阵中的K个第二行向量中每个第二行向量的N个输入数据分别逐个广播至一列对应的所述第一行向量所在的L个目标算子中,其中,相邻输入子矩阵中相同的第二行向量共享相同的时钟。
具体的,当M>K时,输入矩阵BM*N的行数比权重矩阵AK*L的行数多,可以从输入矩阵中的M个第二行向量中按序取出的K个第二行向量,即在输入矩阵中将第1个至第K个第二行向量确定为第一个输入子矩阵,然后以一个步幅为单位向下滑动可以得到M-K+1个输入子矩阵,因此相邻输入子矩阵中包括K-1个相同的第二行向量。在此情况下,AK*L和BM*N的卷积关系中包括了M-K+1个卷积子关系,每个卷积子关系为对应输入子矩阵中的K个第二行向量与一列目标算子中加载的K个第一行向量的对应关系,即一个输入子矩阵中每个第二行向量需要与一组权重矩阵中的哪一个第一行向量进行乘累加运算的关系。在AK*L和BM*N进行卷积时,由于目标算子集合中目标算子个数与权重数据个数呈Q倍,且在目标算子集合的每列目标算子中都加载了相同的权重矩阵,即目标算子集合中加载了Q组相同的权重矩阵。因此,Q列目标算子可以同时与Q个输入子矩阵进行运算,但在运算过程中由于不同的输入子矩阵之间存在相同的第二行向量,进而第二数据加载器在加载输入矩阵时,可以将第二行向量中的输入数据按照时钟周期逐个广播到不同列的目标算子中,使得不同列之间的目标算子可以共享相同的输入数据,实现了输入数据在列间的复用,从而提升了卷积计算的效率。
例如,如图17所示,图17为本发明实施例提供的另一种输入矩阵和权重矩阵的示意图,图中权重矩阵AK*L为2×2的矩阵,包括2个第一行向量,且每个第一行向量中包括2个权重数据,输入矩阵BM*N为5×7的矩阵,包括5个第二行向量,且每个第二行向量中包括7个输入数据,可以将输入矩阵划分为4个输入子矩阵,第一个输入子矩阵为a和b,第二个输入子矩阵为b和c,第三个输入子矩阵为c和d,第四个输入子矩阵为d和e。若目标算子集合中目标算子个数与权重数据个数呈4倍,处理单元201中输入4组相同的权重矩阵,如将W00,W01,W10,W11分别加载到4列目标算子中。A2*2与B5*7进行卷积计算,可以将第一个输入子矩阵加载至第一列目标算子中进行处理,将第二个输入子矩阵加载至第二列目标算子中进行处理,将第三个输入子矩阵加载至第三列目标算子进行处理,将第四个输入子矩阵加载至第四列目标算子进行处理。如图18所示,图18为本发明实施例提供的一种列间数据复用的示意图,图中仅示出两列目标算子,在进行卷积计算时,可以将a和b加载至第一列目标算子中进行处理,同时可以将b和c加载至第二列目标算子进行处理,进而第二数据加载器203在广播b中的输入数据(如b0,b1…b6)时,可以同时将b广播到第一列中的第二个第一行向量所在的2个目标算子中和第二列中的第一个第一行向量所在的2个目标算子中,使得不同列的目标算子可以共享相同的输入数据,实现了输入数据在列间的复用,从而提升了卷积计算的效率。
可选的,如图19所示,图19为本发明实施例提供的一种输入数据排布的示意图,在A2*2与B5*7进行卷积计算,计算的排布情况可以如图19所示,a、b、c、d、e分别对应图17中输入矩阵中的数据行,第一列PE加载的是a行和b行的数据,第二列PE加载的是b行和c行的数据,以此类推。数据的加载方式可以如图20所示,图20为本发明实施例提供的一种数据加载方式的示意图,图中有数据的表示掩码为“1”,空的表示掩码为“0”。为了进行行间的数据复用,每列PE的启动时间相关两个时钟周期,如PE01、PE20加载相同的数据,PE11、PE30加载相同的数据,其他同理。在每一列PE上都是通过向下传递计算结果进行累加得到最终计算结果。可选的,对于输入数据不够5行的情况,可以将数据行进行切分,然后再单独地将切分的数据加载到对应的PE单元。
在一种可能的实现方式中,所述处理单元201,具体用于:通过所述Q列中每列目标算子输出对应输入子矩阵的卷积结果;基于所述M-K+1个输入子矩阵分别对应的卷积结果,获得所述AK*L和所述BM*N的卷积结果。
具体的,当目标算子集合中目标算子个数与权重数据个数呈Q倍时,目标算子呈S行,Q列分布,S=K*L,Q为大于1的整数,且每列目标算子中相邻的目标算子相连接。在此情况下,权重矩阵中的一个权重数据可以加载到Q个目标算子中,即第一数据加载器202可以依次将K个第一行向量按序加载至Q列目标算子中的每列目标算子中,以使得处理单元201中输入Q组相同的权重矩阵。第二数据加载器203开始加载输入数据后,Q列目标算子可以同时与Q个输入子矩阵进行运算。进一步地,每列目标算子中的最后一个目标算子可以输出对应输入子矩阵的卷积结果,然后基于M-K+1个输入子矩阵分别对应的卷积结果,能够获得AK*L和BM*N的卷积结果。
可选的,在基于权重矩阵AK*L的大小,确定目标算子集合时,对于处理卷积窗口的大小(即权重矩阵的大小)大于单个算子阵列(也可以称为PE阵列规模)时,在计算资源不够的情况下可以通过分时复用的方式进行卷积计算,而在处理单元201中拥有多核资源(如多个算子阵列)的情况下,则可以通过阵列的二维扩展进行更大卷积窗口计算的适配。如图21所示,图21为本发明实施例提供的一种二维扩展算子阵列的示意图,图中卷积窗口的大小按照PE规模倍数更接近于向上取整的情况,这时可以直接按图11的方式进行电路配置与数据加载,此时的PE利用率较高,而且其他PE还可以进行卷积之外的一些计算,从而避免计算资源的浪费。又如图22所示,图22为本发明实施例提供的另一种二维扩展算子阵列的示意图,图中卷积窗口的大小按照PE规模倍数更接近于向下取整的情况,此时的PE规模整数倍的卷积可以按照图11的方式进行计算,剩余的右“边”与下“边”进行单独处理,右“边”部分可以按照普通CGRA的方式(类似于图22右上角的计算方式)进行计算,右“边”与下“边”交接点归为下“边”,此时可以将下“边”按照一维卷积的方式,将下“边”放到一个或多个PE列阵中进行计算,然后再将三部分结果在CGRA上进行加和得到最终结果。通过这种方式可以保证卷积窗口的计算可以占用更少的PE阵列核数。
需要说明的是,输入数据也可以从其他方向进行加载,并配套的修改目标算子之间的连接关系。
本发明实施例,提供一种卷积运算加速器,该卷积运算加速器可以根据权重矩阵的大小先确定参与卷积运算的目标算子集合,然后将权重矩阵加载至目标算子集合中,且一组权重矩阵可以加载到多列目标算子中,以提升算子的利用率。在加载输入矩阵时,可以根据输入矩阵与权重矩阵的卷积关系,将每行输入矩阵中的输入数据按照时钟周期逐个广播至对应的一行或多行目标算子中,降低了输入数据在行间复用的时间,提升了卷积计算效率。
上述详细阐述了本发明实施例的卷积运算加速器,下面提供了本发明实施例的相关卷积运算方法。
请参见图23,图23是本发明实施例提供的一种卷积运算方法的流程图,该方法适用于上述图6中的一种卷积运算加速器以及包含所述卷积运算加速器的设备。该方法可以包括以下步骤S301-步骤S304。其中,所述卷积运算加速器包括处理单元、第一数据加载器和第二数据加载器。详细描述如下:
步骤S301:通过所述处理单元,基于权重矩阵AK*L的大小,确定目标算子集合。
具体的,所述目标算子集合包括至少K*L个目标算子,K和L为大于0的整数;
步骤S302:通过所述第一数据加载器,将所述AK*L中的K个第一行向量加载至所述目标算子集合。
具体的,所述K个第一行向量中每个所述第一行向量包括L个权重数据,每个所述目标算子加载一个权重数据;
步骤S303:通过所述第二数据加载器,按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中。
具体的,所述第二行向量为所述BM*N中的M个第二行向量中的任意一个,M和N为大于0的整数;
步骤S304:通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果。
在一种可能的实现方式中,所述目标算子集合包括K*L个目标算子,且所述K*L个目标算子呈K行,L列分布,其中,K行中的每行目标算子中相邻的目标算子相连接,且第L列目标算子中相邻的目标算子相连接;所述将所述AK*L中的K个第一行向量加载至所述目标算子集合,包括:通过所述第一数据加载器,将所述AK*L中的第i行第j列的权重数据加载至所述目标算子集合中的第i行第j列的目标算子中,i依次取值1,2…,K,j依次取值1,2…,L。
在一种可能的实现方式中,在M=K时,所述AK*L和输入矩阵BM*N的卷积关系为第i个第一行向量与第i个第二行向量对应;所述按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,包括:通过所述第二数据加载器,将所述BM*N中第i个第二行向量中的N个输入数据,按照时钟周期逐个广播至所述目标算子集合中加载第i个第一行向量的L个目标算子中。
在一种可能的实现方式中,所述通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果,包括:通过第Pi,j个目标算子,按照时钟周期将接收到的输入数据、第Pi,j-1个目标算子发送的运算结果,以及第Pi,j个目标算子中加载的权重数据进行乘累加运算;通过第Pi+1,L个目标算子,按照时钟周期将接收到的第Pi,L个目标算子的运算结果与第Pi+1,L个目标算子的运算结果进行累加运算;通过第PK,L个目标算子,获得所述AK*L和所述BM*N的卷积结果。
在一种可能的实现方式中,所述目标算子集合包括S*Q个目标算子,且所述S*Q个目标算子呈S行,Q列,S=K*L,Q为大于1的整数,其中,Q列目标算子中的每列目标算子中的相邻目标算子相连接;所述将所述AK*L中的K个第一行向量加载至所述目标算子集合,包括:通过所述第一数据加载器,依次将所述AK*L中的所述K个第一行向量按序加载至所述Q列目标算子中的每列目标算子中,其中,S行中的每行目标算子中加载的权重数据相同。
在一种可能的实现方式中,在M>K时,所述AK*L和所述BM*N的卷积关系包括M-K+1个卷积子关系,每个所述卷积子关系为对应输入子矩阵中的K个第二行向量与一列目标算子中加载的K个第一行向量的对应关系,其中,所述输入子矩阵为所述BM*N中M-K+1个输入子矩阵中的任意一个,每个所述输入子矩阵中包括所述M个第二行向量中相邻的K个第二行向量,且相邻输入子矩阵中包括K-1个相同的第二行向量;所述按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,包括:通过所述第二数据加载器,按照时钟周期,将每个所述输入子矩阵中的K个第二行向量中每个第二行向量的N个输入数据分别逐个广播至一列对应的所述第一行向量所在的L个目标算子中,其中,相邻输入子矩阵中相同的第二行向量共享相同的时钟。
在一种可能的实现方式中,所述通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果,包括:通过所述Q列中每列目标算子输出对应输入子矩阵的卷积结果;基于所述M-K+1个输入子矩阵分别对应的卷积结果,获得所述AK*L和所述BM*N的卷积结果。
通过本发明实施例,可以根据权重矩阵的大小先确定参与卷积运算的目标算子集合,然后将权重矩阵加载至目标算子集合中,且一组权重矩阵可以加载到多列目标算子中,以提升算子的利用率。在加载输入矩阵时,可以根据输入矩阵与权重矩阵的卷积关系,将每行输入矩阵中的输入数据按照时钟周期逐个广播至对应的一行或多行目标算子中,降低了输入数据在行间复用的时间,提升了卷积计算效率。
本申请提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种卷积运算方法。
本申请实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现上述任意一种卷积运算方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。
本申请提供了一种芯片***,该芯片***包括处理器,用于支持电子设备实现上述所涉及的功能,例如,生成或处理上述一种卷积运算方法中所涉及的信息。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请提供一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述一种卷积运算方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器(Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (15)
1.一种卷积运算加速器,其特征在于,所述卷积运算加速器包括处理单元、第一数据加载器和第二数据加载器,其中,所述处理单元,用于:
基于权重矩阵AK*L的大小,确定目标算子集合,所述目标算子集合包括至少K*L个目标算子,K和L为大于0的整数;
所述第一数据加载器,用于:
将所述AK*L中的K个第一行向量加载至所述目标算子集合,其中,所述K个第一行向量中每个所述第一行向量包括L个权重数据,每个所述目标算子加载一个权重数据;
所述第二数据加载器,用于:
按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,所述第二行向量为所述BM*N中的M个第二行向量中的任意一个,M和N为大于0的整数;
所述处理单元,还用于:
通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果。
2.如权利要求1所述的加速器,其特征在于,所述目标算子集合包括K*L个目标算子,且所述K*L个目标算子呈K行,L列分布,其中,K行中的每行目标算子中相邻的目标算子相连接,且第L列目标算子中相邻的目标算子相连接;所述第一数据加载器,具体用于:
将所述AK*L中的第i行第j列的权重数据加载至所述目标算子集合中的第i行第j列的目标算子中,i依次取值1,2…,K,j依次取值1,2…,L。
3.如权利要求2所述的加速器,其特征在于,在M=K时,所述AK*L和输入矩阵BM*N的卷积关系为第i个第一行向量与第i个第二行向量对应;所述第二数据加载器,具体用于:
将所述BM*N中第i个第二行向量中的N个输入数据,按照时钟周期逐个广播至所述目标算子集合中加载第i个第一行向量的L个目标算子中。
4.如权利要求3所述的加速器,其特征在于,所述处理单元,具体用于:
通过第Pi,j个目标算子,按照时钟周期将接收到的输入数据、第Pi,j-1个目标算子发送的运算结果,以及第Pi,j个目标算子中加载的权重数据进行乘累加运算;
通过第Pi+1,L个目标算子,按照时钟周期将接收到的第Pi,L个目标算子的运算结果与第Pi+1,L个目标算子的运算结果进行累加运算;
通过第PK,L个目标算子,获得所述AK*L和所述BM*N的卷积结果。
5.如权利要求1所述的加速器,其特征在于,所述目标算子集合包括S*Q个目标算子,且所述S*Q个目标算子呈S行,Q列,S=K*L,Q为大于1的整数,其中,Q列目标算子中的每列目标算子中的相邻目标算子相连接;所述第一数据加载器,具体用于:
依次将所述AK*L中的所述K个第一行向量按序加载至所述Q列目标算子中的每列目标算子中,其中,S行中的每行目标算子中加载的权重数据相同。
6.如权利要求5所述的加速器,其特征在于,在M>K时,所述AK*L和所述BM*N的卷积关系包括M-K+1个卷积子关系,每个所述卷积子关系为对应输入子矩阵中的K个第二行向量与一列目标算子中加载的K个第一行向量的对应关系,其中,所述输入子矩阵为所述BM*N中M-K+1个输入子矩阵中的任意一个,每个所述输入子矩阵中包括所述M个第二行向量中相邻的K个第二行向量,且相邻输入子矩阵中包括K-1个相同的第二行向量;所述第二数据加载器,具体用于:
按照时钟周期,将每个所述输入子矩阵中的K个第二行向量中每个第二行向量的N个输入数据分别逐个广播至一列对应的所述第一行向量所在的L个目标算子中,其中,相邻输入子矩阵中相同的第二行向量共享相同的时钟。
7.如权利要求6所述的加速器,其特征在于,所述处理单元,具体用于:
通过所述Q列中每列目标算子输出对应输入子矩阵的卷积结果;
基于所述M-K+1个输入子矩阵分别对应的卷积结果,获得所述AK*L和所述BM*N的卷积结果。
8.一种卷积运算方法,其特征在于,应用于卷积运算加速器,所述卷积运算加速器包括处理单元、第一数据加载器和第二数据加载器,所述方法包括:
通过所述处理单元,基于权重矩阵AK*L的大小,确定目标算子集合,所述目标算子集合包括至少K*L个目标算子,K和L为大于0的整数;
通过所述第一数据加载器,将所述AK*L中的K个第一行向量加载至所述目标算子集合,其中,所述K个第一行向量中每个所述第一行向量包括L个权重数据,每个所述目标算子加载一个权重数据;
通过所述第二数据加载器,按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,所述第二行向量为所述BM*N中的M个第二行向量中的任意一个,M和N为大于0的整数;
通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果。
9.如权利要求8所述的方法,其特征在于,所述目标算子集合包括K*L个目标算子,且所述K*L个目标算子呈K行,L列分布,其中,K行中的每行目标算子中相邻的目标算子相连接,且第L列目标算子中相邻的目标算子相连接;所述将所述AK*L中的K个第一行向量加载至所述目标算子集合,包括:
通过所述第一数据加载器,将所述AK*L中的第i行第j列的权重数据加载至所述目标算子集合中的第i行第j列的目标算子中,i依次取值1,2…,K,j依次取值1,2…,L。
10.如权利要求9所述的方法,其特征在于,在M=K时,所述AK*L和输入矩阵BM*N的卷积关系为第i个第一行向量与第i个第二行向量对应;所述按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,包括:
通过所述第二数据加载器,将所述BM*N中第i个第二行向量中的N个输入数据,按照时钟周期逐个广播至所述目标算子集合中加载第i个第一行向量的L个目标算子中。
11.如权利要求10所述的方法,其特征在于,所述通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果,包括:
通过第Pi,j个目标算子,按照时钟周期将接收到的输入数据、第Pi,j-1个目标算子发送的运算结果,以及第Pi,j个目标算子中加载的权重数据进行乘累加运算;
通过第Pi+1,L个目标算子,按照时钟周期将接收到的第Pi,L个目标算子的运算结果与第Pi+1,L个目标算子的运算结果进行累加运算;
通过第PK,L个目标算子,获得所述AK*L和所述BM*N的卷积结果。
12.如权利要求8所述的方法,其特征在于,所述目标算子集合包括S*Q个目标算子,且所述S*Q个目标算子呈S行,Q列,S=K*L,Q为大于1的整数,其中,Q列目标算子中的每列目标算子中的相邻目标算子相连接;所述将所述AK*L中的K个第一行向量加载至所述目标算子集合,包括:
通过所述第一数据加载器,依次将所述AK*L中的所述K个第一行向量按序加载至所述Q列目标算子中的每列目标算子中,其中,S行中的每行目标算子中加载的权重数据相同。
13.如权利要求12所述的方法,其特征在于,在M>K时,所述AK*L和所述BM*N的卷积关系包括M-K+1个卷积子关系,每个所述卷积子关系为对应输入子矩阵中的K个第二行向量与一列目标算子中加载的K个第一行向量的对应关系,其中,所述输入子矩阵为所述BM*N中M-K+1个输入子矩阵中的任意一个,每个所述输入子矩阵中包括所述M个第二行向量中相邻的K个第二行向量,且相邻输入子矩阵中包括K-1个相同的第二行向量;所述按照时钟周期以及所述AK*L和输入矩阵BM*N的卷积关系,将第二行向量中的N个输入数据逐个广播至对应的一个或多个所述第一行向量各自所在的L个目标算子中,包括:
通过所述第二数据加载器,按照时钟周期,将每个所述输入子矩阵中的K个第二行向量中每个第二行向量的N个输入数据分别逐个广播至一列对应的所述第一行向量所在的L个目标算子中,其中,相邻输入子矩阵中相同的第二行向量共享相同的时钟。
14.如权利要求13所述的方法,其特征在于,所述通过所述目标算子集合获得所述AK*L和所述BM*N的卷积结果,包括:
通过所述Q列中每列目标算子输出对应输入子矩阵的卷积结果;
基于所述M-K+1个输入子矩阵分别对应的卷积结果,获得所述AK*L和所述BM*N的卷积结果。
15.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求8-14中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211047527.0A CN117688995A (zh) | 2022-08-29 | 2022-08-29 | 一种卷积运算加速器及相关方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211047527.0A CN117688995A (zh) | 2022-08-29 | 2022-08-29 | 一种卷积运算加速器及相关方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117688995A true CN117688995A (zh) | 2024-03-12 |
Family
ID=90126941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211047527.0A Pending CN117688995A (zh) | 2022-08-29 | 2022-08-29 | 一种卷积运算加速器及相关方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117688995A (zh) |
-
2022
- 2022-08-29 CN CN202211047527.0A patent/CN117688995A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245751B (zh) | 一种gemm运算方法及装置 | |
CN110998570B (zh) | 具有带有块浮点处理的矩阵矢量单元的硬件节点 | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
CN109409510B (zh) | 神经元电路、芯片、***及其方法、存储介质 | |
CN107301456B (zh) | 基于向量处理器的深度神经网络多核加速实现方法 | |
JP2021515300A (ja) | ニューラル・ネットワーク・アクセラレータ | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
EP0459222A2 (en) | Neural network | |
CN110909872B (zh) | 集成电路芯片装置及相关产品 | |
CN109993291B (zh) | 集成电路芯片装置及相关产品 | |
CN111160541B (zh) | 集成电路芯片装置及相关产品 | |
JPH06502265A (ja) | 信号処理におけるマトリクス演算の計算回路装置 | |
CN109615061B (zh) | 一种卷积运算方法及装置 | |
CN114003198A (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN117688995A (zh) | 一种卷积运算加速器及相关方法 | |
CN111626399B (zh) | 卷积神经网络计算装置、数据计算方法 | |
CN111966327A (zh) | 基于nas搜索的混合精度时空复用乘法器及其控制方法 | |
CN111401533A (zh) | 一种神经网络专用计算阵列及其计算方法 | |
CN111091189B (zh) | 集成电路芯片装置及相关产品 | |
CN109993292B (zh) | 集成电路芯片装置及相关产品 | |
CN114021070A (zh) | 一种基于微架构处理器的深度卷积计算方法及*** | |
CN111985628B (zh) | 计算装置及包括所述计算装置的神经网络处理器 | |
CN109615062B (zh) | 一种卷积运算方法及装置 | |
CN111767996A (zh) | 集成电路芯片装置及相关产品 | |
CN110197266B (zh) | 集成电路芯片装置及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |