CN113853601A - 用于矩阵运算的装置和方法 - Google Patents

用于矩阵运算的装置和方法 Download PDF

Info

Publication number
CN113853601A
CN113853601A CN202080036960.7A CN202080036960A CN113853601A CN 113853601 A CN113853601 A CN 113853601A CN 202080036960 A CN202080036960 A CN 202080036960A CN 113853601 A CN113853601 A CN 113853601A
Authority
CN
China
Prior art keywords
matrix
elements
circuit
processing apparatus
data processing
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
Application number
CN202080036960.7A
Other languages
English (en)
Inventor
M·马蒂那
刘志刚
P·N·沃特莫
D·H·曼塞尔
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.)
ARM Ltd
Original Assignee
ARM 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 ARM Ltd filed Critical ARM Ltd
Publication of CN113853601A publication Critical patent/CN113853601A/zh
Pending legal-status Critical Current

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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供了一种用于对第一矩阵和第二矩阵执行运算的数据处理装置。所述数据处理装置包括接收器电路,所述接收器电路用于接收所述第一矩阵的元素、所述第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据。所述确定电路使用所述对应数据来确定针对所述第一矩阵的列i中的所述第一矩阵的给定元素,所述第二矩阵的给定元素是否出现在所述第二矩阵的行i中。聚合电路计算所述第一矩阵中的给定行与所述第二矩阵中的给定列之间的聚合并且包括:功能电路,所述功能电路用于根据所述确定对所述第一矩阵的所述给定元素和所述第二矩阵的所述给定元素执行功能以产生部分结果。

Description

