CN113496008B - 用于执行矩阵计算的方法、计算设备和计算机存储介质 - Google Patents

用于执行矩阵计算的方法、计算设备和计算机存储介质 Download PDF

Info

Publication number
CN113496008B
CN113496008B CN202111035783.3A CN202111035783A CN113496008B CN 113496008 B CN113496008 B CN 113496008B CN 202111035783 A CN202111035783 A CN 202111035783A CN 113496008 B CN113496008 B CN 113496008B
Authority
CN
China
Prior art keywords
offset
padding
current block
determined
indication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111035783.3A
Other languages
English (en)
Other versions
CN113496008A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Bilin Technology Development Co ltd
Shanghai Bi Ren Technology Co ltd
Original Assignee
Beijing Bilin Technology Development Co ltd
Shanghai Biren Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Bilin Technology Development Co ltd, Shanghai Biren Intelligent Technology Co Ltd filed Critical Beijing Bilin Technology Development Co ltd
Priority to CN202111035783.3A priority Critical patent/CN113496008B/zh
Publication of CN113496008A publication Critical patent/CN113496008A/zh
Application granted granted Critical
Publication of CN113496008B publication Critical patent/CN113496008B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本公开的实施例涉及用于执行矩阵计算的方法、计算设备和计算机存储介质。根据该方法,获取目标矩阵,目标矩阵包括具有第一尺寸的多个子矩阵,目标矩阵被划分为具有第二尺寸的多个块,第二尺寸与第一尺寸不同;对于多个块中的每个当前块,生成当前块中的左子矩阵边界相对于当前块中的预定列的第一偏移量、当前块中的右子矩阵边界相对于当前块中的预定列的第二偏移量、当前块中的上子矩阵边界相对于当前块中的预定行的第三偏移量和当前块中的下子矩阵边界相对于当前块中的预定行的第四偏移量;以及基于第一偏移量、第二偏移量、第三偏移量和第四偏移量,对当前块进行填充。由此,能够减少用于表示块内的样本边界的比特数量。

Description

