CN100495326C - 具有减小的带宽要求的矩阵乘法 - Google Patents
具有减小的带宽要求的矩阵乘法 Download PDFInfo
- Publication number
- CN100495326C CN100495326C CNB2007100974564A CN200710097456A CN100495326C CN 100495326 C CN100495326 C CN 100495326C CN B2007100974564 A CNB2007100974564 A CN B2007100974564A CN 200710097456 A CN200710097456 A CN 200710097456A CN 100495326 C CN100495326 C CN 100495326C
- Authority
- CN
- China
- Prior art keywords
- matrix
- computing
- value
- group
- operation number
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims abstract description 47
- 239000011159 matrix material Substances 0.000 abstract description 122
- 230000005540 biological transmission Effects 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
用于减小读取矩阵乘法运算的输入所需的带宽的***和方法可改进***性能。不是读取第一输入矩阵的行和第二输入矩阵的列以产生乘积矩阵的列,而是读取第一输入矩阵的列和第二输入矩阵的单个元素以产生乘积矩阵的部分点乘积的列。因此,经读取以产生每个乘积矩阵元素的输入矩阵元素的数目从2N减少到N+1,其中N为所述乘积矩阵的列中的元素的数目。
Description
技术领域
本发明的实施例大体上涉及使用多线程处理或向量处理来执行矩阵乘法,且更具体来说涉及减小存储器带宽。
背景技术
矩阵—矩阵乘法是高性能计算领域中许多计算的重要构成块。用于执行矩阵-矩阵乘法的每个乘法-加法运算均需要存取存储器中的两个源操作数。因此,在同时执行T个线程(每个线程执行一乘法—加法运算)的多线程处理器中,需要2T个存储器操作数来供给用于运算的乘法部分的操作数。类似地,在并行执行T个数据通道的向量处理器(例如,T通道单指令多数据(SIMD)向量处理器)中,每个向量乘法-加法需要2T个存储器操作数。一般来说,提供用于2T个同时存取的存储器带宽随着T增加而逐渐变难,且因此矩阵乘法对于充分大的T来说存储器带宽变得有限。这限制了处理装置针对矩阵乘法的整体计算性能。
因此,期望减小供给用于乘法-加法运算所需的存储器带宽,以改进针对矩阵乘法的计算性能。
发明内容
本发明涉及用于使用多线程处理器减小矩阵乘法的存储器带宽要求的新的***和方法。通过以在矩阵乘法的给定步骤中,T个执行线程群组或T个向量通道对其各自乘法-加法运算共享两个源操作数中的一个的方式执行两个矩阵的乘法,可减小存储器带宽要求。通过在多线程处理装置内包括操作数传播机制来利用此方法。传播机制允许将一个存储位置的内容传播到线程群组中的所有T个线程或向量中的所有T个通道,在该处所述值可用作执行指令的源操作数,所述执行指令包括构成乘法-加法运算的一个或多个指令。所述机制提供软件方式来控制此传播传递。当使用传播机制时,可减小执行例如乘法-加法的运算所需的存储器带宽要求。
对于每个同时执行的乘法-加法运算,与使用执行矩阵乘法的常规方法时的2T个存储器位置相反,线程群组的T个执行线程仅存取T+1个存储器位置。当存储器带宽受限时,减小获得用于矩阵乘法运算的操作数所需的存储器带宽可改进矩阵乘法性能。此外,可改进其它的存储器带宽受限的运算的性能。
本发明的用于执行线程群组中多个线程的程序指令的方法的各种实施例包括获得由所述程序指令包括的传播操作数规定的第一值和获得由所述程序指令包括的并行操作数规定的一组第二值,其中所述第二值中的每一者均对应于所述线程群组中多个线程中的一者。将所述第一值提供到多个程序指令执行单元,将所述第二值提供到所述多个程序指令执行单元,且针对所述线程群组中多个线程中的每一者执行所述程序指令。
本发明的用于将第一矩阵与第二矩阵的第一列相乘以产生乘积矩阵的第一列的方法的各种实施例包括将第一矩阵的第一列的每个元素乘以第二矩阵的第一列的第一元素以产生对应于乘积矩阵的第一列的第一元素群组,将对应于乘积矩阵的列的第一元素群组存储在一组寄存器中,将第一矩阵的第二列的每个元素乘以第二矩阵的第一列的第二元素以产生对应于乘积矩阵的第一列的第二元素群组,将所存储的元素群组中的每个元素与第二元素群组中的相应元素求和以产生乘积矩阵的第一列内的乘积元素群组,和将所述乘积元素群组存储在所述组寄存器中。
附图说明
为了能详细理解上文陈述的本发明的特征,参考实施例可获得上文简要概述的本发明的更特定描述,所述实施例中的某些在附图中有说明。然而应注意,附图仅说明本发明的典型实施例,且因此不应视为限制本发明的范围,本发明可允许其它同样有效的实施例。
图1A说明根据本发明一个或一个以上方面的经相乘以产生矩阵C的矩阵A和矩阵B的概念图。
图1B说明根据本发明一个或一个以上方面的将矩阵A与矩阵B相乘以产生矩阵C的示范性方法的流程图。
图1C说明根据本发明一个或一个以上方面的接收并行操作数和传播操作数的多个执行单元的概念方框图。
图2说明根据本发明一个或一个以上方面的执行包括传播操作数的指令的示范性方法的流程图。
具体实施方式
在以下描述中,陈述多种特定细节来提供对本发明的更彻底的理解。然而,所属领域的技术人员将明了,可在没有这些特定细节中的一个或一个以上细节的情况下实践本发明。在其它情况下,为了避免混淆本发明,没有描述众所周知的特征。
图1A说明根据本发明一个或一个以上方面的经相乘以产生矩阵C 103的矩阵A 101和矩阵B 102的概念图。常规上,使用矩阵A 101的行和矩阵B 102的列中的元素来计算点乘积,以产生矩阵C 103的列的元素。举例来说,矩阵A 101的行107中的元素和矩阵B 102的列105中的元素(例如,131、132和146)用于产生矩阵C 103的列104中的元素152。当常规***中使用多个执行线程来产生矩阵C 103,其中每个线程产生矩阵C的一元素时,每个线程读取来自矩阵A 101的元素和来自矩阵B 102的元素,以执行产生矩阵C 103的列(或行)的连续乘法-加法运算。如先前描述,在常规***中,当并行处理T个线程时,对于乘法-加法运算中的每次运算来说均读取2T个元素。
在本发明中,不是读取来自矩阵A 101的多个元素和来自矩阵B 102的多个元素以产生矩阵C 103的列,而是读取矩阵A 101的列和矩阵B 102的单个元素来产生矩阵C103的部分点乘积的列。举例来说,可读取列106和列105的元素131并相乘以产生乘积列。接着将乘积列,即,元素111和元素131的乘积、元素112和元素131的乘积、元素113和元素131的乘积、元素114和元素131的乘积等等,与列104求和以更新列104的部分点乘积。使用矩阵A 101的列和矩阵B 102的列105的元素来计算额外的乘积列。额外的乘积列随着部分点乘积列而依次累积,直到部分点乘积列完成为止。因此,每个线程读取来自矩阵A 101的一列的元素,且来自矩阵B 102的一行的单个元素被读取并由所有线程共享以执行乘法-加法。经读取以产生矩阵C 103的每个部分点乘积列的输入矩阵元素的数目从2T减少到T+1。从矩阵B 102读取的每个元素被传播到T个线程以乘以矩阵A 101的列的元素。
图1B说明根据本发明一个或一个以上方面的将矩阵A与矩阵B相乘以产生矩阵C的示范性方法的流程图。在步骤170中,初始化存储矩阵C 103的元素的寄存器或存储器位置。举例来说,可将每个元素初始化为0值。在步骤171中,将矩阵A 101的第一列中的每个元素乘以矩阵B 102的列中的一个元素。举例来说,第一线程将元素111乘以元素131,第二线程将元素112乘以元素131等等,以产生乘积元素列。在步骤172中,将步骤171中产生的每个乘积元素与矩阵 C 103的列中的相应元素求和。举例来说,将元素111与131的乘积与元素151求和以累积部分点乘积。
在步骤173中,所述方法判定矩阵B 102的列中是否存在另一元素。举例来说,在已使用元素131累积矩阵C 103的列104的部分点乘积之后,将使用元素132,依此类推,直到使用列中的最后的元素——元素146为止。如果在步骤173中所述方法判定已使用矩阵B 102的列中的所有元素,那么所述方法继续进行到步骤175。否则,在步骤174中所述方法获得矩阵B 102的列中的下一元素并获得矩阵A 174的下一列,且重复步骤171、172和173以将另一乘积累积到矩阵C 103的列104的每个部分点乘积中。不需要以任何特定次序使用矩阵B 102的列中的元素,只要使用每个元素来产生与矩阵A 101的相应列的乘积。
在步骤175中,所述方法判定矩阵B 102中是否存在另一列,且如果不存在,那么所述方法继续进行到步骤177且矩阵乘法运算完成。否则,在步骤176中所述方法获得矩阵B 102的未使用的列并获得矩阵A 101的第一列。重复步骤171、172、173和174以产生矩阵C 103的另一列。
图1C说明根据本发明一个或一个以上方面的各自接收传播操作数的多个程序指令执行单元的概念方框图。所述多个程序指令执行单元可经配置以减小获得源操作数(即,矩阵A 101和矩阵B 102的元素)以产生矩阵C 103所需的带宽。每个程序指令执行单元(执行单元180、181、182、183、184、185、186和187)经配置以产生矩阵C 103的至少一个元素。执行单元180、181、182、183、184、185、186和187可经配置以并行执行程序指令。举例来说,所述执行单元中的每个执行单元可处理一群组多个线程内的线程,以并行执行多个线程的程序指令,例如,在多线程处理器中。在另一实例中,所述执行单元中的每个执行单元可处理一群组多个通道中的通道,以并行执行多个通道的程序指令,例如,在单指令多数据(SIMD)向量处理器中。
每个执行单元接收来自并行操作数190的一个唯一的并行操作数。矩阵A 101的元素可为并行操作数。每个执行单元还接收来自传播操作数191的一个传播操作数。同一传播操作数由传播操作数191输出到每个执行单元。矩阵B 102的元素可为传播操作数。在本发明的其它实施例中,颠倒矩阵A 101和矩阵B 102,且矩阵A 101提供传播操作数,矩阵B 102提供并行操作数。
对于每个同时执行的乘法-加法运算,与使用执行矩阵乘法的常规方法时的2T个存储器位置相反,T个执行单元仅存取T+1个存储器位置。当使用传播机制时,可减小执行例如乘法—加法的运算所需的存储器带宽要求。因此,当处理性能受存储器带宽限制时,可通过使用传播机制使性能改进可能几乎两倍。尽管在矩阵-矩阵乘法(特定来说,乘法—加法运算)的情形中描述了传播机制,但也可使用传播机制来执行多线程处理期间的其它运算。其它运算的实例包括求最小值、求最大值、加法、减法、绝对差求和、平方差求和、乘法和除法。
常规的处理***通过细分可能处于若干级别的运算以有效利用由具有不同性能(例如,处理量、等待时间或类似性能)的存储器装置组成的存储器体系的多个级别,来执行矩阵-矩阵乘法。所述细分导致将大矩阵的矩阵乘法分解为整个矩阵的若干部分(称为瓷砖片(tile))的矩阵乘法。在耦合到存储器体系的具有不同速度的至少两个级别的处理装置上,可通过将来自存储在存储器体系的较慢级别中的两个源矩阵的瓷砖片复制到存储器体系的较快级别、将所述瓷砖片相乘得到结果瓷砖片、并将结果瓷砖片复制回到存储在存储器体系的所述较慢级别中的结果矩阵的适当部分,来加速矩阵乘法。
用于执行矩阵乘法的分片技术是所属领域的技术人员已知的。本发明的***和方法可应用于计算乘积矩阵的每个瓷砖片中的元素。特定地,可使用传播机制计算瓷砖片的元素,其中矩阵A 101、矩阵B 102和矩阵C 103各自为较大矩阵的瓷砖片。类似地,将矩阵-向量乘法归类为一个维度是单位元素的矩阵的特殊情况。
图2说明根据本发明一个或一个以上方面的执行包括传播操作数的指令的示范性方法的流程图。在步骤200中,所述方法接收包括用于多线程处理的一个或一个以上操作数的指令。在步骤205中,所述方法判定第一操作数是否为传播操作数。可使用多种技术来规定特定操作数为传播操作数。一个此种技术是定义包括由指令格式规定为传播操作数的操作数的指令。举例来说,可定义两个不同的载入指令,一个包括并行操作数且另一个包括传播操作数。
表1中所示的代码表示用于如图1C所示的多线程或向量处理器的T个并行执行单元的一组运算或指令,可用于执行T个用于矩阵-矩阵乘法的乘法-加法运算。
表1
LDA,M[A1+offsetA] | //载入矩阵A的T个元素 |
LDB B,M[A2+offsetB] | //载入并传播矩阵B的1个元素 |
FMAD C,A,B,C | //对于C的T个元素,C=A*B+C |
LD指令包括用于T个线程或T个向量通道的并行操作数,其规定每个线程或通道的存储器地址A1+offsetA,其中A1可为矩阵瓷砖片、矩阵、列或类似物的基地址,且offsetA可为特定列或列的一部分的偏移量。offsetA可省略。有效地址随每个线程或通道而变化,例如,T个地址寄存器A1(每个线程或通道一个)针对每个线程或通道以不同地址初始化。将存储在由T个地址A1+offsetA规定的T个存储器位置中的T个元素载入每个执行单元的寄存器A。处理线程或通道的每个执行单元读取不同的存储器位置。因此,地址A1+offsetA可随着唯一的线程或通道识别符而变化,以针对每个线程或通道规定不同的存储器位置。举例来说,每个线程或通道中的地址寄存器A1以随线程或通道识别符变化的不同地址而初始化。
LDB指令包括规定存储器地址A2+offsetB的传播操作数,其中A2可为矩阵瓷砖片、矩阵、列或类似物的基地址,且offsetB可为特定列或列的一部分的偏移量。将存储在由A2+offsetB规定的存储器位置中的元素载入每个执行单元的寄存器B。不同于其中A1+offsetA针对每个线程或通道具有不同值的LD指令,A2+offsetB针对线程群组中的所有线程或向量中的所有通道均具有相同的值。最终,每个执行单元执行FMAD(浮点乘法累积)指令以使用寄存器A、B和C执行乘法-加法功能。在本发明的其它实施例中,使用IMAD(整数乘法累积)指令来执行乘法-加法功能。在本发明的另外的实施例中,可用指令表示另一计算(例如,加法、减法或类似计算)以基于传播操作数产生结果。
在本发明的某些实施例中,可使用较少指令实现表1中所示运算组所提供的功能性。举例来说,可将LD和LDB指令组合成单个指令,其以双发射(dual issue)方式具有用于并行执行的FMAD指令。在另一实例中,LD、LDB和FMAD指令可组合形成组合的宽指令,其被提供到多个执行单元进行并行执行。
可用于规定特定操作数为传播操作数的另一技术是定义处在传播存储器区域内的特殊存储器地址。举例来说,在表1中,可用LD指令替代LDB指令,其中A2+offsetB对应于传播存储器区域内的存储器地址。当规定了传播存储器区域内的地址时,仅读取一个存储器位置,且将存储在所述一个位置中的数据传播到目的地(B)的每个字段。
可用于规定特定操作数为传播操作数的又一技术是定义传播到每个执行单元的特定寄存器。举例来说,在表1中,LDB指令将载入单个寄存器(例如,寄存器B)而不是将存储在由A2+offsetB规定的存储器位置中的元素传播到每个执行单元。寄存器B将被规定为传播寄存器,且当寄存器B被规定为用于指令(例如表1中的FMAD指令)的操作数时,存储在寄存器B中的值被传播到每个执行单元以便执行所述指令。
如果在步骤205中所述方法判定第一操作数是传播操作数,那么在步骤210中所述方法读取由所述操作数规定的单个值。在步骤215中,将所述单个值传播到执行单元中的每个执行单元。在本发明的规定一个或一个以上传播寄存器的实施例中,将所述单个值载入传播寄存器且随后传播到执行单元。如果在步骤205中所述方法判定第一操作数不是传播操作数,即,第一操作数是并行操作数,那么在步骤220中所述方法读取由所述操作数规定的值。用于每个线程或通道的每个执行单元可读取不同的值,即,值的数目等于执行的线程或通道的数目。在步骤225中,将读取的值输出(并行)到执行单元。
在步骤230中所述方法判定是否为所述指令规定了另一操作数,且如果是这样,那么所述方法返回到步骤205。否则,所述方法继续执行所述指令以使用提供到执行单元的并行和/或传播值产生结果。请注意,所述指令可能表示单个运算,例如载入或计算,或者所述指令可能表示运算的组合,例如多个载入和/或计算。
所属领域的技术人员将了解,任何经配置以执行图1B或图2的方法步骤或其均等物的***均在本发明的范围内。通过以在矩阵乘法的给定步骤中,T个执行线程群组或通道对其各自乘法-加法运算共享两个源操作数中的一个的方式执行两个矩阵的乘法,可减小存储器带宽要求。通过在并行处理装置(例如,多线程处理器或SIMD向量处理器)内包括操作数传播机制来利用此方法。
传播机制允许将一个存储位置的内容传播到线程群组中的所有T个线程(或SIMD向量处理器中的所有T个通道),在该处所述值可用作源操作数以执行包括用于执行矩阵运算的一个或多个指令的指令。软件可通过规定传播存储器区域和包括一个或一个以上传播操作数的程序指令来控制此传播传递。当使用传播机制时,可减小执行例如乘法-加法的运算所需的存储器带宽要求,藉此当存储器带宽受限时改进性能。
虽然上述内容针对本发明的实施例,但在不脱离本发明基本范围的情况下可设计本发明的其它和另外的实施例,且本发明的范围由随附的权利要求书决定。因此上述描述和图式被视为说明性的而不是限制性的意义。方法项中步骤的列出不意味着以任何特定次序执行所述步骤,除非权利要求中已明确规定。
所有商标都是其拥有者的个人财产。
Claims (10)
1.一种执行包括用于多个线程或通道的传播操作数的一组运算的方法,其包含:
获得由所述组运算包括的所述传播操作数规定的第一值;
将所述第一值提供到多个程序指令执行单元;
获得由所述组运算包括的并行操作数规定的一组第二值,其中所述第二值中的每一者均对应于所述多个线程或通道中的一者;
将所述组第二值中的一个第二值提供到所述多个程序指令执行单元中的每一者;和
针对所述多个线程或通道中的每一者执行所述组运算,
其中所述传播操作数规定针对所述多个线程中的每一者均具有单个值的地址,
且所述并行操作数规定针对所述多个线程中的每一者均具有不同值的地址。
2.根据权利要求1所述的方法,其进一步包含基于针对所述组运算规定的格式来判定所述组运算中包括的存储器操作数是传播操作数。
3.根据权利要求1所述的方法,其进一步包含基于针对存储器操作数规定的地址来判定所述组运算中包括的所述存储器操作数是传播操作数。
4.根据权利要求1所述的方法,其进一步包含基于针对源操作数规定的寄存器来判定所述组运算中包括的所述源操作数是传播操作数。
5.根据权利要求1所述的方法,其中以定点数据格式表示所述第一值和所述第二值。
6.根据权利要求1所述的方法,其中以浮点数据格式表示所述第一值和所述第二值。
7.根据权利要求1所述的方法,其中所述组运算包括乘法-加法运算。
8.根据权利要求1所述的方法,其中将所述组运算表示为包括所述传播操作数、所述并行操作数和用于基于所述传播操作数产生结果的计算的单个程序指令。
9.根据权利要求1所述的方法,其中将所述组运算表示为包括所述传播操作数和所述并行操作数的第一载入程序指令及规定用于基于所述传播操作数产生结果的计算的第二程序指令。
10.根据权利要求1所述的方法,其中将所述组运算表示为包括所述传播操作数的第一载入程序指令、包括所述并行操作数的第二载入程序指令,和规定用于基于所述传播操作数产生结果的计算的第三程序指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/430,324 | 2006-05-08 | ||
US11/430,324 US20070271325A1 (en) | 2006-05-08 | 2006-05-08 | Matrix multiply with reduced bandwidth requirements |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101075185A CN101075185A (zh) | 2007-11-21 |
CN100495326C true CN100495326C (zh) | 2009-06-03 |
Family
ID=38713207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100974564A Expired - Fee Related CN100495326C (zh) | 2006-05-08 | 2007-04-29 | 具有减小的带宽要求的矩阵乘法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20070271325A1 (zh) |
JP (1) | JP2007317179A (zh) |
KR (1) | KR100909510B1 (zh) |
CN (1) | CN100495326C (zh) |
TW (1) | TWI349226B (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7912889B1 (en) | 2006-06-16 | 2011-03-22 | Nvidia Corporation | Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication |
US7836118B1 (en) * | 2006-06-16 | 2010-11-16 | Nvidia Corporation | Hardware/software-based mapping of CTAs to matrix tiles for efficient matrix multiplication |
US7792895B1 (en) * | 2006-06-16 | 2010-09-07 | Nvidia Corporation | Efficient matrix multiplication on a parallel processing device |
US8533251B2 (en) * | 2008-05-23 | 2013-09-10 | International Business Machines Corporation | Optimized corner turns for local storage and bandwidth reduction |
US8626815B1 (en) * | 2008-07-14 | 2014-01-07 | Altera Corporation | Configuring a programmable integrated circuit device to perform matrix multiplication |
US8577950B2 (en) * | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US8650240B2 (en) * | 2009-08-17 | 2014-02-11 | International Business Machines Corporation | Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US9600281B2 (en) | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
JP6972547B2 (ja) * | 2016-12-27 | 2021-11-24 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN116755778A (zh) | 2016-12-31 | 2023-09-15 | 英特尔公司 | 用于异构计算的***、方法和装置 |
WO2018154268A1 (en) | 2017-02-23 | 2018-08-30 | Arm Limited | Multiply-accumulation in a data processing apparatus |
WO2018174928A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and apparatuses for zeroing a matrix |
DE102018110607A1 (de) | 2017-05-08 | 2018-11-08 | Nvidia Corporation | Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen |
US10338919B2 (en) | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
JP6898554B2 (ja) * | 2017-06-06 | 2021-07-07 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
US10521225B2 (en) * | 2017-06-29 | 2019-12-31 | Oracle International Corporation | Matrix multiplication at memory bandwidth |
WO2019009870A1 (en) | 2017-07-01 | 2019-01-10 | Intel Corporation | SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE |
JP6958027B2 (ja) * | 2017-07-03 | 2021-11-02 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US20190079903A1 (en) * | 2017-09-14 | 2019-03-14 | Qualcomm Incorporated | Providing matrix multiplication using vector registers in processor-based devices |
CN109871236A (zh) * | 2017-12-01 | 2019-06-11 | 超威半导体公司 | 具有低功率并行矩阵乘法流水线的流处理器 |
EP3714406A4 (en) * | 2018-03-07 | 2021-02-17 | Samsung Electronics Co., Ltd. | ELECTRONIC DEVICE AND ITS CONTROL PROCESS |
KR102142943B1 (ko) | 2018-06-25 | 2020-08-10 | 국민대학교산학협력단 | 클라우드 기반의 인공지능 연산 서비스 방법 및 이를 수행하는 장치 |
KR102158051B1 (ko) | 2018-06-27 | 2020-09-21 | 국민대학교산학협력단 | 컴퓨터 수행 가능한 클라우드 기반의 인공지능 연산 서비스 방법 |
KR102063791B1 (ko) | 2018-07-05 | 2020-01-08 | 국민대학교산학협력단 | 클라우드 기반의 인공지능 연산 서비스 방법 및 장치 |
US10776110B2 (en) * | 2018-09-29 | 2020-09-15 | Intel Corporation | Apparatus and method for adaptable and efficient lane-wise tensor processing |
CN109886398A (zh) * | 2019-01-03 | 2019-06-14 | 曾集伟 | 神经网络矩阵乘法运算方法及相关产品 |
KR102327234B1 (ko) | 2019-10-02 | 2021-11-15 | 고려대학교 산학협력단 | 행렬 연산시 메모리 데이터 변환 방법 및 컴퓨터 |
US11714875B2 (en) * | 2019-12-28 | 2023-08-01 | Intel Corporation | Apparatuses, methods, and systems for instructions of a matrix operations accelerator |
US11829439B2 (en) * | 2019-12-30 | 2023-11-28 | Qualcomm Incorporated | Methods and apparatus to perform matrix multiplication in a streaming processor |
JP7164267B2 (ja) * | 2020-12-07 | 2022-11-01 | インテル・コーポレーション | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 |
KR102452206B1 (ko) | 2020-12-31 | 2022-10-07 | 국민대학교산학협력단 | 빅데이터 분석을 위한 인공지능 기반의 클라우드 최적화 장치 및 방법 |
KR102434949B1 (ko) | 2021-01-13 | 2022-08-26 | 건국대학교 산학협력단 | 무인이동체를 위한 인공지능 기반의 경로 재계획 방법 및 장치 |
US12032829B2 (en) | 2021-07-21 | 2024-07-09 | Samsung Electronics Co., Ltd. | Memory device performing in-memory operation and method thereof |
CN114090956B (zh) * | 2021-11-18 | 2024-05-10 | 深圳市比昂芯科技有限公司 | 一种矩阵数据处理方法、装置、设备及存储介质 |
CN114579929B (zh) * | 2022-03-14 | 2023-08-08 | 海飞科(南京)信息技术有限公司 | 加速器执行的方法和电子设备 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226171A (en) * | 1984-12-03 | 1993-07-06 | Cray Research, Inc. | Parallel vector processing system for individual and broadcast distribution of operands and control information |
JPH01204177A (ja) * | 1988-02-08 | 1989-08-16 | Nec Corp | 行列演算回路 |
JPH05242053A (ja) * | 1992-03-03 | 1993-09-21 | Mitsubishi Electric Corp | 並列データ処理装置 |
JP2572522B2 (ja) * | 1992-05-12 | 1997-01-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピューティング装置 |
GB9509983D0 (en) * | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Replication of data |
JP2001256218A (ja) * | 2001-02-05 | 2001-09-21 | Sony Corp | 行列データ乗算装置 |
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US7054895B2 (en) * | 2001-06-21 | 2006-05-30 | Ligos Corporation | System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction |
US7177891B2 (en) * | 2002-10-09 | 2007-02-13 | Analog Devices, Inc. | Compact Galois field multiplier engine |
GB2409063B (en) * | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
JP4477959B2 (ja) * | 2004-07-26 | 2010-06-09 | 独立行政法人理化学研究所 | ブロードキャスト型並列処理のための演算処理装置 |
US7631171B2 (en) * | 2005-12-19 | 2009-12-08 | Sun Microsystems, Inc. | Method and apparatus for supporting vector operations on a multi-threaded microprocessor |
US7792895B1 (en) * | 2006-06-16 | 2010-09-07 | Nvidia Corporation | Efficient matrix multiplication on a parallel processing device |
-
2006
- 2006-05-08 US US11/430,324 patent/US20070271325A1/en not_active Abandoned
-
2007
- 2007-04-26 TW TW096114806A patent/TWI349226B/zh active
- 2007-04-29 CN CNB2007100974564A patent/CN100495326C/zh not_active Expired - Fee Related
- 2007-05-08 KR KR1020070044693A patent/KR100909510B1/ko active IP Right Grant
- 2007-05-08 JP JP2007123710A patent/JP2007317179A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20070108827A (ko) | 2007-11-13 |
JP2007317179A (ja) | 2007-12-06 |
CN101075185A (zh) | 2007-11-21 |
US20070271325A1 (en) | 2007-11-22 |
TWI349226B (en) | 2011-09-21 |
KR100909510B1 (ko) | 2009-07-27 |
TW200821915A (en) | 2008-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100495326C (zh) | 具有减小的带宽要求的矩阵乘法 | |
CN109543832B (zh) | 一种计算装置及板卡 | |
EP3276486A1 (en) | Processor and method for outer product accumulate operations | |
US4910669A (en) | Binary tree multiprocessor | |
CN105426344A (zh) | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 | |
CN102360344A (zh) | 矩阵处理器及其指令集和嵌入式*** | |
EP1658559A2 (en) | Instruction controlled data processing device | |
CN111045728B (zh) | 一种计算装置及相关产品 | |
WO2019088072A1 (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
CN110059809B (zh) | 一种计算装置及相关产品 | |
CN111930681A (zh) | 一种计算装置及相关产品 | |
CN111522776B (zh) | 一种计算架构 | |
JP2021108104A (ja) | 部分的読み取り/書き込みが可能な再構成可能なシストリックアレイのシステム及び方法 | |
CN110008436B (zh) | 基于数据流架构的快速傅里叶变换方法、***和存储介质 | |
CN115713104A (zh) | 用于神经网络的数据处理电路、神经网络电路和处理器 | |
Li et al. | HOM4PS-2.0 para: Parallelization of HOM4PS-2.0 for solving polynomial systems | |
CN113591031A (zh) | 低功耗矩阵运算方法及装置 | |
Ivutin et al. | Design efficient schemes of applied algorithms parallelization based on semantic Petri-Markov net | |
Nawab et al. | Bounds on the minimum number of data transfers in WFTA and FFT programs | |
CN111047021A (zh) | 一种计算装置及相关产品 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、***以及图像处理方法 | |
US11640302B2 (en) | SMID processing unit performing concurrent load/store and ALU operations | |
CN113890508A (zh) | 一种批处理fir算法的硬件实现方法和硬件*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090603 |
|
CF01 | Termination of patent right due to non-payment of annual fee |