用于矩阵运算的装置和方法
技术领域
本公开涉及数据处理。
具体实施方式
当执行矩阵运算诸如矩阵乘法时,可执行多个子步骤。在许多情况下,这些子步骤对整体矩阵运算几乎没有影响。例如,当两个稀疏矩阵(包含相对较大比例的值为0的条目的那些矩阵)相乘在一起时,发生大量的乘以零。在卷积神经网络(CNN)中可能尤其如此,该CNN通常用于例如图像分类。此类乘法可能是浪费的,因为乘以零导致为零的结果,但实际执行乘法的过程可能仍消耗电路时间和功率。此外,存储此类矩阵可使用大量存储空间。因此,期望能够使用较少数量的子步骤来执行此类运算。还期望使用较少存储空间来存储此类矩阵,由此减小资源消耗以及功率和潜在电路大小。
发明内容
从第一示例性配置来看,提供了一种用于对第一矩阵和第二矩阵执行运算的数据处理装置,所述数据处理装置包括:接收器电路,所述接收器电路用于接收所述第一矩阵的元素、所述第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据;确定电路,所述确定电路用于使用所述对应数据来确定针对所述第一矩阵的行i、列i中的所述第一矩阵的给定元素,所述第二矩阵的所述元素中的给定元素是否出现在所述第二矩阵的行j、列i中;和聚合电路,所述聚合电路用于计算所述第一矩阵中的给定行i与所述第二矩阵中的给定列i之间的聚合,包括:功能电路,所述功能电路用于根据所述确定对所述第一矩阵的所述给定元素和所述第二矩阵的所述给定元素执行功能以产生部分结果。
从第二示例性配置来看,提供了一种对第一矩阵和第二矩阵执行运算的数据处理方法,所述方法包括以下步骤:接收所述第一矩阵的元素、所述第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据;使用所述对应数据来确定针对所述第一矩阵的列i中的所述第一矩阵的给定元素,所述第二矩阵的给定元素是否出现在所述第二矩阵的行i中;以及通过根据所述确定对所述第一矩阵的所述给定元素和所述第二矩阵的所述给定元素执行功能以产生部分结果,计算所述第一矩阵中的给定行与所述第二矩阵中的给定列之间的聚合。
从第三示例性配置来看,提供了一种数据处理装置,所述数据处理装置包括:解码电路,所述解码电路用于接收包括矩阵运算指令的一个或多个指令,其中所述矩阵运算指令引用第一矩阵的元素、第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据,其中响应于接收到所述矩阵运算指令,所述解码电路生成一个或多个控制信号以便致使一个或多个执行单元对所述第一矩阵和所述第二矩阵执行矩阵运算。
附图说明
将参考如附图所示的本发明的实施方案,仅以举例的方式进一步描述本发明,其中:
图1示意性地示出了根据一些实施方案的示例性数据处理装置;
图2示出了矩阵乘法累加运算以及可如何表示矩阵的某些元素的位置;
图3示出了以压缩形式的图2的矩阵中的一些,以及指示压缩矩阵中的元素如何定位在(原始)矩阵内的对应数据;
图4展示了图3所示的压缩矩阵可如何存储在寄存器中;
图5示出了根据一些实施方案的能够以如前所述的压缩矩阵执行矩阵运算的电路;
图6示出了矩阵乘法累加运算,其中第二矩阵未压缩;
图7示出了图6所示的未压缩第二矩阵如何存储在寄存器中;
图8示出了根据一些实施方案的能够以如前所述的压缩矩阵执行矩阵运算的电路;
图9示出了根据一些实施方案的用于对矩阵运算指令进行解码的电路;并且
图10示出了流程图,该流程图示出了根据一些实施方案的数据处理方法。
示例性实施方案的具体实施方式
在参考附图讨论实施方案之前,提供了对实施方案的以下描述。
根据一些实施方案,提供了一种用于对第一矩阵和第二矩阵执行运算的数据处理装置,所述数据处理装置包括:接收器电路,所述接收器电路用于接收所述第一矩阵的元素、所述第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据;确定电路,所述确定电路用于使用所述对应数据来确定针对所述第一矩阵的列i中的所述第一矩阵的给定元素,所述第二矩阵的给定元素是否出现在所述第二矩阵的行i中;和聚合电路,所述聚合电路用于计算所述第一矩阵中的给定行与所述第二矩阵中的给定列之间的聚合,包括:功能电路,所述功能电路用于根据所述确定对所述第一矩阵的所述给定元素和所述第二矩阵的所述给定元素执行功能以产生部分结果。
第一矩阵和第二矩阵的元素中的一些或全部与对应数据一起被接收。对应数据用于在并非所有元素都已被提供的情况下,指示提供元素在第一矩阵和/或第二矩阵中定位的位置。确定电路提供了所述提供元素中的两者(一者在第一矩阵中并且一者在第二矩阵中)是否将彼此“相互作用”的指示,例如针对第一矩阵的列i中的给定元素中的一者,在行i中是否存在第二阵列的给定元素中的一者的指示,使得如果在第一矩阵与第二矩阵之间执行某些运算(诸如乘法或加法),则两个元素将彼此相互作用。基于该确定,功能电路对第一矩阵和第二矩阵的给定元素执行功能。例如,如果两个元素将相互作用,则执行功能以产生部分结果,而如果两个元素将不相互作用,则不执行功能(或仅返回“0”作为部分结果)。然后将部分结果聚合在一起。相对于第一矩阵中的给定行和第二矩阵的给定列执行聚合。这样,可以在第一矩阵与第二矩阵之间执行运算,而不提供第一矩阵和第二矩阵的所有元素。具体地讲,通过确定第一矩阵和第二矩阵之间发生相互作用的那些位置,可以限制必须总体计算的运算的数量。此外,可减小存储要求,因为仅需要存储第一矩阵的元素、第二矩阵的元素和对应数据,而不是整个第一矩阵和整个第二矩阵。
在一些实施方案中,所述第一矩阵的所述元素是所述第一矩阵的压缩形式的元素;并且通过从所述第一矩阵移除为零的至少一些条目,并且移除其中每个条目为零的至少一些列或行来产生所述第一矩阵的所述压缩形式。通过移除具有零的条目中的一些,并且通过移除其中该列或行的每个条目为零的列或行中的至少一些,可以减小矩阵的总体尺寸和需要为该矩阵提供的条目的数量。在一些实施方案中,可使用除零之外的值的移除。然而,应当理解,在稀疏矩阵(其中高比例的值为零)的情况下,可执行其中运算数中的一者为零的大量运算。即使结果可能是可预测的或甚至是不相关的,此类运算也可能是耗时的。可通过从矩阵中移除此类值来减少运算的数量。
在一些实施方案中,针对所述第一矩阵的所述元素中的每一者,所述对应数据指示行数和列数;并且所述元素中的给定元素的所述行数和所述列数与所述给定元素在所述第一矩阵中定位的位置的行和列相对应。因此,对应数据指示如何将第一矩阵的元素转变成第一矩阵。可使用这一点以便通过省略特定已知值来压缩第一矩阵。然后,代替提供矩阵的每个元素,可通过仅提供矩阵的一些元素连同这些元素实际定位的位置来实现压缩。
在一些实施方案中,所述接收器电路适于接收另外对应数据以指示所述第二矩阵的所述元素在所述第二矩阵中定位的位置;并且所述确定电路适于使用除所述对应数据之外的所述另外对应数据来执行所述确定。类似于为第一矩阵的提供元素提供位置信息的对应数据,另外对应数据为第二矩阵的提供元素提供位置信息。
在一些实施方案中,针对所述第二矩阵的所述元素中的每一者,所述另外对应数据指示行数和列数;并且所述元素中的给定元素的所述行数和所述列数与所述给定元素在所述第二矩阵中定位的位置的行和列相对应。需注意,对应数据和另外对应数据没有义务具有相同的格式或甚至为完全相同的信息。
在一些实施方案中,所述第二矩阵的所述元素是所述第二矩阵的压缩形式的元素;并且通过从所述第二矩阵移除为零的至少一些条目,并且移除其中每个条目为零的至少一些列或行来产生所述第二矩阵的所述压缩形式。通过以压缩形式提供第一矩阵和第二矩阵两者,可以减小对两个矩阵执行运算所需的存储量,并且还可以减小在执行运算时执行的计算的数量。
在一些实施方案中,所述运算包括对所述第一矩阵和所述第二矩阵进行的乘法运算;所述聚合电路包括点积电路,所述点积电路用于计算所述给定行和所述给定列的点积作为所述聚合;所述功能电路包括用于执行乘法作为所述功能的乘法电路;并且所述点积电路包括用于将针对所述给定行和所述给定列产生的每个部分结果相加的加法电路。执行两个矩阵之间的乘法可能是耗时的,因为其涉及执行的多个计算。然而,通常情况是仅一些计算是感兴趣的。例如,感兴趣的计算可以是其中值中的一者为非零的那些。因此,通过压缩矩阵中的一者或两者并使用对应数据,可以确定相关相互作用(例如,在非零元素之间)将发生在何处并且执行那些特定计算。这可减小所执行的计算的数量。
在一些实施方案中,所述接收器电路适于接收第三矩阵的元素;所述运算包括所述第三矩阵与所述第一矩阵和所述第二矩阵的所述乘法运算的结果的加法运算;并且所述加法电路适于将针对所述给定行和所述给定列产生的每个部分结果与所述第三矩阵的所述元素中的所述一者一起相加。执行乘法累加运算,其中将两个运算数相乘在一起,并且将结果添加到“累加器”,该累加器将多个此类乘法的结果相加。
在一些实施方案中,所述乘法电路适于响应于确定在所述第二矩阵的行i中没有出现所述第二矩阵的所述元素而输出所述值“0”。如果在第二矩阵的行i中没有出现第二矩阵的元素,则可能不存在与那些元素的相关相互作用。例如,任何此类相互作用将是与未提供的矩阵元素进行。例如,如果所有元素都为零,则可能发生这种情况。作为未执行计算的结果,因此直接输出零值,由此不需要执行更复杂的计算。
在一些实施方案中,响应于所述确定电路确定所述第二矩阵的所述给定元素出现在所述第二矩阵的行j、列i之外的所述位置,所述确定电路适于将所述值“0”作为输入提供给所述乘法电路。指示乘法电路输出值“0”的一种方式是将“0”作为输入提供给乘法电路本身。
在一些实施方案中,所述数据处理装置包括:存储电路,所述存储电路用于存储所述第一矩阵的所述元素,其中所述存储电路包括所述对应数据。在此类实施方案中,第一矩阵的元素与对应数据一起存储,该对应数据指示这些元素在第一矩阵内出现的位置。
在一些实施方案中,所述存储电路是矢量寄存器。为了存储大量数据的目的,矢量寄存器可由多个常规寄存器组成。矢量寄存器通常以使得矢量寄存器中的所有数据可被同时访问或提供的方式有线连接在一起或进行组织。需注意,在一些情况下,矢量寄存器可以是可缩放的,使得它们的存储量可以改变,在此类实施方案中,因此可以限制矢量寄存器的大小以使得其足以存储矩阵的元素和对应数据。这样,可支持各种不同的矩阵大小(或元素的数量),而不需要应对最坏情况场景所需的大矢量寄存器。
在一些实施方案中,提供了存储电路,所述存储电路用于存储所述第二矩阵的所述元素,其中所述存储电路包括所述另外对应数据。以与用于存储第一矩阵的元素的存储电路类似的方式,第二矩阵也可存储在存储电路中并且可与另外对应数据一起存储。需注意,用于第一矩阵和第二矩阵的存储电路可相同或可不同。
在一些实施方案中,所述存储电路是矢量寄存器。用于存储第二矩阵的矢量寄存器可以是用于存储第一矩阵的相同矢量寄存器,或者可以是不同矢量寄存器。
在一些实施方案中,所述存储电路的宽度为b位;所述第一矩阵的所述元素中的每一者具有c位的宽度;并且所述第一矩阵的所述元素的数量至多为b/c。因此,元素的数目可根据元素的宽度以及存储装置的大小而变化。例如,如果每个元素仅为一位并且存储电路系统为32位,则第一矩阵的元素的数量可多达32。
在一些实施方案中,针对所述第一矩阵的所述元素中的每一者,所述对应数据的宽度为x位;并且所述第一矩阵的所述元素的所述数量至多为b/(c+x)。可为每个元素提供对应数据以便指示该元素在第一矩阵内所处于的位置。此类对应数据可根据第一矩阵的大小使用多个位。例如,如果为每行(包含m列)提供对应数据,则针对第一矩阵的元素中的每一者,对应数据的大小可以是log2(m)位。类似地,如果为每列(包含n行)提供对应数据,则针对第一矩阵的元素中的每一者,对应数据的大小可以是log2(n)。如果不在行或列的基础上提供对应数据,并且因此第一矩阵的每个元素必须指定其行和列,则对应数据可以是log2(m)+log2(n)位。
在一些实施方案中,所述存储电路的宽度为b位;所述第二矩阵的所述元素中的每一者具有c位的宽度;并且所述第二矩阵的所述元素的数量至多为b/c。与上述类似,第二矩阵的元素的数量可根据存储第二矩阵的元素的存储电路的大小以及用于表示每个元素的位数而变化。
在一些实施方案中,针对所述第二矩阵的所述元素中的每一者,所述另外对应数据的宽度为x位;并且所述第二矩阵的所述元素的所述数量至多为b/(c+x)。类似于上文所述,另外对应数据具有取决于第二矩阵的大小的宽度。
根据一些实施方案,提供了一种数据处理装置,所述数据处理装置包括:解码电路,所述解码电路用于接收包括矩阵运算指令的一个或多个指令,其中所述矩阵运算指令引用第一矩阵的元素、第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据,其中响应于接收到所述矩阵运算指令,所述解码电路生成一个或多个控制信号以便致使一个或多个执行单元对所述第一矩阵和所述第二矩阵执行矩阵运算。
根据此类方面,可提供引用以下的指令:第一矩阵的元素和第二矩阵的元素,以及指示第一矩阵的元素如何与第一矩阵相关(例如,元素位于何处)的对应数据,以便对第一矩阵和第二矩阵执行运算。可通过提供第一矩阵的一些而非全部元素来实现压缩。
现在将参考附图描述具体实施方案。
图1示意性地示出了根据一些实施方案的数据处理装置100。装置包括接收器电路110,该接收器电路接收第一矩阵的一些元素、第二矩阵的至少一些元素,以及指示第一矩阵的提供元素在第一矩阵中属于何处的对应数据。该信息从接收器电路传递到确定电路120。确定电路使用对应数据以便在执行矩阵运算时确定第一矩阵的提供元素中的哪些元素与第二矩阵的元素相互作用。两个元素是否将相互作用取决于它们在第一矩阵和第二矩阵内的位置以及正在执行的运算。例如,在矩阵乘法的情况下,当第一矩阵和第二矩阵相乘在一起时,第一矩阵的第一行、第一列中的元素将不与第二矩阵的第二行、第二列中的元素相互作用。由于对应数据指示第一矩阵的提供元素在第一矩阵内定位的位置,因此该信息可用于确定相互作用的元素对及其位置。
关于发生的相互作用的信息被传递到聚合电路130。聚合电路130用于计算多个相互作用对上的聚合。例如,聚合电路可计算在执行矩阵乘法时针对给定行/列相互作用的对的聚合。聚合电路130包括用于执行矩阵运算的功能电路140。具体地讲,对于确定电路120已确定将相互作用的特定元素对(一个元素来自第一矩阵并且一个元素来自第二矩阵),功能电路执行确定针对其发生相互作用的运算。功能电路由此产生单个相互作用对的部分结果,该部分结果然后由聚合电路130聚合。
在一些实施方案中,接收器电路110还接收用于指示第二矩阵的提供元素在第二矩阵中出现的位置的另外对应数据。例如,如果仅提供第二矩阵的一些元素,则可能是这种情况。将另外对应数据传递到确定电路120,该确定电路使用该另外对应数据以便确定相互作用对。在其他实施方案中,可放弃另外对应数据。例如,这可能是第二矩阵的元素包括第二矩阵的所有元素的情况。
图2示出了对应数据和任选的另外对应数据可如何用于指示第一矩阵和第二矩阵的元素分别在第一矩阵和第二矩阵中的位置。在图2的情况下,示出了乘法累加运算的示例,其中矩阵a与矩阵b之间的乘法的结果被加到累加器矩阵c以便提供结果矩阵d。在该示例中,累加器矩阵c为2×2矩阵,第一矩阵a为8×2矩阵,第二矩阵为2×8矩阵,并且结果矩阵d为2×2矩阵。矩阵乘法的性质意味着矩阵a乘以矩阵b的结果将为2×2矩阵。当然,应当理解,可使用其他大小的矩阵,并且实际上,可使用相同过程来执行矩阵乘法而无需累加运算。
在该示例中,第一矩阵a的提供元素是那些非零元素。类似地,第二矩阵b的提供元素是那些非零值。在第一矩阵a的情况下,为每行提供对应数据,并且该对应数据提供每个非零元素在该行内定位的位置的索引。例如,在矩阵a的第一行中,在索引0、5和7处存在非零元素。在第二行中,在索引1、4和6处存在非零值。因此,第一矩阵a的第一行的对应数据将表示值0、5和7,并且对应数据将针对第二行指示值1、4和6。就第二矩阵b而言,针对每列提供另外对应数据。在该示例中,矩阵b的第一列在索引0、3和7处包含非零值,并且因此第一列的另外对应数据将包括索引0、3和7。在第二列中,在索引0、3和6处存在非零值。因此,另外对应数据将指示第二矩阵b的元素定位在位置0、3和6处。
使用对应数据和另外对应数据,可以分别根据第一矩阵的提供元素和第二矩阵的提供元素重建第一矩阵和第二矩阵。
图3示出了如何使用对应数据来使矩阵a和b紧凑以便分别形成紧凑矩阵a′和b′。在这种情况下,紧凑矩阵由原始矩阵a和b的非零元素组成。这样,第一矩阵已从8×2减小到3×2,并且第二矩阵b已从2×8减小到2×3。因此,与矩阵以其完整形式存储或表示的情况相比,存储或表示矩阵所需的存储空间减小,即使还存储了对应数据(和任选的另外对应数据)。需注意,在该示例中,使第一矩阵a和第二矩阵b紧凑至对应大小,这适用于矩阵乘法运算。然而,对于其他矩阵运算,紧凑矩阵a′和b′可被紧凑以使得其大小不对应,这取决于要执行的运算。
图3还示出了表示对应数据和另外对应数据的方式。具体地讲,对于第一矩阵a,为紧凑矩阵a′的每行提供对应数据,而对于第二矩阵b,针对紧凑矩阵b′的每列提供对应数据。
图4示出了可如何使用矢量寄存器410、420、430来存储紧凑矩阵的示例。在该示例中,两个矢量寄存器VRa′410和VRb′420用于存储紧凑矩阵a′和b′,其中第三矢量寄存器VRc430用于表示累加器矩阵c。矢量寄存器410、420、430中的每一者具有b位的宽度。
在压缩的第一矩阵a′的情况下,存储第二行的元素中的每一者,之后存储该第二行的对应数据。这之后是第一行的元素,之后是第一行的对应数据。每个元素被赋予c位的宽度。因此,在没有对应数据的情况下,可存储在矢量寄存器410、420、430中的一者中的元素的最大数量是b/c。在该示例中,x位用于存储每个元素的每条对应数据。由于在第一压缩矩阵a′的每行中存在三个元素,因此为每行提供3x位的对应数据,即总共6x位。因此,可存储在矢量寄存器410、420、430中的每一者中的元素的最大数量等于(b-6x)/c。换句话讲,如果为每个元素提供x位的对应数据,则可存储在矢量寄存器410、420、430中的元素的最大数量为b/(c+x)。
在该实例中,x为5。应当理解,这大于足以表达元素的索引。实际上,在该示例中,由于原始矩阵每行(在矩阵a的情况下)或每列(在矩阵b的情况下)具有八个元素,因此每个元素将仅需要log2(8)=3位。
在该示例中,与元素4、5和6相对应的第一条对应数据440等于6<<10|4<<5|1。换句话讲,值1与值4级联左移五次,与值6级联左移十次。这表示以下事实:值6属于第一索引,值5属于第四索引,并且值4属于第六索引。这在图2中的矩阵a的第二行中示出。执行移位以便防止索引在存储装置中彼此冲突。类似地,第二条对应数据450与元素1、2和5相对应并且等于7<<10|5<<5|0。换句话讲,值0与值5级联左移五次,与值7级联左移十次。这表示以下事实:值3出现在索引0中,值2出现在索引5中,并且值1出现在索引7中。这在图2中的矩阵a的第一行中示出。需注意,由于对应数据逐行地分组在一起,因此可以基于形成对应数据的一部分的索引来知道给定值的位置。
类似地,存储在第二矢量寄存器VRb′中的数据包含另外对应数据460、470的两个条目。第一条对应数据460与元素B、C和D相对应并且等于6<<10|3<<5|0。换句话讲,值0与值3级联左移五次,与值6级联左移十次。这表示以下事实:值D存储在索引0处,值C存储在索引3中,并且值B存储在索引6中。这在图2中的矩阵b的第二列中示出。第二条另外对应数据470与值8、9和A相对应并且等于7<<10|3<<5|0。换句话讲,值0与值3级联左移5次,与值7级联左移十次。这指示值A出现在索引0处,值9出现在索引3处,并且值8出现在索引7处。同样,这被示为图2中的矩阵b的第一列。需注意,由于另外对应数据逐列地分组在一起,因此可以基于形成对应数据的一部分的索引来知道给定值的位置。
需注意,由于累加器矩阵尚未以与矩阵a′和b′相同的方式压缩,因此累加器矩阵c的数据元素不需要对应数据。因此,第三矢量寄存器VRc 430简单地包含累加器矩阵c的四个值。由于不存在对应数据并且由于仅存在四个值,因此可将更多位分配给累加器矩阵c的元素。这也是合适的,因为累加器矩阵的元素的大小可为大得多的,特别是如果这些表示多个乘法的加法的结果。
图5示出了用于在两个压缩矩阵a′和b′与累加器矩阵c′之间执行乘法或乘法累加运算的电路。过程涉及执行一系列点积运算。电路500由四个单元530a、530b、530c、530d制成,每个单元执行点积。根据矩阵乘法运算,单元530a、530b、530c、530d中的每一者接收第一压缩矩阵a′和第二压缩矩阵b′的元素的不同组合。此外,在执行乘法累加运算的情况下,累加元素将被传递到四个单元530a、530b、530c、530d中的每一者中。例如,第一压缩矩阵a′的第一列与第二压缩矩阵b′的第一行的点积将在结果矩阵的(1,1)处产生元素。在要执行乘法累加运算的情况下,还必须将累加器矩阵的(1,1)处的元素添加到点积运算的结果以产生结果矩阵。类似地,第一压缩矩阵a′的第一列与第二压缩矩阵b′的第二行的点积将在结果矩阵(第二列,第一行)的(2,1)处产生元素。如果执行乘法累加运算,则还添加累加器矩阵的(2,1)处的元素以产生结果矩阵。无论是否执行乘法或乘法累加运算,四个单元530a、530b、530c、530d中的每一者的输出是结果矩阵d的元素中的一者。
图5还示出了单元530a中的一者的结构。其他单元530b、530c、530d的结构类似,不同之处在于所接收的压缩矩阵a′、b′的元素和累加器矩阵c的元素。
在所示的示例中,接收压缩矩阵a′的第一行的元素和压缩矩阵b′的第一列的元素。单元530a包含三个确定电路520aa、520ab、520ac,并且因此电路能够支持每列具有至多三个元素的压缩矩阵b′(针对第一压缩矩阵b′)。确定电路520aa、520ab、520ac中的每一者接收压缩矩阵b′的三个元素中的每一者。此外,每个确定电路接收值z(0)作为另外输入。在该示例中,确定电路520aa、520ab、520ac中的每一者采用多路复用器的形式。多路复用器的选择信号S由三个分量s2、s1、s0组成。这些元素中的每一者是单个位,其中总体选择信号S是独热码。
如图5所示,对于第一确定电路520aa,s0=(a0id==b0id),s1=(a0id==b1id),s2=(a0id==b2id)。换句话讲:
如果第一压缩矩阵a′的第一提供元素的索引等于第二压缩矩阵b′的第一提供元素的索引,则第一确定电路520aa具有等于1的第一选择位s0。否则,选择位s0等于0。
如果第一压缩矩阵a′的第一提供元素的索引等于第二压缩矩阵b′的第二提供元素的索引,则第一确定电路520aa具有等于1的第二选择位s1。否则,选择位s1等于0。
如果第一压缩矩阵a′的第一提供元素的索引等于第二压缩矩阵b′的第三提供元素的索引,则第一确定电路520aa具有等于1的第三选择位s2。否则,选择位s2等于0。
根据对应数据和另外对应数据来确定索引。因此,对于第一确定电路520aa,选择信号指示第一压缩矩阵a′的第一提供元素中的任一者的索引是否等于第二压缩矩阵b′的三个元素中的任一者的索引。应当理解,在第一矩阵与第二矩阵之间的乘法运算中,如果索引匹配,则第一矩阵的第一元素将与第二矩阵的第二元素相互作用(与其相乘)。也就是说,如果第一元素的列数与第二元素的行数相同。因此,选择信号指示任何此类匹配发生的位置,并且这致使来自第二矩阵的匹配元素被选择。
因此,如果在第一压缩矩阵a′的第一元素与第二压缩矩阵b′的一个元素之间发生相互作用,则确定电路520aa的输出在不存在相互作用时等于值0,或者等于第二压缩矩阵b′的该元素的值。然后,该值传递到以第一乘法电路的形式的第一功能电路540aa,该第一乘法电路还接收第一压缩矩阵a′的第一元素作为输入。然后,第一乘法电路520aa执行乘法。输出传递到以加法器的形式的累加电路550a,该加法器执行点积运算的加法部分。
提供第二确定电路520ab以便确定在第二压缩矩阵b′的三个提供元素与第一压缩矩阵a′的第二提供元素之间是否发生任何相互作用。再一次,选择信号S由三位s0、s1、s2组成。然而,对于第二确定电路520ab,s0=(a1id==b0id),s1=(a1id==b1id),s2=(a1id==b2id)。第二确定电路520ab的输出是被认为与第一压缩矩阵a′的第二元素相互作用的第二压缩矩阵b′的一个元素,或者如果不发生相互作用,则为z(0)。结果传递到第二乘法电路540ab。第二乘法电路将传递的值与第一压缩矩阵a′的第二元素一起相乘。然后,乘法结果传递到以加法器的形式的累加电路550a,该加法器执行点积运算的加法部分。
以类似方式,第三确定电路520ac确定第二压缩矩阵b′的三个元素中的任一者是否与第一压缩矩阵a′的第三元素相互作用。此处,选择信号位是s0=(a2id==b0id),s1=(a2id==b1id),s2=(a2id==b2id)。因此,第二确定电路520ac的输出为零或被认为与第一压缩矩阵a′的第二元素相互作用的第二压缩矩阵b′的三个提供元素中的一者。输出传递到第三乘法电路540ac,其中结果乘以第一压缩矩阵a′的第三提供值,并且该结果传递到累加器550a。
累加电路550a将乘法电路540aa、540ab、540ac中的每一者的结果相加在一起。累加器还添加来自累加器矩阵c的提供元素(如果提供了的话)。该结果组成结果矩阵d的值中的一者,如图5所示。
其他单元530b、530c、530d以类似方式表现。确定电路520中的每一者将第二压缩矩阵b′的三个提供元素的索引与第一压缩矩阵a′的三个提供元素中的一者的索引进行比较。一个单元中的三个确定电路共同地将第二压缩矩阵b′的提供元素的索引中的每一者与第一压缩矩阵a′的提供元素的索引中的每一者进行比较。
因此,可以看出,通过使用以索引形式的对应数据和另外对应数据,确定电路能够确定第一矩阵a′的元素与第二矩阵b′的元素之间发生相互作用的位置。如果认为发生相互作用,则在这些元素之间进行运算(例如,乘法)。否则,所执行的乘法为乘以零。
在该示例中,仅考虑第一压缩矩阵a′和第二压缩矩阵b′中的每一者的三个元素。然而,应当理解,这可通过向确定电路520提供另外输入、通过提供另外乘法电路540来进行缩放。此外,所提供的输出结果为2×2矩阵并且因此提供四个(2乘以2)单元530。然而,在输出矩阵d为更大的情况下,可提供更大的单元阵列。例如,如果输出矩阵为3×3矩阵,则将提供九个此类单元530。当然,在这种情况下,压缩矩阵的大小可能类似地更大,并且因此单独单元530的大小也可能如前所述扩展。
应当理解,作为装置500的结果,不需要执行对于未压缩矩阵a、b而言可能必需的全套运算。例如,给定未压缩矩阵a、b中的元素的数量,需要总共32次乘法,然而,由于压缩,在该示例中仅需要执行12次乘法。此外,许多乘法在多个单元530上并行地进行。作为这两个原因的结果,矩阵运算可比未压缩矩阵中的情况更快地执行。此外,应当理解,压缩矩阵a′和b′显著小于未压缩矩阵a和b并且因此可使用较小的储存空间来储存它们。
在该示例中,两个矩阵都被压缩。然而,应当理解,两个矩阵中的一者可以未压缩形式。在发生这种情况的情况下,不需要对应数据或另外对应数据,因为所需的索引可直接从矩阵本身确定。
在其他实施例中,可执行除乘法(或乘法累加)之外的运算。例如,当将两个矩阵相加在一起时,一个或两个零运算数的加法基本上是冗余运算。因此,在加法中两个值彼此“相互作用”的情况下,在实际加法运算之前可简单地返回非零运算数(或者如果所有运算数都为零,则为零)。
图6考虑了其中“拼接”可用于执行第一矩阵和第二矩阵具有非对应大小的运算的示例。具体地讲,矩阵a可由于作为具有许多非零条目的稀疏矩阵而被压缩。因此,如先前所示,其可从2×8矩阵a压缩到2×3矩阵a′。相比之下,矩阵b是密集的并且不具有非零条目,因此其保持为8×1矩阵。通常,这些矩阵之间的矩阵乘法将产生2×1矩阵。然而,通过拼接,可将8×1矩阵视为具有两列610、620的4×2矩阵。因此,其输出为2×2矩阵。因此,使用矩阵b 610的第一半(位0至3)来产生元素d00和d10。同时,通过使用第二矩阵b 620的第二半(位4至7)来产生元素d01和d11
图7示出了如何针对图6的示例实现存储。具体地讲,第一压缩矩阵a′和累加器矩阵c的存储以相对于图4所示的相同方式在矢量寄存器710、730中进行。在第二矩阵b的情况下,由于另外对应数据不是必要的(由于没有压缩发生),因此空间被释放以用于待存储的第二矩阵b的元素中的每一者。
图8示出了可用于执行其中两个矩阵中的一者具有非对应大小的矩阵运算的电路800。在该示例中,矩阵b保持其未压缩形式并且因此在技术上为8×1矩阵,图8的电路使用拼接替代地将视为4×2矩阵。
电路800与图5所示的电路500类似地进行操作。一个关键区别在于四个单元830a、830b、830c、830d中的每一者相对于第二未压缩矩阵b接收四个输入,因为未压缩矩阵b被视为具有四行。
四个单元830a、830b、830c、830d中的确定电路820aa、820ab、820ac中的每一者接收四个输入连同常数0(z)。此外,选择信号S由四个分量s0、s1、s2、s3组成。例如,在第一单元820aa的情况下,s0=(a0id==b0id)、s1=(a0id==b1id)、s2=(a0id==b2id)、s3=(a0id==b3id)。因此,再一次,选择信号S的分量指示第一压缩矩阵a′的给定元素与第二矩阵b的每个呈现元素之间是否发生相互作用。在这种情况下,针对第二矩阵b的元素没有可用的另外对应数据,因为未发生压缩。然而,不需要另外对应数据,因为第二矩阵b的元素中的每一者的位置是已知的。
图8所示的电路还可与一对压缩矩阵(诸如针对b′)一起使用。这可通过简单地使用作为(另外)对应数据的一部分提供的索引来实现。类似地,虽然图8的电路可用于具有非对应大小的矩阵的乘法(在这种情况下,压缩的2×3矩阵乘以被视为4×2矩阵的8×1矩阵),但通过忽略到确定电路820的任何多余输入信号并且通过将那些输入的选择信号S的对应选择位设置为0以使得它们不被选择,相同的电路也可用于较小大小的矩阵。例如,通过忽略确定电路820的第四输入并通过将s3的选择的值设置为0,相同的电路可用于2×3矩阵乘以另一个2×3矩阵(如针对图5)。在第一矩阵较小(例如,如果压缩矩阵a′为2×2)的情况下,则忽略多余确定单元820(及其相关联的乘法单元840)。例如,如果压缩矩阵a′为2×2矩阵,则第三确定电路820ac及其相关联的乘法单元840ac被简单地忽略。
图9示出了根据一些实施方案的装置900。装置包括以流水线930的形式的多个部件。在流水线930内,获取电路910接收用于执行矩阵运算的指令(MatrixOp)。指令识别第一矩阵的元素(elemA)、第二矩阵的元素(elemB)、第一矩阵的元素的对应数据(correspondenceA)、第二矩阵的元素的任选另外对应数据(correspondenceB)以及第三矩阵累加器的任选元素(elemC)。在每种情况下,对矩阵元素的引用可以一个或多个寄存器的形式提供,或者以存储器中可找到元素的位置的形式提供。获取电路910将获取指令传递到解码电路920。解码电路对指令进行解码以提供一个或多个控制信号。然后,这些控制信号传递到矩阵运算电路500,诸如相对于图5或图8所示的矩阵运算电路。
图10示出了根据一些实施方案的数据处理方法1000。在步骤1010处,接收第一矩阵的元素连同第二矩阵的元素以及指示第一矩阵的元素在第一矩阵内出现的位置的对应数据。在步骤1020处,确定第一矩阵和第二矩阵的哪些元素根据矩阵运算彼此相互作用。在步骤1030中,通过对矩阵和第二矩阵的元素执行矩阵运算来执行聚合,这些元素通过确定步骤1020被认为彼此相互作用。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化、增加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征一起进行各种组合。