用于执行矩阵计算的方法、计算设备和计算机存储介质
技术领域
本公开的实施例总体涉及信息处理领域,具体涉及用于执行矩阵计算的方法、计算设备和计算机存储介质。
背景技术
用于卷积运算的矩阵通常称为样本。多个小的样本可以组成更大的样本作为卷积的输入,以提高计算效率。所组成的更大样本可以划分为多个块(也可以称为片,tile)。卷积或矩阵乘加等运算例如可以逐块进行。进行卷积或矩阵乘加等运算时,会对一些块进行填充。由于块内部存在样本边界,因此需要识别块内部的样本边界,以用于卷积或矩阵乘加等运算所需的填充。
传统方案通过为每个块生成块大小的掩码来指示块内部的样本边界。例如,对于8x8的块而言,生成64比特的掩码,掩码中的样本边界比特被设置为1,并且掩码中的非样本边界比特被设置为0,或者反之亦然。
发明内容
提供了一种用于执行矩阵计算的方法、计算设备以及计算机存储介质,能够减少用于表示块内的样本边界的比特数量,从而降低总线传输数据量和存储空间。
根据本公开的第一方面,提供了一种用于执行矩阵计算的方法。该方法包括:在计算设备处,获取目标矩阵,目标矩阵包括具有第一尺寸的多个子矩阵,目标矩阵被划分为具有第二尺寸的多个块,第二尺寸与第一尺寸不同;对于多个块中的每个当前块,执行以下步骤:生成当前块中的左子矩阵边界相对于当前块中的预定列的第一偏移量、当前块中的右子矩阵边界相对于当前块中的预定列的第二偏移量、当前块中的上子矩阵边界相对于当前块中的预定行的第三偏移量和当前块中的下子矩阵边界相对于当前块中的预定行的第四偏移量;以及基于第一偏移量、第二偏移量、第三偏移量和第四偏移量,对当前块进行填充。
根据本公开的第二方面,提供了一种计算设备。该计算设备包括:存储器;处理器,与存储器相耦合,被配置成:获取目标矩阵,目标矩阵包括具有第一尺寸的多个子矩阵,目标矩阵被划分为具有第二尺寸的多个块,第二尺寸与第一尺寸不同;对于多个块中的每个当前块,生成当前块中的左子矩阵边界相对于当前块中的预定列的第一偏移量、当前块中的右子矩阵边界相对于当前块中的预定列的第二偏移量、当前块中的上子矩阵边界相对于当前块中的预定行的第三偏移量和当前块中的下子矩阵边界相对于当前块中的预定行的第四偏移量;以及矩阵计算单元,与存储器和处理器相耦合,被配置成:对于多个块中的每个当前块,基于第一偏移量、第二偏移量、第三偏移量和第四偏移量,对当前块进行填充。
在本公开的第三方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1是根据本公开的实施例的计算设备100的示意图。
图2是根据本公开的实施例的用于执行矩阵计算的方法200的示意图。
图3是根据本公开的实施例的目标矩阵300的示意图。
图4是根据本公开的实施例的块的填充结果400的示意图。
图5是根据本公开的实施例的块的填充结果500的示意图。
图6是根据本公开的实施例的块的填充结果600的示意图。
图7是根据本公开的实施例的块的填充结果700的示意图。
图8是根据本公开的实施例的块的填充结果800的示意图。
图9是根据本公开的实施例的块的填充结果900的示意图。
图10是根据本公开的实施例的块的填充结果1000的示意图。
图11是根据本公开的实施例的块的填充结果1100的示意图。
图12是根据本公开的实施例的块的填充结果1200的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,传统方案利用块大小的掩码来指示块内部的边界。但是传统方案存在两个问题:1)花费了过多的比特来编码块内部的样本边界,从而需要额外的总线带宽来传输这些掩码,以及需要额外的片上存储空间用于存储这些掩码;2)矩阵计算单元需要从掩码推断块内部的边界,从而增加了设计复杂度。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种用于执行矩阵计算的方案。在该方案中,处理器获取目标矩阵,目标矩阵包括具有第一尺寸的多个子矩阵,目标矩阵被划分为具有第二尺寸的多个块,第二尺寸与第一尺寸不同,以及对于多个块中的每个当前块,执行以下步骤:生成当前块中的左子矩阵边界相对于当前块中的预定列的第一偏移量、当前块中的右子矩阵边界相对于当前块中的预定列的第二偏移量、当前块中的上子矩阵边界相对于当前块中的预定行的第三偏移量和当前块中的下子矩阵边界相对于当前块中的预定行的第四偏移量。矩阵计算单元对于多个块中的每个当前块,基于第一偏移量、第二偏移量、第三偏移量和第四偏移量,对当前块进行填充。
以此方式,通过4个偏移量指示块内的4个子矩阵边界,能够减少用于表示块内的样本边界的比特数量,从而降低总线传输数据量和存储空间。此外,通过明确指示4个子矩阵边界的4个偏移量,无需矩阵计算单元120基于掩码来推导边界的复杂逻辑,从而简化了设计。
在下文中,将结合附图更详细地描述本方案的具体示例。
图1示出了根据本公开的实施例的计算设备100的示例的示意图。如图1所示,计算设备100可以包括(一个或多个)处理器110、(一个或多个)矩阵计算单元120和存储器130。处理器110、矩阵计算单元120和存储器130通过总线140进行耦合。
处理器110包括一个或多个通用或专用微处理器,其运行用于执行控制、计算、输入/输出等功能的指令。处理器110可以包括单个集成电路,例如微处理设备,或配合工作以完成处理器110的功能的多个集成电路设备和/或电路板。另外,处理器110可以运行在存储器130中存储的计算机程序或模块,例如操作系统、软件模块等。例如,软件模块可以包括机器学习应用、人工神经网络(ANN)应用、卷积神经网络(CNN)应用等。
处理器110包括但不限于:标量处理器(Scalar Processor), SIMD (SingleInstruction Multiple Data,单指令多数据)处理器, SIMT(Single InstructionMultiple Threads,单指令多线程)处理器,以及矢量处理器(Vector Processor)。
处理器110可以被配置成获取目标矩阵,目标矩阵包括具有第一尺寸的多个子矩阵,目标矩阵被划分为具有第二尺寸的多个块,第二尺寸与所述第一尺寸不同;以及对于多个块中的每个当前块,生成当前块中的左子矩阵边界相对于当前块中的预定列的第一偏移量、当前块中的右子矩阵边界相对于当前块中的预定列的第二偏移量、当前块中的上子矩阵边界相对于当前块中的预定行的第三偏移量和当前块中的下子矩阵边界相对于当前块中的预定行的第四偏移量。
矩阵计算单元120可以用于接收指令以及执行指令,以及对矩阵进行各种计算,例如乘法、加法、卷积等,以支持软件模块所实现的各种应用。矩阵计算单元120的示例包括但不限于现场可编程门阵列(FPGA)、图形处理单元(GPU)、专用集成电路(ASIC)等。矩阵计算单元120可以具有内部存储单元,例如静态随机存取存储器(SRAM),用于存储矩阵计算过程中的相关数据,例如目标矩阵、块、第一偏移量、第二偏移量、第三偏移量和第四偏移量等。应当理解,本文所述的矩阵包括2维矩阵、3维矩阵乃至多维矩阵,其涵盖了张量的概念。
矩阵计算单元120可以被配置成对于所述多个块中的每个当前块,基于第一偏移量、第二偏移量、第三偏移量和第四偏移量,对当前块进行填充,以用于执行矩阵计算。
存储器130用于存储由处理器110和/或矩阵计算单元120执行的指令以及数据。
总线140用于在处理器110、矩阵计算单元120和存储器130之间传递数据。例如,总线140可以根据处理器110的指令将第一偏移量、第二偏移量、第三偏移量和第四偏移量从处理器110传递给矩阵计算单元120。总线140也可以根据处理器110的指令将数据(例如,目标矩阵、块等)从存储器130传递给矩阵计算单元120。
由此,能够通过4个偏移量指示块内的4个子矩阵边界,能够减少用于表示块内的样本边界的比特数量,从而降低总线传输数据量和存储空间。此外,通过明确指示4个子矩阵边界的4个偏移量,无需矩阵计算单元120基于掩码来推导边界的复杂逻辑,从而简化了设计。
图2示出了根据本公开的实施例的用于执行矩阵计算的方法200的流程图。例如,方法200可以由如图1所示的计算设备110来执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框202处,处理器110获取目标矩阵,目标矩阵包括具有第一尺寸的多个子矩阵,目标矩阵被划分为具有第二尺寸的多个块,第二尺寸与第一尺寸不同。
图3示出了根据本公开的实施例的目标矩阵300的示意框图。如图3所述,目标矩阵300包括16个子矩阵310(也可以称为样本)。这16个子矩阵分为4行4列。每个子矩阵310的尺寸为14*14个像素。目标矩阵300还被划分为49个块(数据块,也可以称为片,tile)320。49个块320分为7行7列。每个块320的尺寸为8*8个像素。卷积运算例如可以逐块320进行。应当理解,图3中的目标矩阵、子矩阵和块仅是举例说明,目标矩阵、子矩阵和块可以具有其他的尺寸。还应当理解,这里的像素仅是举例说明,也可以包括其他类型的数据。
回到图2,在框204处,处理器110可以对于多个块中的每个当前块,生成当前块中的左子矩阵边界相对于当前块中的预定列的第一偏移量、当前块中的右子矩阵边界相对于当前块中的预定列的第二偏移量、当前块中的上子矩阵边界相对于当前块中的预定行的第三偏移量和当前块中的下子矩阵边界相对于当前块中的预定行的第四偏移量。
具体来说,处理器110可以确定当前块中是否存在垂直的子矩阵边界。如果处理器110确定当前块中不存在垂直的子矩阵边界,则将第一偏移量和第二偏移量设置为0。
在一些实施例中,如果处理器110确定当前块中存在一条垂直的子矩阵边界,则可以将第一偏移量设置为0,以及将第二偏移量设置为垂直的子矩阵边界相对于当前块中的预定列的偏移量。
备选地,在另一些实施例中,如果处理器110确定当前块中存在一条垂直的子矩阵边界,则可以将第一偏移量设置为垂直的子矩阵边界相对于当前块中的预定列的偏移量,以及将第二偏移量设置为0。
预定列例如包括但不限于第一列。
此外,处理器110还可以确定当前块中是否存在水平的子矩阵边界。如果处理器110确定当前块中不存在水平的子矩阵边界,则可以将第三偏移量和第四偏移量设置为0。
在一些实施例中,如果处理器110确定当前块中存在一条水平的子矩阵边界,则可以将第三偏移量设置为0,以及将第四偏移量设置为水平的子矩阵边界相对于当前块中的预定行的偏移量。
备选地,在另一些实施例中,如果处理器110确定当前块中存在一条水平的子矩阵边界,则可以将第三偏移量设置为水平的子矩阵边界相对于当前块中的预定行的偏移量,以及将第四偏移量设置为0。
预定行例如包括但不限于第一行。
第一偏移量可以通过第一数量个比特来表示。第一数量大于或等于用于表示当前块的列数的最小比特数量。例如,对于尺寸为8*8的块而言,其列数为8,用于表示8的最小比特数量为3个比特,因而可以用3个或更多比特来表示第一偏移量。第二偏移量的表示方式与第一偏移量类似,不再赘述。
第三偏移量可以通过第二数量个比特来表示。第二数量大于或等于用于表示当前块的行数的最小比特数量。例如,对于尺寸为8*8的块而言,其行数为8,用于表示8的最小比特数量为3个比特,因而可以用3个或更多比特来表示第三偏移量。第四偏移量的表示方式与第三偏移量类似,不再赘述。
应当理解,上面以8*8的块举例说明了第一偏移量到第四偏移量的表示形式,但是这只是举例说明,块可以具有更大或更小的尺寸或者不同规格的尺寸,例如长和宽不同,从而用于表示第一偏移量到第四偏移量的比特数量也可随着尺寸的变化而发生变化,本公开的范围在此不受限制。
由此,对于8*8的块而言,用于表示块内的样本边界的开销可以从64比特降低到12比特,极大地降低了总线开销和存储空间开销。
在框206处,矩阵计算单元120可以对于多个块中的每个当前块,基于第一偏移量、第二偏移量、第三偏移量和第四偏移量,对当前块进行填充,以用于执行矩阵计算。
由此,通过4个偏移量指示块内的4个子矩阵边界,能够减少用于表示块内的样本边界的比特数量,降低总线传输数据量和存储空间的开销。此外,通过明确指示4个子矩阵边界的4个偏移量,无需矩阵计算单元120基于掩码来推导边界的复杂逻辑,从而简化了用于多样本卷积的填充逻辑中的硬件设计。
除了生成指示4个子矩阵边界的4个偏移量之外,处理器110还可以生成是否在这4个偏移量处进行填充的指示。
在一些实施例中,处理器110还可以确定针对目标矩阵的指令是第一预定指令还是第二预定指令。第一预定指令例如为卷积指令(CONV,Convolution instruction),例如用于神经网络中的前向传播路径(FWD,Forward),或反向传播路径中的激活梯度计算部分(BPA pass,Back Propagation of Activation gradients pass)。第二预定指令例如为矩阵乘加指令(MMA,Matrix Multiply Accumulation),例如用于反向传播路径中的权重梯度计算部分(BPW pass,Backward Pass for Weight gradients pass)。
如果处理器110确定针对目标矩阵的指令为第一预定指令,则对于多个块中的每个当前块,将第一填充指示、第二填充指示、第三填充指示和第四填充指示确定为第一预定值。
第一填充指示用于指示在第一偏移量处是否进行填充。第二填充指示用于指示在第二偏移量处是否进行填充。第三填充指示用于指示在第三偏移量处是否进行填充。第四填充指示用于指示在第四偏移量处是否进行填充。第一预定值用于表示不填充。
如果处理器110确定针对目标矩阵的指令为第二预定指令,则对于多个块中的每个当前块,基于第一偏移量、第二偏移量以及额外填充需求,生成第一填充指示和第二填充指示;以及基于第三偏移量、第四偏移量以及额外填充需求,生成第三填充指示和第四填充指示。
具体来说,处理器110可以确定第一偏移量和第二偏移量是否均为0。如果处理器110确定第一偏移量和第二偏移量均为0,则将第一填充指示和第二填充指示确定为第一预定值。
处理器110如果确定第一偏移量不为0,则可以确定在第一偏移量处是否需要额外填充。如果处理器110确定在第一偏移量处不需要额外填充,则可以将第一填充指示确定为第一预定值。如果处理器110确定在第一偏移量处需要额外填充,则可以将第一填充指示确定为第二预定值,第二预定值用于表示填充。
第一预定值例如为0,以及第二预定值例如为1,或者反之亦然。第一预定值和第二预定值可以通过1个比特来实现。
处理器110如果确定第二偏移量不为0,则确定在第二偏移量处是否需要额外填充。如果处理器110确定在第二偏移量处不需要额外填充,则可以将第二填充指示确定为第一预定值。如果处理器110确定在第二偏移量处需要额外填充,则可以将第二填充指示确定为第二预定值。
类似地,处理器110可以确定第三偏移量和第四偏移量是否均为0。如果处理器110确定第三偏移量和第四偏移量均为0,则将第三填充指示和第四填充指示确定为第一预定值。
处理器110如果确定第三偏移量不为0,则可以确定在第三偏移量处是否需要额外填充。如果处理器110确定在第三偏移量处不需要额外填充,则可以将第三填充指示确定为第一预定值。如果处理器110确定在第三偏移量处需要额外填充,则可以将第三填充指示确定为第二预定值。
处理器110如果确定第四偏移量不为0,则确定在第四偏移量处是否需要额外填充。如果处理器110确定在第四偏移量处不需要额外填充,则可以将第四填充指示确定为第一预定值。如果处理器110确定在第四偏移量处需要额外填充,则可以将第四填充指示确定为第二预定值。
由此,能够针对矩阵乘加指令(MMA,Matrix Multiply Accumulation),仅在对于反向传播路径中的权重梯度计算部分(BPW pass)在偏移量处需要额外填充时,将对应填充指示设置为表示填充的值,而在其他情况将对应填充指示设置为表示不填充的值,便于矩阵计算单元基于填充指示来对块进行填充。
第一偏移量和第一填充指示可以一起表示为第三数量个比特。第三数量例如包括但不限于用于表示当前块的列数的最小比特数量+1。例如,对于8*8的块而言,可以用3+1=4个比特来表示第一偏移量和第一填充指示。在一些实施例中,第一填充指示可以通过第三数量个比特中的最高位比特来表示,例如4个比特中的bit3。在另一些实施例中,第一填充指示可以通过4个比特中的最低位比特来表示,例如4个比特中的bit0。
类似地,第二偏移量和第二填充指示也可以一起表示为第三数量个比特。第二填充指示也可以通过最高位比特或最低位比特来表示。
第三偏移量和第三填充指示可以一起表示为第四数量个比特。第四数量例如包括但不限于用于表示当前块的行数的最小比特数量+1。例如,对于8*8的块而言,可以用3+1=4个比特来表示第三偏移量和第三填充指示。在一些实施例中,第三填充指示可以通过第四数量个比特中的最高位比特来表示,例如4个比特中的bit3。在另一些实施例中,第三填充指示可以通过第四数量个比特中的最低位比特来表示,例如4个比特中的bit0。
类似地,第四偏移量和第四填充指示也可以一起表示为第四数量个比特。第四填充指示也可以通过最高位比特或最低位比特来表示。
由此,对于8*8的块而言,用于表示块内的样本边界的开销可以从64比特降低到16比特,极大地降低了总线开销和存储空间开销。
在一些实施例中,处理器110如果确定针对目标矩阵的指令为第二预定指令,则确定针对当前块的加载指令中是否指示左移填充。针对当前块的加载指令可以用于将当前块从存储器130加载到矩阵计算单元120内部的存储单元中。例如,针对当前块的加载指令为LDCONV(Load convolution instruction),其中使用的padx=1表示右移填充,padx=-1表示左移填充。应当理解,这里以pad=1表示右移填充,以padx=-1表示左移填充仅是举例说明,也可以采用padx=-1表示右移填充,padx=1表示左移填充,或者任何其他的合适形式来表示,本公开的范围在此不受限制。
如果处理器110确定针对当前块的加载指令中指示左移填充,则将第一偏移量和第二偏移量中的非零偏移量减1。例如,如果确定padx=-1,也就是表明加载指令指示左移填充,则确定第一偏移量是否大于零,如果第一偏移量大于0,则将第一偏移量减1,还确定第二偏移量是否大于零,如果第二偏移量大于0,则将第二偏移量减1。
由此,在加载块时进行左移填充的情况下,原有的元素均向左移动了1位,使得元素的水平偏移量减小了1,通过使得非零的第一偏移量和第二偏移量减1,从而得到左移填充后的正确水平偏移。
备选地或者附加地,在一些实施例中,处理器110如果确定针对目标矩阵的指令为第二预定指令,则确定针对当前块的加载指令中是否指示上移填充。例如,针对当前块的加载指令为LDCONV,其中使用的pady=1表示下移填充,pady=-1表示上移填充。
如果处理器110确定针对当前块的加载指令中指示上移填充,则将第三偏移量和第四偏移量中的非零偏移量减1。例如,如果确定pady=-1,也就是表明加载指令指示上移填充,则确定第三偏移量是否大于零,如果第三偏移量大于0,则将第三偏移量减1,还确定第四偏移量是否大于零,如果第四偏移量大于0,则将第四偏移量减1。
由此,在加载块时进行上移填充的情况下,原有的元素均向上移动了1位,使得元素的垂直偏移量减小了1,通过使得非零的第三偏移量和第四偏移量减1,从而得到上移填充后的正确垂直偏移。
矩阵计算单元120可以对于多个块中的每个当前块,基于第一偏移量、第二偏移量、第三偏移量和第四偏移量、第一填充指示、第二填充指示、第三填充指示和第四填充指示,对当前块进行填充。
具体来说,矩阵计算单元120基于第一填充指示,在当前块中相对于预定列的第一偏移量处进行填充,基于第二填充指示,在当前块中相对于预定列的第二偏移量处进行填充,基于第三填充指示,在当前块中相对于预定行的第三偏移量处进行填充,以及基于第四填充指示,在当前块中相对于预定列的第一偏移量处进行填充。
例如,矩阵计算单元120如果确定第一填充指示等于第一预定值(例如0),则在当前块中相对于预定列的第一偏移量处不进行填充。矩阵计算单元120如果确定第一填充指示等于第二预定值(例如1),则在当前块中相对于预定列的第一偏移量处进行填充,例如0值或周围值。第二填充指示也是类似,不再赘述。
例如,矩阵计算单元120如果确定第三填充指示等于第一预定值(例如0),则在当前块中相对于预定行的第三偏移量处不进行填充。矩阵计算单元120如果确定第三填充指示等于第二预定值(例如1),则在当前块中相对于预定行的第三偏移量处进行填充,例如0值或周围值。第四填充指示也是类似,不再赘述。
由此,矩阵计算单元能够直接基于填充指示在块中的对应偏移量处进行填充,使得用于诸如前向传播路径(FWD),反向传播路径中的激活梯度计算部分(BPA pass)以及权重梯度计算部分(BPW pass)中的多样本卷积的填充逻辑的硬件设计得到简化。
下面结合图4-图12举例说明本公开的一些填充示例。
示例1
[x30, x31, x32, x33, x34, x35, x36, x37]为经由带有padx=0的加载指令LDCONV加载后的数据。
由于在当前块内部没有样本边界,因此第一偏移量x0=0,第二偏移量x1=0。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=0,x0[2:0]=0;x1的bit3=0,x1[2:0]=0。
如图4所示,由于x0的bit3和x1的bit3均为0,因而使用该数据的矩阵计算单元将不会对该数据进行额外填充。
示例2
[pad, x30, x31, x32, x33, x34, x35, x36] 为经由带有padx=1的加载指令LDCONV加载后的数据。应当理解,由于padx=1,因而加载指令LDCONV已经将行数据向右平移一个像素,并且在空出的位置进行了填充。
由于在当前块内部没有样本边界,因此第一偏移量x0=0,第二偏移量x1=0。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=0,x0[2:0]=0;x1的bit3=0,x1[2:0]=0。
如图5所示,由于x0的bit3和x1的bit3均为0,因而使用该数据的矩阵计算单元将不会对该数据进行额外填充。
示例3
[x31, x32, x33, x34, x35, x36, x37, pad] 为经由带有padx=-1的加载指令LDCONV加载后的数据。应当理解,由于padx=-1,因而加载指令LDCONV已经将行数据向左平移一个像素,并且在空出的位置进行了填充。
由于在当前块内部没有样本边界,因此第一偏移量x0=0,第二偏移量x1=0。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=0,x0[2:0]=0;x1的bit3=0,x1[2:0]=0。
如图6所示,由于x0的bit3和x1的bit3均为0,因而使用该数据的矩阵计算单元将不会对该数据进行额外填充。
示例4
[x30, x31, x32, x33, x34, x35, x36, x37] 为经由带有padx=0的加载指令LDCONV加载后的数据。
由于在当前块内部在x=6处存在样本边界,因此第一偏移量x0=0,第二偏移量x1=6。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=0,x0[2:0]=0;x1的bit3=0,x1[2:0]=6。
如图7所示,由于x0的bit3和x1的bit3均为0,因而使用该数据的矩阵计算单元将不会对该数据进行额外填充。
示例5
[pad, x30, x31, x32, x33, x34, x35, x36] 为经由带有padx=1的加载指令LDCONV加载后的数据。应当理解,由于padx=1,因而加载指令LDCONV已经将行数据向右平移一个像素,并且在空出的位置进行了填充。
由于在当前块内部在x=6处存在样本边界,因此第一偏移量x0=0,第二偏移量x1=6。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=0,x0[2:0]=0;x1的bit3=1,x1[2:0]=6。
如图8所示,由于x1的bit3为1,指示需要进一步填充,并且x1[2:0]=6指示了填充执行的位置,因而使用该数据的矩阵计算单元会将x=6处的数据x35替换为填充值(例如0)。进行实际矩阵乘法运算的行数据变为[pad, x30, x31, x32, x33, x34, pad, x36]。
示例6
[x31, x32, x33, x34, x35, x36, x37, pad]为经由带有padx=-1的加载指令LDCONV加载后的数据。应当理解,由于padx=-1,因而加载指令LDCONV已经将行数据向左平移一个像素,并且在空出的位置进行了填充。
由于在当前块内部在x=6处存在样本边界,因此第一偏移量x0=0,第二偏移量x1=6。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=0,x0[2:0]=0;x1的bit3=1,x1[2:0]=5(当前x=原始x-1)。
如图9所示,由于x1的bit3为1,指示需要进一步填充,并且x1[2:0]=5指示了填充执行的位置,因而使用该数据的矩阵计算单元会将x=5处的数据x36替换为填充值(例如0)。进行实际矩阵乘法运算的行数据变为[x31, x32, x33, x34, x35, pad, x37, pad]。
示例7
[x30, x31, x32, x33, x34, x35, x36, x37] 为经由带有padx=0的加载指令LDCONV加载后的数据。
由于在当前块内部在x=2处存在样本边界以及在x=7处存在样本边界,因此第一偏移量x0=2,第二偏移量x1=7。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=0,x0[2:0]=2;x1的bit3=0,x1[2:0]=7。
如图10所示,由于x0的bit3和x1的bit3均为0,因而使用该数据的矩阵计算单元将不会对该数据进行额外填充。
示例8
[pad, x30, x31, x32, x33, x34, x35, x36] 为经由带有padx=1的加载指令LDCONV加载后的数据。应当理解,由于padx=1,因而加载指令LDCONV已经将行数据向右平移一个像素,并且在空出的位置进行了填充。
由于在当前块内部在x=2处存在样本边界以及在x=7处存在样本边界,因此第一偏移量x0=2,第二偏移量x1=7。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=1,x0[2:0]=2;x1的bit3=1,x1[2:0]=7。
如图11所示,由于x0的bit3为1,指示需要进一步填充,并且x0[2:0]=2指示了填充执行的位置,因而使用该数据的矩阵计算单元会将x=2处的数据x31替换为填充值(例如0)。由于x1的bit3为1,指示需要进一步填充,并且x1[2:0]=7指示了填充执行的位置,因而使用该数据的矩阵计算单元会将x=7处的数据x36替换为填充值(例如0)。进行实际矩阵乘法运算的行数据变为[pad, x30, pad, x32, x33, x34, x35, pad]。
示例9
[x31, x32, x33, x34, x35, x36, x37, pad]为经由带有padx=-1的加载指令LDCONV加载后的数据。应当理解,由于padx=-1,因而加载指令LDCONV已经将行数据向左平移一个像素,并且在空出的位置进行了填充。
由于在当前块内部在x=2处存在样本边界以及在x=7处存在样本边界,因此第一偏移量x0=2,第二偏移量x1=7。
对于该情形的偏移量和填充指示的编码可如下所示:x0的bit3=1,x0[2:0]=1(当前x=原始x-1);x1的bit3=1,x1[2:0]= 6(当前x=原始x-1)。
如图12所示,由于x0的bit3为1,指示需要进一步填充,并且x0[2:0]=1指示了填充执行的位置,因而使用该数据的矩阵计算单元会将x=1处的数据x32替换为填充值(例如0)。由于x1的bit3为1,指示需要进一步填充,并且x1[2:0]=6指示了填充执行的位置,因而使用该数据的矩阵计算单元会将x=6处的数据x37替换为填充值(例如0)。进行实际矩阵乘法运算的行数据变为[x31, pad, x33, x34, x35, x36, pad, pad]。
本公开涉及方法、装置、系统、计算设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (23)

