CN111801651A - 使用16比特浮点乘法器的矩阵-矩阵乘法的多精度整数乘法器 - Google Patents

使用16比特浮点乘法器的矩阵-矩阵乘法的多精度整数乘法器 Download PDF

Info

Publication number
CN111801651A
CN111801651A CN201980016853.5A CN201980016853A CN111801651A CN 111801651 A CN111801651 A CN 111801651A CN 201980016853 A CN201980016853 A CN 201980016853A CN 111801651 A CN111801651 A CN 111801651A
Authority
CN
China
Prior art keywords
integer
matrix
product
elements
substituting
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
CN201980016853.5A
Other languages
English (en)
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN111801651A publication Critical patent/CN111801651A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • 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/544Methods 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/5443Sum of products

Landscapes

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

Abstract

提供了计算机实现的方法、计算机程序产品和装置。该方法包括将通过在第一数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵中。该方法还包括将通过在第二数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中。该方法还包括计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积。该方法包括输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。

Description

使用16比特浮点乘法器的矩阵-矩阵乘法的多精度整数乘 法器
背景技术
技术领域
本发明涉及乘法,并且更具体地,涉及使用16比特浮点乘法器的矩阵-矩阵乘法的多精度整数乘法器。
相关技术的描述
已经提出了用于使用矩阵运算对整数进行乘法的常规方法。然而,近年来,存在对更快速地且以更高精度执行乘法的需求。
发明内容
根据本发明的第一方面,提供了一种计算机实现的方法,包括:将通过在数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵中;将通过在数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中;计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积;以及输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。以此方式,可以提高计算精度和计算速度。
在代入到第一矩阵中和代入到第二矩阵中期间,第一矩阵和第二矩阵中的每个矩阵元素可被布置为使得在第一矩阵中包括的每个第一整数元素和第二矩阵中包括的每个第二整数元素的乘积当中的与第一整数和第二整数的乘积中的相同数位位置相对应的每个乘积对应于第三矩阵中的相同矩阵元素。以此方式,可以将所计算的部分乘积对准,并且因此可以计算正确的乘法结果。
根据本发明的另一方面,提供了一种装置,包括:处理器或可编程电路;以及共同地包括指令的一个或多个计算机可读介质,所述指令在由所述处理器或所述可编程电路执行时使所述处理器或所述可编程电路:将通过在数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵;将通过在数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中;计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积;以及输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。以此方式,可以提高计算精度和计算速度。
根据本发明的又一方面,提供了一种装置,包括:第一矩阵代入部,第一矩阵代入部将通过在数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵中;第二矩阵代入部,第二矩阵代入部将通过在数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中;第三矩阵计算部,第三矩阵计算部计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积;以及部分乘积输出部,部分乘积输出部输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。以此方式,可以提高计算精度和计算速度。
根据本发明的又一方面,提供了一种计算机程序产品,包括共同地存储程序指令的一个或多个计算机可读存储介质,所述程序指令能由处理器或可编程电路执行以使所述处理器或所述可编程电路执行操作,所述操作包括:将通过在数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵中;将通过在数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中;计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积;以及输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。以此方式,可以提高计算精度和计算速度。
从以下结合附图阅读的对本发明的说明性实施例的详细描述中,这些和其它特征和优点将变得明显。
附图说明
以下描述将参考以下附图提供优选实施例的细节,在附图中:
图1示出了根据示例性实施例的装置。
图2示出了第三矩阵计算部。
图3示出了存储矩阵元素的寄存器。
图4示出了根据示例性实施例的装置的操作。
图5示出了第一整数数据(B)和第二整数数据(A)。
图6示出了彼此相乘的第一矩阵和第二矩阵。
图7示出了部分乘积的相加。
图8示出了根据本发明的实施例的计算机的示例性硬件配置。
具体实施方式
在下文中,将描述本发明的一些实施例。实施例不限制根据权利要求书的本发明,并且实施例中描述的特征的所有组合对于由本发明的方面提供的手段来说不是必需的。
图1示出了根据本实施例的装置1。装置1通过执行矩阵运算来输出两个整数的乘积,并且执行数值计算,诸如例如计算机辅助设计(CAD)、计算机辅助工程(CAE)、财务仿真和/或加密。装置1包括存储器2、矩阵代入部3、第一矩阵存储部4、第二矩阵存储部5、第三矩阵计算部6、第四矩阵存储部7、部分乘积输出部8和整数乘积计算部9。装置1可以是处理器,并且例如可以是图形处理器单元(GPU)。
存储器2存储表示作为乘法运算的对象的整数的至少一个整数数据。例如,存储器2可以存储表示第一整数的第一整数数据和表示第二整数的第二整数数据。
存储器2可以存储表示乘法结果的至少一个整数数据。例如,存储器2可以存储表示第十二整数的第十二整数数据,第十二整数是第一整数和第二整数的乘积。
这里,第一整数和第二整数可以是彼此相同的值,或者可以是不同的值。第一整数和第二整数可以用整数格式来表达,或者可以用浮点格式的尾数部分来表达并且与指数部分相关联。作为本实施例中的示例,第一整数数据、第二整数数据和第十二整数数据是二进制数据,并且具有任意长度,诸如8比特、16比特、32比特或64比特。
矩阵代入部3通过在数位方向上划分从存储器2中读取的整数数据来生成一个或多个整数元素,并且将这些整数元素代入到矩阵中。整数元素可以各自具有一个或多个数位。在数位方向上划分整数数据可以意味着在数位方向上以降序或升序将整数数据划分成一个或多个基本数位。矩阵代入部3包括第一矩阵代入部31和第二矩阵代入部32。
第一矩阵代入部31将通过在数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到第一矩阵存储部4中。作为本实施例中的示例,N为2,但也可以是其他数量,例如16。第二矩阵代入部32将通过在数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵存储部5中的至少一个矩阵元素中。例如,第二矩阵代入部32可以将一到四个第二整数元素代入到具有两行和两列的第二矩阵存储部5中。每个第二整数元素可以与每个第一整数元素具有相同的大小,并且例如可以是8比特。
第一矩阵存储部4和第二矩阵存储部5存储各自具有N行和N列(例如,两行和两列)的第一矩阵和第二矩阵。第一矩阵存储部4和第二矩阵存储部5可以包括具有矩阵布置的寄存器。第一矩阵存储部4和第二矩阵存储部5的寄存器可以存储相同大小的数据。
第三矩阵计算部6通过将第一矩阵和第二矩阵相乘在一起而计算第三矩阵。如果装置1是处理器,则可以根据一个命令来执行第三矩阵的计算。第三矩阵计算部6可以将第三矩阵提供给第四矩阵存储部7。
第四矩阵存储部7存储通过整合第三矩阵而获得的第四矩阵。第四矩阵可以是通过在每次计算第三矩阵时将第三矩阵的每个矩阵元素加到所计算的与相同数位位置相对应的部分乘积之和而获得的矩阵。第四矩阵存储部7可以包括具有矩阵布置的寄存器。第四矩阵存储部7的寄存器可以存储具有比第一矩阵存储部4和第二矩阵存储部5中存储的数据更大尺寸的数据。
部分乘积输出部8输出第三矩阵的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。作为本实施例中的示例,部分乘积输出部8可以提取通过整合第三矩阵而获得的第四矩阵中的每个矩阵元素,作为对于第一整数和第二整数的乘积的计算中的对应数位位置的第一整数元素和第二整数元素的部分乘积之和。部分乘积输出部8可以将每个提取的矩阵元素提供给整数乘积计算部9。
整数乘积计算部9计算第一整数和第二整数的乘积。整数乘积计算部9可以包括部分乘积布置部91和加法部92。
部分乘积布置部91将每个部分乘积布置在对应数位位置处,以便从部分乘积之和获得乘法结果。例如,部分乘积布置部91将从部分乘积输出部8提供的每个部分乘积(例如,本实施例中的部分乘积之和)布置在第一整数和第二整数的乘积内与该部分乘积相对应的数位位置处。
加法部92获得第十二整数作为通过计算每个部分乘积之和而获取的乘法结果。加法部92可以将第十二整数存储在存储器2中。
在上述装置1中,计算作为第一矩阵和第二矩阵的乘积的第三矩阵,并且在计算第一整数和第二整数的乘积时,输出第三矩阵中的每个矩阵元素作为部分乘积,因此可以通过计算部分乘积来执行乘法。因此,由于可以在将计算进行细分的同时执行乘法,所以可以通过在允许计算数位数量的余量的同时计算部分乘积来减少由信息丢失等引起的计算误差并且提高计算精度。此外,由于根据矩阵计算来执行乘法,因此可以提高计算速度。
图2示出了第一矩阵存储部4、第二矩阵存储部5、第三矩阵计算部6和第四矩阵存储部7。作为本实施例中的示例,第三矩阵计算部6是张量计算单元,并且可以根据第一矩阵存储部4和第二矩阵存储部5中存储的各自具有N行和N列(例如两行和两列)的第一矩阵P和第二矩阵Q来计算第三矩阵PQ。另外,第三矩阵计算部6可以通过根据运算S=P*Q+R将新计算的第三矩阵PQ和第四矩阵存储部7的作为第三计算矩阵PQ之和的第四矩阵R相加在一起来计算新的第四矩阵S,并且更新第四矩阵存储部7的第四矩阵R。
图3示出了存储矩阵元素的寄存器。作为本实施例中的示例,存储第一矩阵P和第二矩阵Q的矩阵元素的寄存器可以以具有1比特符号部分、5比特指数部分和10比特尾数部分的半精度浮点格式(FP16)来存储每个矩阵元素。存储第四矩阵R和S的矩阵元素的寄存器可以以具有1比特符号部分、8比特指数部分和23比特尾数部分的单精度浮点格式(FP32)来存储每个矩阵元素。作为示例,每个整数元素可以存储在寄存器的尾数部分中,或者可以存储在寄存器的尾数部分和符号部分中。
图4示出了根据本实施例的装置1的操作。通过执行步骤S11至S25的处理,装置1将第一整数乘以第二整数以计算第十二整数作为乘积。当第一整数和第二整数由操作员指定并且乘法指令被输入时,装置1可以开始操作。当操作开始时,第四矩阵存储部7中的第四矩阵可以被重置为0。
首先,在步骤S11处,第一矩阵代入部31将通过在数位方向上划分第一整数数据而获得的多个第一整数元素当中的N×N个(例如4个)第一整数元素代入到第一矩阵存储部4中的第一矩阵中。接着,在步骤S13处,第二矩阵代入部32将通过在数位方向上划分第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到第二矩阵存储部5中的第二矩阵中的至少一个矩阵元素中。
当执行代入到第一矩阵中时,第一矩阵代入部31可以通过从存储器2中读取第一整数数据并且在数位方向上划分该第一整数数据来生成多个第一整数元素。作为示例,第一矩阵代入部31可以通过将第一整数数据划分成8数位(即8比特)的单元来生成多个第一整数元素。
类似地,当执行代入到第二矩阵中时,第二矩阵代入部32可以通过从存储器2中读取第二整数数据并且在数位方向上划分该第二整数数据来生成多个第二整数元素。作为示例,第二矩阵代入部32可以通过将第二整数数据划分成8数位(即8比特)的单元来生成多个第二整数元素。
第一矩阵代入部31和第二矩阵代入部32可以将第一矩阵和第二矩阵中的每个矩阵元素代入到第一矩阵和第二矩阵中,使得在第一矩阵中包括的每个第一整数元素和第二矩阵中包括的每个第二整数元素的多个乘积当中的与第十二整数中的相同数位位置相对应的乘积被布置为对应于第三矩阵中的相同矩阵元素。以此方式,可以将所计算的部分乘积的数位对齐,因此可以计算正确的乘法结果。
例如,第一矩阵代入部31可以将在第一整数数据中的数位方向上连续的N×N个第一整数元素代入到第一矩阵中。作为替代或附加地,第二矩阵代入部32可以将在第二整数数据中的数位方向上连续的一个或多个第二整数元素代入到第二矩阵中。以此方式,可以简化整数元素到第一矩阵和第二矩阵中的代入。
此外,当执行代入到第一矩阵中时,第一矩阵代入部31可以将N×N个(例如4个)第一整数元素当中的N个(例如2个)连续的第一整数元素代入到第一矩阵中的各行中。代入的顺序可以是第一整数数据中的数位方向的升序或降序。当执行代入到第二矩阵中时,第二矩阵代入部32可以将多个第二整数元素当中的N个(例如2个)连续的第二整数元素代入到第二矩阵中的各列中。代入的顺序可以在第二整数数据的数位方向上与第一矩阵的N个第一整数元素的代入顺序相反。如果存储整数元素的时间顺序与读取整数元素的时间顺序相同,即,从下侧读取整数元素,则第一矩阵代入部31可以代入第一整数元素,使得对于第一矩阵中的各行,按读取的时间顺序的相反顺序布置第一整数元素,以及第二矩阵代入部32可以代入第二整数元素,使得对于第二矩阵中的各列,按读取的时间顺序布置第二整数元素。如果第一整数数据和第二整数数据以小尾数(little endian)格式存储,即,如果较低有效比特位于较低位置,则第一矩阵代入部31可以对于第一矩阵中的各行将第一整数元素按数位方向上的降序代入,并且第二矩阵代入部32可以对于第二矩阵中的各列将第二整数元素按数位方向上的升序代入。如果第一整数数据和第二整数数据以大尾数(big endian)格式存储,即,如果较低有效比特位于较高位置,则第一矩阵代入部31和第二矩阵代入部32可以各自按相反顺序代入整数元素。
此外,当执行代入到第一矩阵中时,第一矩阵代入部31可以按列优先顺序将N×N个(例如,4个)第一整数元素代入到第一矩阵中的每个矩阵元素中。当执行代入到第二矩阵中时,第二矩阵代入部32可以按与第一矩阵中的第一整数元素的代入顺序相同的顺序(即,数位方向上的升序或降序),将N个(例如,2个)连续的第二整数元素代入到第二矩阵中的第一行中。此外,第二矩阵代入部32可以将N个第二整数元素代入到第二矩阵中的第二行和后续行中,同时将第二整数数据中的N个第二整数元素每次移位一个整数元素。例如,第二矩阵代入部32可以对第二整数元素进行移位,使得第二矩阵中的各列中的第二整数元素的代入顺序与第一矩阵中的各行中的第一整数元素的代入顺序相反。作为示例,如果第一整数数据和第二整数数据以小尾数格式存储,则第一矩阵代入部31可以将N×N个第一整数元素按行优先和数位方向上的降序代入到第一矩阵中,并且第二矩阵代入部32可以将N个第二整数元素(例如,元素(a1)、…、元素(aN),其中下标字符指示整数元素的顺序)按数位方向上的降序(例如,按元素(aN)、…、元素(a1)的顺序)代入到第二矩阵中的第一行中。此外,第二矩阵代入部32可以代入通过将第二行中的N个整数元素(例如,元素(a1)、…、元素(aN))向高数位侧移位一个整数元素而获得的N个整数元素(例如,元素(aN+1)、…、元素(a2))。此后,通过将已向高数位侧移位了行的数量的N个整数元素代入到各行中,按升序设定第二矩阵中的各列中的第二整数元素。如果作为移位的结果,要代入的整数元素不存在于第二整数数据中,则第二矩阵代入部32可以代入0。
接着,在步骤S15处,第三矩阵计算部6计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积。作为本实施例中的示例,第三矩阵计算部6可以将所计算的第三矩阵与第四矩阵存储部7中的第四矩阵相加。第四矩阵可以具有N行和N列。
接着,在步骤S17处,部分乘积输出部8输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。作为本实施例中的示例,将第三矩阵与具有N行和N列的第四矩阵相加,因此部分乘积输出部8可以提取第四矩阵中的第一行或最后一行中的每个矩阵元素作为第一整数和第二整数的乘积中的对应数位位置处的部分乘积之和,并且将剩余行向所提取的行移位一行。例如,如果将第一整数元素按数位方向上的降序代入到第一矩阵中,则部分乘积输出部8可以从第四矩阵中提取最后一行,以及如果将第一整数元素按数位方向上的升序代入到第一矩阵中,则部分乘积输出部8可以从第四矩阵中提取第一行。以此方式,从第四矩阵中提取如下部分乘积:对于该部分乘积,在第一整数和第二整数的乘积中没有要相加的其他部分乘积。部分乘积输出部8可以对于由于第四矩阵中的移位而出现空白空间的每个矩阵元素设定0。
接着,在步骤S19处,第二矩阵代入部32判断第二整数中的所有整数元素是否已被代入到第二矩阵中。如果判断结果是否定的(S19:否),则第二矩阵代入部32将处理移动到步骤S13,以及如果判断结果是肯定的(S19:是),则第二矩阵代入部32将处理移动到步骤S21。如果要重复步骤S13的处理,则第二矩阵代入部32可以将通过在数位方向上划分第二整数数据而获得的多个第二整数元素当中的尚待代入的一个或多个第二整数元素代入到第二矩阵中。以此方式,计算代入到第一矩阵中的N×N个第一整数元素和每个第二整数元素的部分乘积。如果在第二整数数据中不存在要代入到第二矩阵的一部分中的矩阵元素中的整数元素,则第二矩阵代入部32可以代入0。
在步骤S21处,第一矩阵代入部31判断第一整数中的所有整数元素是否已被代入到第一矩阵中。如果判断结果是否定的(S21:否),则第一矩阵代入部31将处理移动到步骤S11,以及如果判断结果是肯定的(S21:是),则第一矩阵代入部31将处理移动到步骤S23。如果要重复步骤S11的处理,则第一矩阵代入部31可以将通过在数位方向上划分第一整数数据而获得的多个第一整数元素当中的尚待代入的N×N个第一整数元素代入到第一矩阵中。以此方式,计算每个第一整数元素和每个第二整数元素的部分乘积。如果在第一整数数据中不存在要代入到第一矩阵的一部分中的矩阵元素中的整数元素,则第一矩阵代入部31可以代入0。通过执行上述步骤S11至S21的处理,每当将多个第一整数元素当中的N×N个第一整数元素的不同集合代入到第一矩阵中时,重复每次将来自多个第二整数元素当中的一个或多个第二整数元素依次代入到第二矩阵中的处理。此外,每当执行代入到第二矩阵中时,执行第三矩阵的计算和部分乘积的输出。
在步骤S23处,部分乘积布置部91将每个部分乘积布置在第一整数和第二整数的乘积中的对应数位位置处。例如,部分乘积布置部91可以调整数位位置,使得第一整数和第二整数的乘积中的每个部分乘积在对应数位位置处相加,并且将每个部分乘积提供给加法部92。作为示例,部分乘积布置部91可以针对每参考数量的数位(例如,本实施例中的8个数位)来移位在步骤S17处输出的每个矩阵元素的数位位置。
接着,在步骤S25处,加法部92通过计算每个部分乘积之和来计算第十二整数,第十二整数是第一整数和第二整数的乘积。以此方式,基于每个输出的部分乘积来计算第十二整数。如果在部分乘积中存在数位溢出,则加法部92可以将该数位溢出加到较高数位。
利用上述处理,将N×N个第一整数元素当中的N个连续的第一整数元素按数位方向上的升序或降序代入到第一矩阵中的每个行中,并且将多个第二整数元素当中的N个连续的第二整数元素按与第一整数元素的代入顺序相反的顺序代入到第二矩阵中的每个列中。因此,由于可以将所计算的部分乘积的数位对齐,所以可以计算正确的乘法结果。
此外,由于将部分乘积的数位溢出加到较高数位,所以可以提高计算精度。
下面描述乘法的详细示例。
图5示出了第一整数数据(B)和第二整数数据(A)。作为本实施例中的示例,第一整数数据(B)和第二整数数据(A)各自为64比特二进制数据。第一整数数据(B)可以被划分为八个第一整数元素(b0)至(b7),每个第一整数元素具有8比特。第二整数数据(A)可以被划分为八个第二整数元素(a0)至(a7),每个第二整数元素具有8比特。这里,下标字符指示整数元素的顺序,其中较小的值指示较低的数位位置。
图6示出了彼此相乘的第一矩阵和第二矩阵。作为本实施例中的示例,可以按行优先的降序将多个第一整数元素(b0)至(b7)每次四个地代入到具有两行和两列的第一矩阵中。此外,一个或多个第二整数元素可以被代入到具有两行和两列的第二矩阵中,使得两个第二整数元素在每个列中处于升序,并且两个第二整数元素在每个行中处于降序。可以将比第一行中的第二整数元素向较高数位位置多移位一个整数元素的第二整数元素代入到第二矩阵中的第二行中。只要整数元素在行方向和/或列方向上按诸如上述的顺序来排列,第一矩阵和第二矩阵就可以被生成为使得首先生成包括较低数位位置处的整数元素的矩阵。换句话说,可以从图6的底部按顺序生成第一矩阵,并且可以从图6的右侧按顺序生成第二矩阵。
图7示出了部分乘积的相加。在图中,由虚线所包围的部分X1和X2指示图6中所示的第一矩阵M1和第二矩阵M21的乘法结果。在这些部分中,部分X1中的矩阵元素为第三矩阵中(并且因此也在第四矩阵中)的最后一行中的矩阵元素,以及因此被提取为对应数位位置处的部分乘积之和。在提取之后,部分X2中的矩阵元素被移位到第四矩阵中的最后一行。
由虚线所包围的部分Y1和Y2指示图6中所示的第一矩阵M1和第二矩阵M22的乘法结果。在这些部分中,部分Y1中的矩阵元素为第三矩阵中的最后一行中的矩阵元素,并且在将该矩阵元素加到第四矩阵中的最后一行中的矩阵元素(这里为部分X2中的矩阵元素)之后,结果被提取为对应比特位置处的部分乘积之和。
此后,以相同的方式,计算第一整数元素b0至b3和第二整数元素a0至a7的部分乘积,并且还计算第一整数元素b4至b7和第二整数元素a0至a7的部分乘积。然后,通过将每个部分乘积布置在对应数位位置处并且将部分乘积相加在一起,计算第十二整数作为乘积。
在以上本实施例中,装置1被描述为诸如GPU之类的处理器,但是除了该处理器(被称为第一处理器)之外,还可以包括诸如CPU之类的另一单独的处理器(被称为第二处理器),该另一单独的处理器不包括用于计算具有N行和N列的矩阵的乘积的命令。在这种情况下,装置1可以根据第一整数和第二整数的大小,切换它是利用第一处理器还是利用第二处理器来计算第一整数和第二整数的乘积。例如,如果第一整数和第二整数的大小大于参考大小(例如,在从8192比特到16384比特的范围中的大小),则装置1可以使用第二处理器来计算乘积。相反,如果第一整数和第二整数的大小小于参考大小,则装置1可以使用第二处理器来计算乘积。以此方式,如果由于整数的大小,利用第二处理器的计算速度大于利用第一处理器的计算速度,则可以提高计算速度。
此外,在以上描述中,装置1通过将通过划分第一整数而获得的多个第一整数元素和通过划分第二整数而获得的多个第二整数元素相乘在一起来计算第一整数和第二整数的乘积,但是可以替代地使用其他技术来计算乘积。例如,装置1可以使用卡拉楚巴(Karatsuba)算法来计算两个整数(被称为第三整数和第四整数)的乘积。作为示例,装置1可以通过将第三整数(C)的上半部分(Ch)设定为第一整数、将第四整数(D)的上半部分(Dh)设定为第二整数、并且以与上述实施例中相同的方式计算第一整数和第二整数的乘积来计算第一乘积(Ch·Dh)。此外,装置1可以通过将第三整数(C)的下半部分(Cl)设定为第一整数、将第四整数(D)的下半部分(Dl)设定为第二整数、并且计算第一整数和第二整数的乘积来计算第二乘积(Cl·Dl)。装置1可以通过将第三整数(C)的上半部分和下半部分之和(Ch+Cl)设定为第一整数、将第四整数(D)的上半部分和下半部分之和(Dh+Dl)设定为第二整数、并且计算第一整数和第二整数的乘积来计算第三乘积(Ch+Cl)(Dh+Dl)。然后,装置1可以基于第一乘积、第二乘积和第三乘积来计算第三整数和第四整数。作为示例,如果划分的数量是z,则装置1可以使用表达式E=(Ch·Dh)z2+{(Ch+Cl)(Dh+Dl)-(Ch·Dh)-(Cl·Dl)}z+(Cl·Dl)来计算第三整数和第四整数的乘积E。以此方式,可以减少整数元素之间的乘法的数量并且提高计算速度。
在以上描述中,装置1包括存储器2和整数乘积计算部9,但是可以从装置1中省略这些组件中的至少一个组件。如果装置1不包括存储器2,则矩阵代入部3可以从装置1的外部获取第一整数数据和第二整数数据。如果装置1不包括整数乘积计算部9,则整数乘积计算部9可以连接在装置1的外部,并且装置1可以将部分乘积提供给整数乘积计算部9。
以上描述了将整数元素代入到第一矩阵和第二矩阵中的一个实施例,但是只要可以从第三矩阵中的矩阵元素中提取部分乘积并且将这些部分乘积布置在对应数位位置处,就可以使用其他实施例。例如,整数元素可以按在数位方向上不连续的顺序被代入到第一矩阵和/或第二矩阵中,或者可以在改变列或行的顺序的同时被代入。此外,在以上描述中,矩阵乘法中的被乘数是第一矩阵,而乘数是第二矩阵,但是这些角色可以反转。
图8示出了根据本发明的实施例的被配置为执行前述操作的计算机的示例性硬件配置。安装在计算机700中的程序可以使计算机700用作或执行与本发明的实施例的装置或装置的一个或多个部(包括模块、组件、元件等)相关联的操作,和/或使计算机700执行本发明的实施例的处理或其步骤。这样的程序可以由CPU 700-12执行以使计算机700执行与本文中描述的流程图和框图中的一些或全部方框相关联的某些操作。
根据本实施例的计算机700包括通过主机控制器700-10相互连接的CPU 700-12、RAM 700-14、图形控制器700-16和显示设备700-18。计算机700还包括输入/输出单元,例如通信接口700-22、硬盘驱动器700-24、DVD-ROM驱动器700-26和IC卡驱动器,它们经由输入/输出控制器700-20连接到主机控制器700-10。计算机还包括传统的输入/输出单元,例如ROM 700-30和键盘700-42,它们通过输入/输出芯片700-40连接到输入/输出控制器700-20。
CPU 700-12根据存储在ROM 700-30和RAM 700-14中的程序来操作,从而控制每个单元。图形控制器700-16在RAM 700-14或其自身中提供的帧缓冲器等上获得由CPU 700-12生成的图像数据,并且使图像数据显示在显示设备700-18上。图形控制器700-16可以包括一个或多个GPU。
通信接口700-22经由网络700-50与其它电子设备通信。硬盘驱动器700-24存储由计算机700内的CPU 700-12使用的程序和数据。DVD-ROM驱动器700-26从DVD-ROM 700-01读取程序或数据,并且经由RAM 700-14向硬盘驱动器700-24提供程序或数据。IC卡驱动器从IC卡中读取程序和数据,和/或将程序和数据写入到IC卡中。
ROM 700-30中存储由计算机700在激活时执行的引导程序等和/或取决于计算机700的硬件的程序。输入/输出芯片700-40还可以经由并行端口、串行端口、键盘端口、鼠标端口等将各种输入/输出单元连接到输入/输出控制器700-20。
程序由诸如DVD-ROM 700-01或IC卡之类的计算机可读介质提供。该程序从计算机可读介质中读取,安装到也作为计算机可读介质的示例的硬盘驱动器700-24、RAM 700-14或ROM 700-30中,并且由CPU 700-12执行。在这些程序中描述的信息处理被读取到计算机700中,从而导致程序和上述各种类型的硬件资源之间的协作。可以通过根据计算机700的使用而实现信息的操作或处理来构成装置或方法。
例如,当在计算机700和外部设备之间执行通信时,CPU 700-12可以执行加载到RAM 700-14上的通信程序,以基于在通信程序中描述的处理向通信接口700-22指示通信处理。通信接口700-22在CPU 700-12的控制下,读取存储在记录介质中提供的传输缓冲区上的传输数据,并且将所读取的传输数据传输到网络700-50,或者将从网络700-50接收的接收数据写入到记录介质上提供的接收缓冲区等,所述记录介质例如是RAM 700-14、硬盘驱动器700-24、DVD-ROM 700-01或IC卡。
此外,CPU 700-12可以使文件或数据库的全部或需要部分被读入到RAM 700-14中,该文件或数据库已经被存储在诸如硬盘驱动器700-24、DVD-ROM驱动器700-26(DVD-ROM700-01)、IC卡等外部记录介质中,并且对RAM 700-14上的数据执行各种类型的处理。然后,CPU 700-12可以将所处理的数据写入回到外部记录介质。
各种类型的信息(例如各种类型的程序、数据、表格和数据库)可以存储在记录介质中以经受信息处理。CPU 700-12可以对从RAM 700-14读取的数据执行各种类型的处理,包括如整个本公开中所述的并且由程序的指令序列指定的各种类型的操作、信息处理、条件判断、条件分支、无条件分支、信息搜索/替换等,并且将结果写入回到RAM 700-14。另外,CPU 700-12可以在记录介质中搜索文件、数据库等中的信息。例如,当多个条目被存储在记录介质中时,每个条目具有与第二属性的属性值相关联的第一属性的属性值,CPU 700-12可以从多个条目当中搜索与指定了第一属性的属性值的条件相匹配的条目,并且读取存储在条目中的第二属性的属性值,从而获得与满足预定条件的第一属性相关联的第二属性的属性值。基于计算精度和速度的数据库搜索通过减少由CPU 700-12查找数据库结果所使用的时钟周期数量来提高计算机700的性能。计算机700的这种提高可以被看作是对数据库搜索的更快响应。
上述程序或软件模块可以存储在计算机700上或附近的计算机可读介质中。另外,可以使用诸如在连接到专用通信网络或因特网的服务器系统中提供的硬盘或RAM之类的记录介质作为计算机可读介质,从而经由网络将程序提供给计算机700。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是可以保持和存储用于由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构之类的机械编码装置、以及前述各项的任何适当组合。如本文中所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过电线传输的电信号。
本文中描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设定数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述一种或多种编程语言包括面向对象的编程语言(例如Smalltalk、C++等)和常规的过程编程语言(例如"C"编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在本文中参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。将理解,流程图和/或框图中的每个方框以及流程图和/或框图中的方框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图中的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个方框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个方框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这点上,流程图或框图中的每个方框可以表示指令的模块、分段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,方框中所提及的功能可以不按图中所提及的顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以按相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合可以由执行指定的功能或动作或者执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
尽管已经对本发明的实施例进行了描述,但是本发明的技术范围并不限于上述实施例。对于本领域技术人员来说,显然可以对上述实施例添加各种修改和改进。另外,根据权利要求书的范围,显然可以将添加了这样的修改或改进的实施例包括在本发明的技术范围中。
由权利要求、实施例或附图中所示的装置、系统、程序和方法执行的每个处理的操作、过程、步骤和阶段可以按任何顺序执行,只要该顺序不是由"之前"、"之前"等指示并且只要来自先前处理的输出没有在后续处理中使用即可。即使在权利要求、实施例或附图中使用诸如"第一"或"下一个"之类的短语来描述处理的流程,也不一定意味着必须按该顺序来执行处理。
从以上清楚地可知,利用本发明的实施例,可以提高计算精度和计算速度。

Claims (23)

1.一种计算机实现的方法,包括:
将通过在第一数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵中;
将通过在第二数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中;
计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积;以及
输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。
2.根据权利要求1所述的计算机实现的方法,其中,在代入到第一矩阵中和代入到第二矩阵中期间,第一矩阵和第二矩阵中的每个矩阵元素被布置为使得在第一矩阵中包括的每个第一整数元素和第二矩阵中包括的每个第二整数元素的乘积当中的与第一整数和第二整数的乘积中的相同数位位置相对应的每个乘积对应于第三矩阵中的相同矩阵元素。
3.根据权利要求1所述的计算机实现的方法,其中,N×N个第一整数元素在第一整数数据中的第一数位方向上是连续的。
4.根据权利要求3所述的计算机实现的方法,其中,所述一个或多个第二整数元素在第二整数数据中的第二数位方向上是连续的。
5.根据权利要求4所述的计算机实现的方法,其中,在代入到第一矩阵中期间,将N×N个第一整数元素当中的N个连续的第一整数元素按第一整数数据中的第一数位方向上的升序或降序代入到第一矩阵中的每个行中;以及
在代入到第二矩阵中期间,将多个第二整数元素当中的N个连续的第二整数元素按第二整数数据的第二数位方向上的与将N个第一整数元素代入到第一矩阵中的顺序相反的顺序代入到第二矩阵中的每个列中。
6.根据权利要求5所述的计算机实现的方法,其中:
在代入到第一矩阵中期间,将N×N个第一整数元素按列优先和升序或降序代入到第一矩阵中的每个矩阵元素中;以及
在代入到第二矩阵中期间:
将N个连续的第二整数元素按与将N个第一整数元素代入到第一矩阵中的顺序相同的顺序代入到第二矩阵中的第一行中;以及
将N个第二整数元素代入到第二矩阵中的第二行和后续行中,同时每次将第二整数数据中的N个第二整数元素移位一个整数元素。
7.根据权利要求6所述的计算机实现的方法,其中,将第三矩阵与第四矩阵相加;以及
输出作为部分乘积包括:
提取第四矩阵中的第一行或最后一行中的每个矩阵元素,作为第一整数和第二整数的乘积中的对应比特位置处的每个第一整数元素和每个第二整数元素的部分乘积之和;以及
将第四矩阵中除了被提取为部分乘积之和的行之外的行向被提取为部分乘积之和的行移位一行,并且将具有空白空间的行中的每个矩阵元素设定为0。
8.根据权利要求1所述的计算机实现的方法,其中,每当在代入到第一矩阵中期间将所述多个第一整数元素当中的N×N个第一整数元素的不同集合代入到第一矩阵中时,重复在代入到第二矩阵中期间每次一个地将来自所述多个第二整数元素中的所述一个或多个第二整数元素依次代入到第二矩阵中的处理;
每当将所述一个或多个第二整数元素代入到第二矩阵中时,执行第三矩阵的计算和部分乘积的输出;以及
基于每个输出的部分乘积来计算第一整数和第二整数的乘积。
9.根据权利要求8所述的计算机实现的方法,其中,计算第一整数和第二整数的乘积包括:
将每个部分乘积布置在第一整数和第二整数的乘积中的对应数位位置处;以及
将每个部分乘积的数位溢出加到较高数位。
10.根据权利要求1所述的计算机实现的方法,其中,通过将第三整数的上半部分设定为第一整数、将第四整数的上半部分设定为第二整数、并且计算第一整数和第二整数的乘积来计算第三整数的上半部分和第四整数的上半部分的第一乘积;
通过将第三整数的下半部分设定为第一整数、将第四整数的下半部分设定为第二整数、并且计算第一整数和第二整数的乘积来计算第三整数的下半部分和第四整数的下半部分的第二乘积;
通过将第三整数的上半部分和下半部分之和设定为第一整数、将第四整数的上半部分和下半部分之和设定为第二整数、并且计算第一整数和第二整数的乘积来计算第三整数的上半部分和下半部分之和与第四整数的上半部分和下半部分之和的第三乘积;以及
基于第一乘积、第二乘积和第三乘积计算第三整数和第四整数的乘积。
11.根据权利要求1所述的计算机实现的方法,其中,第三矩阵的计算由第一处理器执行,第一处理器根据一个命令来计算具有N行和N列的矩阵的乘积。
12.根据权利要求11所述的计算机实现的方法,其中,根据第一整数和第二整数的大小,在使用第一处理器计算第一整数和第二整数的乘积与使用第二处理器计算第一整数和第二整数的乘积之间执行切换,第二处理器不具有用于计算具有N行和N列的矩阵的乘积的命令。
13.根据权利要求1所述的计算机实现的方法,其中,所述多个第一整数元素和所述多个第二整数元素具有相同的大小。
14.根据权利要求13所述的计算机实现的方法,其中,所述多个第一整数元素和所述多个第二整数元素各自为8比特。
15.一种装置,包括:
处理器或可编程电路;以及
共同地包括指令的一个或多个计算机可读介质,所述指令在由所述处理器或所述可编程电路执行时使所述处理器或所述可编程电路:
将通过在第一数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵中;
将通过在第二数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中;
计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积;以及
输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。
16.根据权利要求15所述的装置,其中,在代入到第一矩阵中和代入到第二矩阵中期间,第一矩阵和第二矩阵中的每个矩阵元素被布置为使得在第一矩阵中包括的每个第一整数元素和第二矩阵中包括的每个第二整数元素的乘积当中的与第一整数和第二整数的乘积中的相同数位位置相对应的每个乘积对应于第三矩阵中的相同矩阵元素。
17.根据权利要求15所述的装置,其中,所述指令在由所述处理器或所述可编程电路执行时使所述处理器或所述可编程电路:
每当在代入到第一矩阵中期间将所述多个第一整数元素当中的N×N个第一整数元素的不同集合代入到第一矩阵中时,重复在代入到第二矩阵中期间每次一个地将来自所述多个第二整数元素中的所述一个或多个第二整数元素依次代入到第二矩阵中的处理;
每当将所述一个或多个第二整数元素代入到第二矩阵中时,执行第三矩阵的计算和部分乘积的输出;以及
基于每个输出的部分乘积来计算第一整数和第二整数的乘积。
18.一种装置,包括:
第一矩阵代入部,第一矩阵代入部将通过在第一数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵中;
第二矩阵代入部,第二矩阵代入部将通过在第二数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中;
第三矩阵计算部,第三矩阵计算部计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积;以及
部分乘积输出部,部分乘积输出部输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。
19.根据权利要求18所述的装置,其中,在代入到第一矩阵中和代入到第二矩阵中期间,第一矩阵和第二矩阵中的每个矩阵元素被布置为使得在第一矩阵中包括的每个第一整数元素和第二矩阵中包括的每个第二整数元素的乘积当中的与第一整数和第二整数的乘积中的相同数位位置相对应的每个乘积对应于第三矩阵中的相同矩阵元素。
20.根据权利要求18所述的装置,其中,每当第一矩阵代入部将所述多个第一整数元素当中的N×N个第一整数元素的不同集合代入到第一矩阵中时,第二矩阵代入部重复在代入到第二矩阵中期间每次一个地将来自所述多个第二整数元素中的所述一个或多个第二整数元素依次代入到第二矩阵中的处理;
每当第二矩阵代入部将所述一个或多个第二整数元素代入到第二矩阵中时,第三矩阵计算部和部分乘积输出部执行第三矩阵的计算和部分乘积的输出;以及
所述装置包括整数乘积计算部,整数乘积计算部基于每个输出的部分乘积来计算第一整数和第二整数的乘积。
21.一种计算机程序产品,所述计算机程序产品包括共同地存储程序指令的一个或多个计算机可读存储介质,所述程序指令能由处理器或可编程电路执行以使所述处理器或所述可编程电路执行操作,所述操作包括:
将通过在第一数位方向上划分表示第一整数的第一整数数据而获得的多个第一整数元素当中的N×N个第一整数元素代入到具有N行和N列的第一矩阵中;
将通过在第二数位方向上划分表示第二整数的第二整数数据而获得的多个第二整数元素当中的一个或多个第二整数元素中的每个代入到具有N行和N列的第二矩阵中的至少一个矩阵元素中;
计算第三矩阵,第三矩阵是第一矩阵和第二矩阵的乘积;以及
输出第三矩阵中的每个矩阵元素作为第一整数和第二整数的乘积的计算中的部分乘积。
22.根据权利要求21所述的计算机程序产品,其中,在代入到第一矩阵中和代入到第二矩阵中期间,第一矩阵和第二矩阵中的每个矩阵元素被布置为使得在第一矩阵中包括的每个第一整数元素和第二矩阵中包括的每个第二整数元素的乘积当中的与第一整数和第二整数的乘积中的相同数位位置相对应的每个乘积对应于第三矩阵中的相同矩阵元素。
23.根据权利要求21所述的计算机程序产品,其中,所述指令在由所述处理器或所述可编程电路执行时使所述处理器或所述可编程电路:
每当在代入到第一矩阵中期间将所述多个第一整数元素当中的N×N个第一整数元素的不同集合代入到第一矩阵中时,重复在代入到第二矩阵中期间每次一个地将来自所述多个第二整数元素中的所述一个或多个第二整数元素依次代入到第二矩阵中的处理;
每当将所述一个或多个第二整数元素代入到第二矩阵中时,执行第三矩阵的计算和部分乘积的输出;以及
基于每个输出的部分乘积来计算第一整数和第二整数的乘积。
CN201980016853.5A 2018-03-05 2019-03-04 使用16比特浮点乘法器的矩阵-矩阵乘法的多精度整数乘法器 Pending CN111801651A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/911,772 US10528642B2 (en) 2018-03-05 2018-03-05 Multiple precision integer multiple by matrix-matrix multiplications using 16-bit floating point multiplier
US15/911,772 2018-03-05
PCT/IB2019/051710 WO2019171238A1 (en) 2018-03-05 2019-03-04 Multiple precision integer multiplier by matrix-matrix multiplications using 16-bit floating point multiplier

Publications (1)

Publication Number Publication Date
CN111801651A true CN111801651A (zh) 2020-10-20

Family

ID=67768635

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980016853.5A Pending CN111801651A (zh) 2018-03-05 2019-03-04 使用16比特浮点乘法器的矩阵-矩阵乘法的多精度整数乘法器

Country Status (6)

Country Link
US (2) US10528642B2 (zh)
JP (1) JP7129138B2 (zh)
CN (1) CN111801651A (zh)
DE (1) DE112019000382T5 (zh)
GB (1) GB2584265A (zh)
WO (1) WO2019171238A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11341185B1 (en) * 2018-06-19 2022-05-24 Amazon Technologies, Inc. Systems and methods for content-based indexing of videos at web-scale
KR102703432B1 (ko) * 2018-12-31 2024-09-06 삼성전자주식회사 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치
US20220309126A1 (en) * 2021-03-26 2022-09-29 Advanced Micro Devices, Inc. Approximation of matrices for matrix multiply operations
US12072952B2 (en) 2021-03-26 2024-08-27 Advanced Micro Devices, Inc. Data compressor for approximation of matrices for matrix multiply operations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0421026A (ja) * 1990-05-14 1992-01-24 Nec Corp 高桁乗算装置
CN102446160A (zh) * 2011-09-06 2012-05-09 中国人民解放军国防科学技术大学 面向双精度simd部件的矩阵乘实现方法
US20140365548A1 (en) * 2013-06-11 2014-12-11 Analog Devices Technology Vector matrix product accelerator for microprocessor integration
CN106371808A (zh) * 2015-07-22 2017-02-01 华为技术有限公司 一种并行计算的方法及终端
CN106445471A (zh) * 2016-10-13 2017-02-22 北京百度网讯科技有限公司 处理器和用于在处理器上执行矩阵乘运算的方法
GB201710332D0 (en) * 2017-06-28 2017-08-09 Advanced Risc Mach Ltd Register-based matrix multiplication

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3637073B2 (ja) * 1993-10-21 2005-04-06 株式会社東芝 倍精度・単精度・内積演算および複素乗算が可能な乗算器
WO2003021423A2 (en) 2001-09-04 2003-03-13 Microunity Systems Engineering, Inc. System and method for performing multiplication
US7318080B2 (en) * 2003-11-06 2008-01-08 Telefonaktiebolaget L M Ericsson (Publ) Split radix multiplication
WO2013044276A1 (en) 2011-09-27 2013-04-04 Technische Universität Graz Multiplication of large operands
CN102446460A (zh) 2011-11-30 2012-05-09 黄武昌 多功能轴筒式遥控记录展示系统
US9600235B2 (en) * 2013-09-13 2017-03-21 Nvidia Corporation Technique for performing arbitrary width integer arithmetic operations using fixed width elements
US9703531B2 (en) * 2015-11-12 2017-07-11 Arm Limited Multiplication of first and second operands using redundant representation

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0421026A (ja) * 1990-05-14 1992-01-24 Nec Corp 高桁乗算装置
CN102446160A (zh) * 2011-09-06 2012-05-09 中国人民解放军国防科学技术大学 面向双精度simd部件的矩阵乘实现方法
US20140365548A1 (en) * 2013-06-11 2014-12-11 Analog Devices Technology Vector matrix product accelerator for microprocessor integration
CN106371808A (zh) * 2015-07-22 2017-02-01 华为技术有限公司 一种并行计算的方法及终端
CN106445471A (zh) * 2016-10-13 2017-02-22 北京百度网讯科技有限公司 处理器和用于在处理器上执行矩阵乘运算的方法
GB201710332D0 (en) * 2017-06-28 2017-08-09 Advanced Risc Mach Ltd Register-based matrix multiplication

Also Published As

Publication number Publication date
US10528642B2 (en) 2020-01-07
WO2019171238A1 (en) 2019-09-12
GB202015022D0 (en) 2020-11-04
US20190272308A1 (en) 2019-09-05
US20200073914A1 (en) 2020-03-05
US10795967B2 (en) 2020-10-06
GB2584265A (en) 2020-11-25
JP7129138B2 (ja) 2022-09-01
JP2021515936A (ja) 2021-06-24
DE112019000382T5 (de) 2020-09-24

Similar Documents

Publication Publication Date Title
US10795967B2 (en) Multiple precision integer multiplier by matrix-matrix multiplications using 16-bit floating point multiplier
JP5731937B2 (ja) ベクトル浮動小数点引数削減
CN109255436A (zh) 用于机器学习加速的双曲线函数
US10579338B2 (en) Apparatus and method for processing input operand values
JP2012069116A5 (zh)
US8434036B2 (en) Arithmetic program conversion apparatus, arithmetic program conversion method, and program
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
KR101929847B1 (ko) 희소행렬 연산 방법과 장치
CN117396847A (zh) 采用隐含的舍入模式的向/从所选择的数据类型的数据转换
US10613861B2 (en) Programmable linear feedback shift register
US9841979B2 (en) Method and apparatus for shuffling data using hierarchical shuffle units
KR20220038607A (ko) 내적 연산 구현 방법, 장치, 전자 기기 및 기록 매체
CN104169866A (zh) 运算处理装置以及运算处理装置的控制方法
CN114972955A (zh) 一种数据处理方法、装置及存储介质
CN110199255B (zh) 组合若干执行单元以计算单一宽标量结果
US8108808B2 (en) Description processing device, description processing method, and recording medium
US10275256B2 (en) Branch prediction in a computer processor
GB2533391A (en) Wall encoding and decoding
CN117540669B (zh) 数字电路的结构化数据处理方法及装置
US11211945B1 (en) Parallelized decoding of variable-length prefix codes
US11416659B1 (en) Implementing an asymmetric memory with random port ratios using dedicated memory primitives
Hersh et al. A Little-Known History: The Polish Computer Industry
EP4016281A1 (en) Arithmetic processing device, arithmetic processing method, and arithmetic processing program
TWI706325B (zh) 用於至間接指定位置之條件分支之電腦程式產品、電腦系統及電腦實施方法
KR20230096902A (ko) 부동소수점 내적 연산기 구조 및 장치

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