Claims (20)

1.一种用于对第一矩阵和第二矩阵执行运算的数据处理装置,所述数据处理装置包括:
接收器电路,所述接收器电路用于接收所述第一矩阵的元素、所述第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据;
确定电路,所述确定电路用于使用所述对应数据来确定针对所述第一矩阵的列i中的所述第一矩阵的给定元素,所述第二矩阵的给定元素是否出现在所述第二矩阵的行i中;和
聚合电路,所述聚合电路用于计算所述第一矩阵中的给定行与所述第二矩阵中的给定列之间的聚合,包括:
功能电路,所述功能电路用于根据所述确定对所述第一矩阵的所述给定元素和所述第二矩阵的所述给定元素执行功能以产生部分结果。
2.根据权利要求1所述的数据处理装置,其中
所述第一矩阵的所述元素是所述第一矩阵的压缩形式的元素;并且
通过从所述第一矩阵移除为零的至少一些条目,并且移除其中每个条目为零的至少一些列或行来产生所述第一矩阵的所述压缩形式。
3.根据权利要求1所述的数据处理装置,其中
针对所述第一矩阵的所述元素中的每一者,所述对应数据指示行数和列数;并且
所述元素中的给定元素的所述行数和所述列数与所述给定元素在所述第一矩阵中定位的位置的行和列相对应。
4.根据权利要求1所述的数据处理装置,其中
所述接收器电路适于接收另外对应数据以指示所述第二矩阵的所述元素在所述第二矩阵中定位的位置;并且
所述确定电路适于使用除所述对应数据之外的所述另外对应数据来执行所述确定。
5.根据权利要求4所述的数据处理装置,其中
针对所述第二矩阵的所述元素中的每一者,所述另外对应数据指示行数和列数;并且
所述元素中的给定元素的所述行数和所述列数与所述给定元素在所述第二矩阵中定位的位置的行和列相对应。
6.根据权利要求4所述的数据处理装置,其中
所述第二矩阵的所述元素是所述第二矩阵的压缩形式的元素;并且
通过从所述第二矩阵移除为零的至少一些条目,并且移除其中每个条目为零的至少一些列或行来产生所述第二矩阵的所述压缩形式。
7.根据权利要求1所述的数据处理装置,其中
所述运算包括对所述第一矩阵和所述第二矩阵进行的乘法运算;
所述聚合电路包括点积电路,所述点积电路用于计算所述给定行和所述给定列的点积作为所述聚合;
所述功能电路包括用于执行乘法作为所述功能的乘法电路;并且
所述点积电路包括用于将针对所述给定行和所述给定列产生的每个部分结果相加的加法电路。
8.根据权利要求7所述的数据处理装置,其中
所述接收器电路适于接收第三矩阵的元素;
所述运算包括所述第三矩阵与所述第一矩阵和所述第二矩阵的所述乘法运算的结果的加法运算;并且
所述加法电路适于将针对所述给定行和所述给定列产生的每个部分结果与所述第三矩阵的所述元素中的所述一者一起相加。
9.根据权利要求7所述的数据处理装置,其中
所述乘法电路适于响应于确定在所述第二矩阵的行i中没有出现所述第二矩阵的所述元素而输出所述值“0”。
10.根据权利要求9所述的数据处理装置,其中
响应于所述确定电路确定所述第二矩阵的所述给定元素出现在所述第二矩阵的行j、列i之外的所述位置,所述确定电路适于将所述值“0”作为输入提供给所述乘法电路。
11.根据权利要求1所述的数据处理装置,包括:
存储电路,所述存储电路用于存储所述第一矩阵的所述元素,其中
所述存储电路包括所述对应数据。
12.根据权利要求11所述的数据处理装置,其中
所述存储电路是矢量寄存器。
13.根据权利要求4所述的数据处理装置,包括
存储电路,所述存储电路用于存储所述第二矩阵的所述元素,其中
所述存储电路包括所述另外对应数据。
14.根据权利要求13所述的数据处理装置,其中
所述存储电路是矢量寄存器。
15.根据权利要求11所述的数据处理装置,其中
所述存储电路的宽度为b位;
所述第一矩阵的所述元素中的每一者具有c位的宽度;并且
所述第一矩阵的所述元素的数量至多为b/c。
16.根据权利要求15所述的数据处理装置,其中
针对所述第一矩阵的所述元素中的每一者,所述对应数据的宽度为x位;并且
所述第一矩阵的所述元素的所述数量至多为b/(c+x)。
17.根据权利要求13所述的数据处理装置,其中
所述存储电路的宽度为b位;
所述第二矩阵的所述元素中的每一者具有c位的宽度;并且
所述第二矩阵的所述元素的数量至多为b/c。
18.根据权利要求17所述的数据处理装置,其中
针对所述第二矩阵的所述元素中的每一者,所述另外对应数据的宽度为x位;并且
所述第二矩阵的所述元素的所述数量至多为b/(c+x)。
19.一种对第一矩阵和第二矩阵执行运算的数据处理方法,所述方法包括以下步骤:
接收所述第一矩阵的元素、所述第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据;
使用所述对应数据来确定针对所述第一矩阵的列i中的所述第一矩阵的给定元素,所述第二矩阵的给定元素是否出现在所述第二矩阵的行i中;以及
通过根据所述确定对所述第一矩阵的所述给定元素和所述第二矩阵的所述给定元素执行功能以产生部分结果,计算所述第一矩阵中的给定行与所述第二矩阵中的给定列之间的聚合。
20.一种数据处理装置,所述数据处理装置包括:
解码电路,所述解码电路用于接收包括矩阵运算指令的一个或多个指令,其中所述矩阵运算指令引用第一矩阵的元素、第二矩阵的元素,以及用于指示所述第一矩阵的所述元素在所述第一矩阵中定位的位置的对应数据,其中
响应于接收到所述矩阵运算指令,所述解码电路生成一个或多个控制信号以便致使一个或多个执行单元对所述第一矩阵和所述第二矩阵执行矩阵运算。
CN202080036960.7A 2019-05-21 2020-03-25 用于矩阵运算的装置和方法 Pending CN113853601A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/417,937 2019-05-21
US16/417,937 US11379556B2 (en) 2019-05-21 2019-05-21 Apparatus and method for matrix operations
PCT/GB2020/050801 WO2020234558A1 (en) 2019-05-21 2020-03-25 Apparatus and method for matrix operations