1.一种用于执行矩阵计算的方法,包括:
在计算设备处,获取目标矩阵,所述目标矩阵包括具有第一尺寸的多个子矩阵,所述目标矩阵被划分为具有第二尺寸的多个块,所述第二尺寸与所述第一尺寸不同;
对于所述多个块中的每个当前块,执行以下步骤:
生成当前块中的左子矩阵边界相对于当前块中的预定列的第一偏移量、当前块中的右子矩阵边界相对于当前块中的所述预定列的第二偏移量、当前块中的上子矩阵边界相对于当前块中的预定行的第三偏移量和当前块中的下子矩阵边界相对于当前块中的所述预定行的第四偏移量;以及
基于所述第一偏移量、所述第二偏移量、所述第三偏移量和所述第四偏移量,对当前块进行填充,以用于执行矩阵计算。
2.根据权利要求1所述的方法,其中生成所述第一偏移量和所述第二偏移量包括:
如果确定当前块中不存在垂直的子矩阵边界,则将所述第一偏移量和所述第二偏移量设置为0;以及
如果确定当前块中存在一条垂直的子矩阵边界,则:
将所述第一偏移量设置为0,以及将所述第二偏移量设置为所述垂直的子矩阵边界相对于当前块中的所述预定列的偏移量;或者
将所述第一偏移量设置为所述垂直的子矩阵边界相对于当前块中的所述预定列的偏移量,以及将所述第二偏移量设置为0。
3.根据权利要求1所述的方法,其中生成所述第三偏移量和所述第四偏移量包括:
如果确定当前块中不存在水平的子矩阵边界,则将所述第三偏移量和所述第四偏移量设置为0;以及
如果确定当前块中存在一条水平的子矩阵边界,则:
将所述第三偏移量设置为0,以及将所述第四偏移量设置为所述水平的子矩阵边界相对于当前块中的所述预定行的偏移量;或者
将所述第三偏移量设置为所述水平的子矩阵边界相对于当前块中的所述预定行的偏移量,以及将所述第四偏移量设置为0。
4.根据权利要求1所述的方法,其中所述第一偏移量和所述第二偏移量分别通过第一数量个比特来表示,所述第一数量大于或等于用于表示当前块的列数的最小比特数量,所述第三偏移量和所述第四偏移量分别通过第二数量个比特来表示,所述第二数量大于或等于用于表示当前块的行数的最小比特数量。
5.根据权利要求1-4中任一项所述的方法,还包括:
对于所述多个块中的每个当前块,执行以下步骤:
如果确定针对所述目标矩阵的指令为第一预定指令,则将第一填充指示、第二填充指示、第三填充指示和第四填充指示确定为第一预定值,所述第一填充指示用于指示在所述第一偏移量处是否进行填充,所述第二填充指示用于指示在所述第二偏移量处是否进行填充,所述第三填充指示用于指示在所述第三偏移量处是否进行填充,所述第四填充指示用于指示在所述第四偏移量处是否进行填充,所述第一预定值用于表示不填充;
如果确定针对所述目标矩阵的指令为第二预定指令,则:
基于所述第一偏移量、所述第二偏移量以及额外填充需求,生成所述第一填充指示和所述第二填充指示;以及
基于所述第三偏移量、所述第四偏移量以及额外填充需求,生成所述第三填充指示和所述第四填充指示;以及
基于所述第一偏移量、所述第二偏移量、所述第三偏移量和所述第四偏移量、所述第一填充指示、所述第二填充指示、所述第三填充指示和所述第四填充指示,对当前块进行填充。
6.根据权利要求5所述的方法,其中生成所述第一填充指示和所述第二填充指示包括:
如果确定所述第一偏移量和所述第二偏移量均为0,则将所述第一填充指示和所述第二填充指示确定为所述第一预定值;
如果确定所述第一偏移量不为0,则:
确定在所述第一偏移量处是否需要额外填充;
如果确定在所述第一偏移量处不需要额外填充,则将所述第一填充指示确定为所述第一预定值;
如果确定在所述第一偏移量处需要额外填充,则将所述第一填充指示确定为第二预定值,所述第二预定值用于表示填充;
如果确定所述第二偏移量不为0,则:
确定在所述第二偏移量处是否需要额外填充;
如果确定在所述第二偏移量处不需要额外填充,则将所述第二填充指示确定为所述第一预定值;以及
如果确定在所述第二偏移量处需要额外填充,则将所述第二填充指示确定为所述第二预定值。
7.根据权利要求5所述的方法,其中生成所述第三填充指示和所述第四填充指示包括:
如果确定所述第三偏移量和所述第四偏移量均为0,则将所述第三填充指示和所述第四填充指示确定为所述第一预定值;
如果确定所述第三偏移量不为0,则:
确定在所述第三偏移量处是否需要额外填充;
如果确定在所述第三偏移量处不需要额外填充,则将所述第三填充指示确定为所述第一预定值;
如果确定在所述第三偏移量处需要额外填充,则将所述第三填充指示确定为第二预定值,所述第二预定值用于表示填充;
如果确定所述第四偏移量不为0,则:
确定在所述第四偏移量处是否需要额外填充;
如果确定在所述第四偏移量处不需要额外填充,则将所述第四填充指示确定为所述第一预定值;以及
如果确定在所述第四偏移量处需要额外填充,则将所述第四填充指示确定为所述第二预定值。
8.根据权利要求5所述的方法,其中所述第一偏移量和所述第一填充指示一起表示为第三数量个比特,所述第二偏移量和所述第二填充指示一起表示为所述第三数量个比特,所述第三数量为用于表示当前块的列数的最小比特数量+1,所述第三偏移量和所述第三填充指示一起表示为第四数量个比特,所述第四偏移量和所述第四填充指示一起表示为所述第四数量个比特,所述第四数量为用于表示当前块的行数的最小比特数量+1。
9.根据权利要求8所述的方法,其中所述第一填充指示、所述第二填充指示、所述第三填充指示和所述第四填充指示通过最高位比特或最低位比特来表示。
10.根据权利要求5所述的方法,还包括:
如果确定针对所述目标矩阵的指令为第二预定指令,则确定针对当前块的加载指令中是否指示左移填充;以及
如果确定针对当前块的加载指令中指示左移填充,则将所述第一偏移量和所述第二偏移量中的非零偏移量减1。
11.根据权利要求5所述的方法,还包括:
如果确定针对所述目标矩阵的指令为第二预定指令,则确定针对当前块的加载指令中是否指示上移填充;以及
如果确定针对当前块的加载指令中指示上移填充,则将所述第三偏移量和所述第四偏移量中的非零偏移量减1。
12.一种计算设备,包括:
存储器;
处理器,与所述存储器相耦合,被配置成:
获取目标矩阵,所述目标矩阵包括具有第一尺寸的多个子矩阵,所述目标矩阵被划分为具有第二尺寸的多个块,所述第二尺寸与所述第一尺寸不同;
对于所述多个块中的每个当前块,生成当前块中的左子矩阵边界相对于当前块中的预定列的第一偏移量、当前块中的右子矩阵边界相对于当前块中的所述预定列的第二偏移量、当前块中的上子矩阵边界相对于当前块中的预定行的第三偏移量和当前块中的下子矩阵边界相对于当前块中的所述预定行的第四偏移量;以及
矩阵计算单元,与所述存储器和所述处理器相耦合,被配置成:
对于所述多个块中的每个当前块,基于所述第一偏移量、所述第二偏移量、所述第三偏移量和所述第四偏移量,对当前块进行填充,以用于执行矩阵计算。
13.根据权利要求12所述的计算设备,其中所述处理器还被配置成:
如果确定当前块中不存在垂直的子矩阵边界,则将所述第一偏移量和所述第二偏移量设置为0;以及
如果确定当前块中存在一条垂直的子矩阵边界,则:
将所述第一偏移量设置为0,以及将所述第二偏移量设置为所述垂直的子矩阵边界相对于当前块中的所述预定列的偏移量;或者
将所述第一偏移量设置为所述垂直的子矩阵边界相对于当前块中的所述预定列的偏移量,以及将所述第二偏移量设置为0。
14.根据权利要求12所述的计算设备,其中所述处理器还被配置成:
如果确定当前块中不存在水平的子矩阵边界,则将所述第三偏移量和所述第四偏移量设置为0;以及
如果确定当前块中存在一条水平的子矩阵边界,则:
将所述第三偏移量设置为0,以及将所述第四偏移量设置为所述水平的子矩阵边界相对于当前块中的所述预定行的偏移量;或者
将所述第三偏移量设置为所述水平的子矩阵边界相对于当前块中的所述预定行的偏移量,以及将所述第四偏移量设置为0。
15.根据权利要求12所述的计算设备,其中所述第一偏移量和所述第二偏移量分别通过第一数量个比特来表示,所述第一数量大于或等于用于表示当前块的列数的最小比特数量,所述第三偏移量和所述第四偏移量分别通过第二数量个比特来表示,所述第二数量大于或等于用于表示当前块的行数的最小比特数量。
16.根据权利要求12-15中任一项所述的计算设备,其中所述处理器还被配置成对于所述多个块中的每个当前块,执行以下步骤:
如果确定针对所述目标矩阵的指令为第一预定指令,则将第一填充指示、第二填充指示、第三填充指示和第四填充指示确定为第一预定值,所述第一填充指示用于指示在所述第一偏移量处是否进行填充,所述第二填充指示用于指示在所述第二偏移量处是否进行填充,所述第三填充指示用于指示在所述第三偏移量处是否进行填充,所述第四填充指示用于指示在所述第四偏移量处是否进行填充,所述第一预定值用于表示不填充;
如果确定针对所述目标矩阵的指令为第二预定指令,则:
基于所述第一偏移量、所述第二偏移量以及额外填充需求,生成所述第一填充指示和所述第二填充指示;以及
基于所述第三偏移量、所述第四偏移量以及额外填充需求,生成所述第三填充指示和所述第四填充指示;以及
所述矩阵计算单元还被配置成对于所述多个块中的每个当前块,基于所述第一偏移量、所述第二偏移量、所述第三偏移量和所述第四偏移量、所述第一填充指示、所述第二填充指示、所述第三填充指示和所述第四填充指示,对当前块进行填充。
17.根据权利要求16所述的计算设备,其中所述处理器还被配置成:
如果确定所述第一偏移量和所述第二偏移量均为0,则将所述第一填充指示和所述第二填充指示确定为所述第一预定值;
如果确定所述第一偏移量不为0,则确定在所述第一偏移量处是否需要额外填充;
如果确定在所述第一偏移量处不需要额外填充,则将所述第一填充指示确定为所述第一预定值;
如果确定在所述第一偏移量处需要额外填充,则将所述第一填充指示确定为第二预定值,所述第二预定值用于表示填充;
如果确定所述第二偏移量不为0,则确定在所述第二偏移量处是否需要额外填充;
如果确定在所述第二偏移量处不需要额外填充,则将所述第二填充指示确定为所述第一预定值;以及
如果确定在所述第二偏移量处需要额外填充,则将所述第二填充指示确定为所述第二预定值。
18.根据权利要求16所述的计算设备,其中所述处理器还被配置成:
如果确定所述第三偏移量和所述第四偏移量均为0,则将所述第三填充指示和所述第四填充指示确定为所述第一预定值;
如果确定所述第三偏移量不为0,则确定在所述第三偏移量处是否需要额外填充;
如果确定在所述第三偏移量处不需要额外填充,则将所述第三填充指示确定为所述第一预定值;
如果确定在所述第三偏移量处需要额外填充,则将所述第三填充指示确定为第二预定值,所述第二预定值用于表示填充;
如果确定所述第四偏移量不为0,则确定在所述第四偏移量处是否需要额外填充;
如果确定在所述第四偏移量处不需要额外填充,则将所述第四填充指示确定为所述第一预定值;以及
如果确定在所述第四偏移量处需要额外填充,则将所述第四填充指示确定为所述第二预定值。
19.根据权利要求16所述的计算设备,其中所述第一偏移量和所述第一填充指示一起表示为第三数量个比特,所述第二偏移量和所述第二填充指示一起表示为所述第三数量个比特,所述第三数量为用于表示当前块的列数的最小比特数量+1,所述第三偏移量和所述第三填充指示一起表示为第四数量个比特,所述第四偏移量和所述第四填充指示一起表示为所述第四数量个比特,所述第四数量为用于表示当前块的行数的最小比特数量+1。
20.根据权利要求19所述的计算设备,其中所述第一填充指示、所述第二填充指示、所述第三填充指示和所述第四填充指示通过最高位比特或最低位比特来表示。
21.根据权利要求16所述的计算设备,其中所述处理器还被配置成:
如果确定针对所述目标矩阵的指令为第二预定指令,则确定针对当前块的加载指令中是否指示左移填充;以及
如果确定针对当前块的加载指令中指示左移填充,则将所述第一偏移量和所述第二偏移量中的非零偏移量减1。
22.根据权利要求16所述的计算设备,其中所述处理器还被配置成:
如果确定针对所述目标矩阵的指令为第二预定指令,则确定针对当前块的加载指令中是否指示上移填充;以及
如果确定针对当前块的加载指令中指示上移填充,则将所述第三偏移量和所述第四偏移量中的非零偏移量减1。
23.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-11中任一项所述的方法。
CN202111035783.3A 2021-09-06 2021-09-06 用于执行矩阵计算的方法、计算设备和计算机存储介质 Active CN113496008B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111035783.3A CN113496008B (zh) 2021-09-06 2021-09-06 用于执行矩阵计算的方法、计算设备和计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111035783.3A CN113496008B (zh) 2021-09-06 2021-09-06 用于执行矩阵计算的方法、计算设备和计算机存储介质