Publications (1)

Publication Number Publication Date
CN113853601A true CN113853601A (zh) 2021-12-28

Family

ID=70154832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080036960.7A Pending CN113853601A (zh) 2019-05-21 2020-03-25 用于矩阵运算的装置和方法

Country Status (6)

Country Link
US (1) US11379556B2 (zh)
EP (1) EP3973420A1 (zh)
JP (1) JP2022533221A (zh)
KR (1) KR20220007700A (zh)
CN (1) CN113853601A (zh)
WO (1) WO2020234558A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116360352A (zh) * 2022-12-02 2023-06-30 山东和信智能科技有限公司 一种发电厂用智能控制方法及系统

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11615307B2 (en) * 2018-12-06 2023-03-28 MIPS Tech, LLC Neural network data computation using mixed-precision
US11941633B2 (en) * 2019-09-06 2024-03-26 U.S. Bancorp, National Association System for identifying points of compromise
US11468447B2 (en) * 2019-09-06 2022-10-11 U.S. Bancorp, National Association System for identifying points of compromise
US11914447B1 (en) * 2019-11-20 2024-02-27 Mentium Technologies Inc. Approximate computation in digital systems using bit partitioning
US11803736B1 (en) * 2020-06-30 2023-10-31 Amazon Technologies, Inc. Fine-grained sparsity computations in systolic array
US20220206800A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator
US12001887B2 (en) * 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator
GB2616036A (en) * 2022-02-24 2023-08-30 Xmos Ltd Sparse matrix multiplication

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2476800A (en) 2010-01-07 2011-07-13 Linear Algebra Technologies Ltd Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations
US20180189675A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US10452744B2 (en) * 2017-03-27 2019-10-22 Oracle International Corporation Memory management for sparse matrix multiplication
CN108664447B (zh) * 2017-03-31 2022-05-17 华为技术有限公司 一种矩阵与矢量的乘法运算方法及装置
US10725740B2 (en) * 2017-08-31 2020-07-28 Qualcomm Incorporated Providing efficient multiplication of sparse matrices in matrix-processor-based devices
US10572568B2 (en) * 2018-03-28 2020-02-25 Intel Corporation Accelerator for sparse-dense matrix multiplication
US10620951B2 (en) * 2018-06-22 2020-04-14 Intel Corporation Matrix multiplication acceleration of sparse matrices using column folding and squeezing
US10719323B2 (en) 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116360352A (zh) * 2022-12-02 2023-06-30 山东和信智能科技有限公司 一种发电厂用智能控制方法及系统
CN116360352B (zh) * 2022-12-02 2024-04-02 山东和信智能科技有限公司 一种发电厂用智能控制方法及系统

Also Published As

Publication number Publication date
JP2022533221A (ja) 2022-07-21
WO2020234558A1 (en) 2020-11-26
US11379556B2 (en) 2022-07-05
US20200372097A1 (en) 2020-11-26
KR20220007700A (ko) 2022-01-18
EP3973420A1 (en) 2022-03-30

Similar Documents

Publication Publication Date Title
CN113853601A (zh) 用于矩阵运算的装置和方法
US12020151B2 (en) Neural network processor
CN1892589B (zh) 执行多媒体应用的操作的装置、系统及实现该操作的方法
US5768170A (en) Method and apparatus for performing microprocessor integer division operations using floating point hardware
US8028015B2 (en) Method and system for large number multiplication
KR101202445B1 (ko) 프로세서
CN103294446B (zh) 一种定点乘累加器
CN102855220B (zh) 用于使用并行处理来求解线性方程组的设备、系统和方法
CN115039067A (zh) 包括具有高效预规格化和扩展动态范围的熔合乘法累加的脉动阵列
US8239442B2 (en) Computing module for efficient FFT and FIR hardware accelerator
JP5544240B2 (ja) マルチmacアーキテクチャにおける低電力firフィルタ
US11816448B2 (en) Compressing like-magnitude partial products in multiply accumulation
US10255041B2 (en) Unified multiply unit
KR102581403B1 (ko) 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법
CN113076083B (zh) 数据乘加运算电路
CN114341796A (zh) 带符号多字乘法器
US20080288756A1 (en) "or" bit matrix multiply vector instruction
US20220012304A1 (en) Fast matrix multiplication
CN115576895B (zh) 计算装置、计算方法及计算机可读存储介质
US20240152327A1 (en) Computing circuit, computing method, and decoder
US20240086152A1 (en) Calculation unit for multiplication and accumulation operations
GB2600915A (en) Floating point number format
KR20240029249A (ko) 연산 에러를 정정할 수 있는 곱셈 및 누산 연산기
CN112862086A (zh) 一种神经网络运算处理方法、装置及计算机可读介质
CN116909629A (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