Publications (2)

Publication Number Publication Date
CN113496008A CN113496008A (zh) 2021-10-12
CN113496008B true CN113496008B (zh) 2021-12-03

Family

ID=77997073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111035783.3A Active CN113496008B (zh) 2021-09-06 2021-09-06 用于执行矩阵计算的方法、计算设备和计算机存储介质

Country Status (1)

Country Link
CN (1) CN113496008B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115600062B (zh) * 2022-12-14 2023-04-07 深圳思谋信息科技有限公司 卷积处理方法、电路、电子设备及计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593803A (zh) * 2013-10-17 2014-02-19 广东电网公司茂名供电局 电力系统设备图元的复杂矩阵拆分方法
WO2018160843A1 (en) * 2017-03-01 2018-09-07 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (mma)
CN110390075A (zh) * 2019-07-19 2019-10-29 广东省新一代通信与网络创新研究院 矩阵预处理方法、装置、终端及可读存储介质
CN111581595A (zh) * 2020-04-24 2020-08-25 科大讯飞股份有限公司 一种矩阵乘法计算方法及计算电路
CN112348028A (zh) * 2020-11-30 2021-02-09 广东国粒教育技术有限公司 一种场景文本检测方法、批改方法、装置、电子设备及介质
CN112835552A (zh) * 2021-01-26 2021-05-25 算筹信息科技有限公司 一种外积累加求解稀疏矩阵与稠密矩阵内积的方法
CN113190791A (zh) * 2018-08-06 2021-07-30 华为技术有限公司 矩阵的处理方法、装置及逻辑电路

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593803A (zh) * 2013-10-17 2014-02-19 广东电网公司茂名供电局 电力系统设备图元的复杂矩阵拆分方法
WO2018160843A1 (en) * 2017-03-01 2018-09-07 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (mma)
CN113190791A (zh) * 2018-08-06 2021-07-30 华为技术有限公司 矩阵的处理方法、装置及逻辑电路
CN110390075A (zh) * 2019-07-19 2019-10-29 广东省新一代通信与网络创新研究院 矩阵预处理方法、装置、终端及可读存储介质
CN111581595A (zh) * 2020-04-24 2020-08-25 科大讯飞股份有限公司 一种矩阵乘法计算方法及计算电路
CN112348028A (zh) * 2020-11-30 2021-02-09 广东国粒教育技术有限公司 一种场景文本检测方法、批改方法、装置、电子设备及介质
CN112835552A (zh) * 2021-01-26 2021-05-25 算筹信息科技有限公司 一种外积累加求解稀疏矩阵与稠密矩阵内积的方法

Also Published As

Publication number Publication date
CN113496008A (zh) 2021-10-12

Similar Documents

Publication Publication Date Title
CN111095241A (zh) 加速数学引擎
EP0656582B1 (en) Parallel adding and averaging circuit and method
US9076254B2 (en) Texture unit for general purpose computing
KR20190119074A (ko) 데이터 처리장치에서의 산술 확대
KR102584031B1 (ko) 데이터 처리장치에서의 요소 바이 벡터 연산
US10922785B2 (en) Processor and method for scaling image
CN108845828B (zh) 一种协处理器、矩阵运算加速方法及系统
CN113496008B (zh) 用于执行矩阵计算的方法、计算设备和计算机存储介质
CN104254833A (zh) 基于向量和标量的模取幂
JP7129138B2 (ja) 16ビット浮動小数点乗算器を用いた行列と行列の乗算による複数精度整数乗算器
US20230254145A1 (en) System and method to improve efficiency in multiplicationladder-based cryptographic operations
CN117435855B (zh) 用于进行卷积运算的方法、电子设备和存储介质
CN112862725A (zh) 用于计算的方法、计算设备和计算机可读存储介质
US20210349690A1 (en) Using a low-bit-width dot product engine to sum high-bit-width numbers
US7647368B2 (en) Data processing apparatus and method for performing data processing operations on floating point data elements
CN116501289A (zh) 数据处理集成电路、数据处理方法和机器可读存储介质
Strzodka et al. Mixed precision methods for convergent iterative schemes
CN111723917B (zh) 运算方法、装置及相关产品
CN112817735A (zh) 计算装置、计算设备以及用于线程组累加的方法
US11829754B2 (en) Compile device, compile method, and non-transitory computer readable medium for increasing a speed of a program
CN118349213B (zh) 一种数据处理装置、方法、介质及计算设备
CN111507178B (zh) 数据处理的优化方法及装置、存储介质、计算机设备
CN113836481B (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
US20240069868A1 (en) Mac operator related to correcting a computational error
CN118093021B (zh) 执行转置计算的方法、计算核、装置、介质和程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: Room 0106-508, 1st floor, No.26, shangdixin Road, Haidian District, Beijing 100085

Patentee after: Beijing Bilin Technology Development Co.,Ltd.

Country or region after: China

Patentee after: Shanghai Bi Ren Technology Co.,Ltd.

Address before: Room 0106-508, 1st floor, No.26, shangdixin Road, Haidian District, Beijing 100085

Patentee before: Beijing Bilin Technology Development Co.,Ltd.

Country or region before: China

Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd.

CP03 Change of name, title or address