首页> 中国专利> 带有子矩阵定序的矩阵乘法器

带有子矩阵定序的矩阵乘法器

摘要

一种处理器的图形处理单元(GPU)[100]对子矩阵在矩阵乘法器[110]处的应用进行定序,以减少在所述矩阵乘法器的输入寄存器[106、107]处的输入改变的次数。所述矩阵乘法器被配置为对相对小的矩阵执行矩阵乘法。为了将两个较大矩阵[220、222]相乘,所述GPU将所述较大矩阵分解为较小子矩阵[221]并且按序列将所述子矩阵存储在所述矩阵乘法器的输入寄存器处,从而计算结果矩阵的每一列。所述GPU对所述子矩阵在所述输入寄存器处的所述存储进行定序以在所述矩阵乘法器的多个计算周期内维持在所述输入寄存器中的一个处的输入数据,从而降低在所述GPU处的功耗。

著录项

  • 公开/公告号CN113168430A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 超威半导体公司;

    申请/专利号CN201980077886.0

  • 发明设计人 马克西姆·V·卡扎科夫;毛健;

    申请日2019-06-18

  • 分类号G06F17/16(20060101);

  • 代理机构31263 上海胜康律师事务所;

  • 代理人李献忠;张华

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 11:55:48

说明书

背景技术

现代处理器应用通常要求矢量、矩阵和类似结构的相对复杂操纵。例如,矢量和矩阵操纵可用于图形操作、数字信号处理应用、神经网络应用等。为了提高这些应用和操作的处理效率,处理器可包括图形处理单元(GPU)。GPU包括专门的硬件以对相对大的数据块执行并行处理。因此,GPU可支持图形应用以及要求矢量和矩阵操纵的其他应用。为了进一步提高处理效率,GPU可包括专用硬件以执行指定类型的矩阵运算,包括矩阵乘法。然而,这种专用硬件的常规方法可能会消耗大量的功率且因而负面地影响处理器性能。

附图说明

通过参考附图,可更好地理解本公开,并且本公开的许多特征和优点对本领域技术人员来说变得显而易见。在不同的附图中使用相同的附图标记来指示类似或相同的项。

图1是根据一些实施方案的处理器的GPU的框图,该GPU被配置为通过对子矩阵到矩阵乘法器的应用进行定序来执行矩阵乘法。

图2是示出根据一些实施方案的用于在图1的GPU处进行乘法的示例矩阵的图。

图3是示出根据一些实施方案的对子矩阵到图1的矩阵乘法器的应用进行定序的示例的图。

图4是根据一些实施例方案的支持子矩阵定序的图1的GPU的附加方面的框图。

图5是根据一些实施方案的对子矩阵在GPU的矩阵乘法器处的应用进行定序的方法的流程图。

具体实施方式

图1至图5示出了用于通过对子矩阵在矩阵乘法器处的应用进行定序以减少矩阵乘法器的输入寄存器处的输入改变的次数来降低处理器的图形处理单元(GPU)处的功耗的技术。矩阵乘法器被配置为对相对小的矩阵(例如,4×4矩阵)执行矩阵乘法。为了将两个较大矩阵(例如,16×16矩阵)相乘,GPU将较大矩阵分解为较小子矩阵并且按序列将子矩阵存储在矩阵乘法器的输入寄存器处,从而计算结果矩阵的每一列。GPU对子矩阵在输入寄存器处的存储进行定序以在矩阵乘法器的多个计算周期内维持在输入寄存器中的一个处的输入数据,从而降低GPU处的功耗。

图1是根据一些实施方案的处理器的GPU 100,该GPU被配置为通过对子矩阵的应用进行定序来执行矩阵乘法。在至少一个实施方案中,GPU 100是通常被配置为执行指令集以便代表电子装置来实施操作的处理器的部分。因此,在不同的实施方案中,GPU 100是诸如台式或膝上型计算机、服务器、手持式电子装置(诸如智能电话或平板电脑)、游戏控制台等的电子装置的部分。GPU 100通常被配置为代表处理器来执行图形和矢量处理操作。例如,在一些实施方案中,处理器的中央处理单元(CPU,图1处未示出)向GPU提供操作集以供执行,其中操作集与图形或矢量处理相关联。

为了促进所提供的操作的执行,GPU 100包括多个单指令多数据(SIMD)处理单元(例如,SIMD单元102和104)。应了解,GPU 100还包括附加模块以支持SIMD单元,诸如用于获取和解码SIMD单元的指令的获取和解码逻辑、用于存储SIMD单元的操作数的寄存器文件等。为了支持一组输入矩阵105的矩阵乘法运算,每个SIMD单元包括矩阵乘法器以及对应的输入寄存器和对应的输出寄存器。例如,SIMD单元102包括矩阵乘法器110、输入寄存器106和107,以及输出寄存器108。应了解,术语“寄存器”是指被配置为存储矩阵(包括子矩阵)的任何存储模块。

矩阵乘法器110被配置为将存储在寄存器106和107处的矩阵相乘并且将得到的乘积存储在寄存器108处。针对输入寄存器106和102处的矩阵生成单个乘积在本文中被称为矩阵乘法器110的“乘法周期”。在一些实施方案中,SIMD单元102通过时钟信号(表示为“CLK”)进行记时,并且矩阵乘法器110的乘法周期对应于CLK时钟信号的单个时钟周期。也就是说,在CLK时钟信号的单个时钟周期内,矩阵乘法器110被配置为基于存储在输入寄存器106和107处的输入操作数而在寄存器108处生成乘积。在其他实施方案中,矩阵乘法器110的每个乘法周期需要CLK时钟信号的多个周期。

在一些实施方案中,为了节省电路面积,矩阵乘法器110被配置为生成相对小的输入矩阵的乘积。例如,在一些实施方案中,矩阵乘法器110是4×4×4乘法器,使得矩阵乘法器110被配置为将存储在输入寄存器106处的4×4矩阵与存储在输入寄存器107处的4×4矩阵相乘,以在输出寄存器108处生成4×4乘积(结果)矩阵。然而,在一些实施方案中,CPU向GPU 100提供需要较大矩阵的乘法(诸如16×16矩阵的乘法)的操作。为了支持较大矩阵的乘法,SIMD被配置为将较大矩阵分解为多个较小子矩阵、在矩阵乘法器110处将子矩阵相乘以生成一组中间结构,并且将中间结果组合以生成较大矩阵的乘积。

为了说明,在一些实施方案中,矩阵乘法器110将输入矩阵(表示为矩阵A(M×K矩阵)和矩阵B(K×N矩阵))相乘,以计算出结果矩阵(R(M×N)矩阵)。矩阵A和B分别存储在输入寄存器106和107处,并且结果矩阵R存储在输出寄存器108处。在一些实施方案中,矩阵乘法器110通过计算第i行和第j列的内积(点积)来计算结果矩阵R,如由以下等式阐述:

对于[0..M-1]中的i和[0..N-1]中的j,R

在其他实施方案中,矩阵乘法器110通过对A矩阵的列k和B矩阵的行k的K个外积进行求和来计算结果矩阵R,如由以下等式阐述:

R=Sum R

对于较大矩阵,SIMD 102将输入矩阵分解为供矩阵乘法器110的指定输入大小的较小子矩阵、在矩阵乘法器110处将子矩阵相乘以生成一组中间结果,并且将中间结果组合以确定最终的结果矩阵R。因此,对于其中矩阵乘法器计算内积的实施方案,SIMD 102将输入矩阵分解为较小子矩阵、基于子矩阵的不同组的点积而确定不同组的乘积,然后计算得到的点积的外积以确定最终的结果矩阵。

应了解,如本文进一步描述,计算不同的中间结果(不同的子矩阵乘积)需要改变存储在输入寄存器106和107处的子矩阵。然而,存储在输入寄存器处的数据的每次改变都消耗GPU 102处的功率。另外,相对于将输入数据维持在不变状态而言,矩阵乘法器110的对应算术逻辑单元(ALU)或其他模块的输入处的数据的每次改变都消耗附加的功率。因此,为了节省功率,SIMD 102对子矩阵在输入寄存器106和107处的存储进行定序,使得子矩阵在多个连续的乘法周期内维持在输入寄存器中的一个(例如,寄存器107)处,直到结果矩阵R的计算不再需要该子矩阵为止。也就是说,SIMD 102对输入子矩阵在输入寄存器106和107处的应用进行定序,以减少在寄存器中的一个处以及因此在矩阵乘法器110的输入中的一个处切换的输入量,从而节省功率。

对GPU 100处的输入子矩阵进行定序的示例关于图2和图3进行描述。图2示出了分别表示为矩阵A和矩阵B的两个16×16矩阵220和222的示例。矩阵A和B中的每一个包括16个4×4子矩阵(例如,矩阵A的子矩阵221)。矩阵A和B在GPU 102处相乘以生成结果矩阵224(表示为矩阵R),该结果矩阵也包括多个4×4子矩阵。矩阵R可被认为是子矩阵的一组列。例如,R的第一列由子矩阵R

为了计算R的子矩阵的列,对应的SIMD采用其矩阵乘法器来确定矩阵A和B的对应子矩阵的一组内积(点积),然后在内积结果上对外积进行连结。例如,为了生成子矩阵R

R

R

R

R

其中“+=”表示将对应的乘积加到R

R

R

R

R

SIMD 102执行模拟计算以生成子矩阵R

为了执行用于计算对应的子矩阵的每个乘法,SIMD 102将矩阵A和矩阵B的对应子矩阵分别加载到输入寄存器106和107中,并且矩阵乘法器110执行乘法,从而将结果存储在输出寄存器108处。然而,如可从以上示例看出,重复使用矩阵B的子矩阵来计算矩阵R的不同子矩阵。因此,SIMD 102被配置为对乘法进行定序,使得如存储在输入寄存器107处的矩阵B的子矩阵在矩阵乘法器110的多个连续乘法周期内保持不变。由此,SIMD 102减少加载到输入寄存器107的次数和矩阵乘法器110的输入的改变,因此降低功耗。

根据一些实施方案,输入定序的一部分的示例在图3处示出。图3示出了一组连续的乘法周期301至305以及输入寄存器106和107中的每一个的对应内容。因此,在所描绘的示例中,在乘法周期301内,SIMD 102将子矩阵A

在接下来的乘法周期303内,SIMD 102将子矩阵A

SIMD 102继续在矩阵乘法器110处执行乘法运算并且将得到的乘积组合以计算结果矩阵R的第一列。乘法(包括被加载和维持在输入寄存器106和107处的对应输入矩阵)的序列如下:

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

GPU 102执行类似的计算以计算结果矩阵R的其他列。在一些实施方案中,GPU 102采用不同的SIMD以同时地计算结果矩阵R的对应列,并且采用SIMD中的一个或其他模块来将不同的列连结成最终的结果矩阵R。

图4示出了根据一些实施方案的用于支持对矩阵乘法器110的输入子矩阵进行定序的图1的SIMD 102的附加方面。在所描绘的示例中,SIMD 102包括连接到定序器430的数据存储435。数据存储435是被配置为存储用于矩阵乘法器110的子矩阵(例如,子矩阵433)的缓冲器、高速缓存、寄存器文件或其他存储器结构。定序器430是被配置为将输入矩阵105(矩阵A和矩阵B)分解为对应的子矩阵并将子矩阵存储在数据存储435处的硬件模块。定序器430还被配置为在对应的乘法周期内从数据存储435检索一个或多个子矩阵并将每个检索到的子矩阵加载到对应的输入寄存器106和107。因此,定序器430控制输入子矩阵在矩阵乘法器110处的定序,以对相对大的矩阵实施矩阵乘法。

图5是根据一些实施方案的对子矩阵在GPU的矩阵乘法器处的应用进行定序的方法500的流程图。出于描述的目的,关于图1的GPU 100处的示例实现方式来描述方法500。在框502处,定序器430将初始子矩阵(例如,子矩阵A

返回到框506,如果输入寄存器106处的输入子矩阵对应于矩阵A的最后一行,则该方法流程移动到框510并且定序器430确定存储在输入寄存器510处的输入子矩阵是否对应于矩阵B的最后一行。如果否的话,则该方法流程移动到框512并且定序器430向输入寄存器107加载与正在计算的R的列相对应的B的子矩阵。另外,定序器430向输入寄存器106加载与初始行(例如,行0)和下一列相对应的A的子矩阵。该方法流程返回到框504并且矩阵乘法器110执行下一乘法运算。

返回到框510,如果存储在输入寄存器510处的输入子矩阵对应于矩阵B的最后一行,则完成结果矩阵R的对应列的计算。因此,该方法流程移动到框514并且SIMD 102存储R的列的最终结果。在框516处,GPU 100将所计算的列中的每一个组合以生成结果矩阵R。在一些实施方案中,GPU 102将结果矩阵R提供到CPU以供进一步处理。在其他实施方案中,GPU100采用结果矩阵R以例如生成显示帧中的一个或多个对象,并且将显示帧提供到帧缓冲器以在显示装置处显示。

如本文所公开,在一些实施方案中,一种方法包括:在图形处理单元(GPU)的矩阵乘法器的第一乘法周期内,将第一矩阵和第二矩阵相乘:将存储在第一输入寄存器处的所述第一矩阵的第一子矩阵与存储在第二输入寄存器处的所述第二矩阵的第一子矩阵相乘;在所述矩阵乘法器的第二乘法周期内,所述第二乘法周期接在所述第一乘法周期之后:将存储在所述第一输入寄存器处的所述第一矩阵的所述第一子矩阵与存储在第二输入寄存器处的所述第二矩阵的第二子矩阵相乘;以及在所述第一乘法周期和所述第二乘法周期内维持在所述第一输入寄存器处的所述第一子矩阵。在一方面,所述方法包括:在所述矩阵乘法器的第三乘法周期内,所述第三乘法周期接在所述第二乘法周期之后:将存储在所述第一输入寄存器处的所述第一矩阵的所述第一子矩阵与存储在第二输入寄存器处的所述第二矩阵的第二子矩阵相乘;以及在所述第一乘法周期、所述第二乘法周期和所述第三乘法周期内维持在所述第一输入寄存器处的所述第一子矩阵。在另一个方面,所述第一子矩阵包括至少一个非零元素。

在一方面,所述方法包括基于所述第一乘法周期和所述第二乘法周期的结果来确定所述第一矩阵和所述第二矩阵的乘积,所述乘积包括结果矩阵。在另一个方面,确定所述乘积包括:基于所述第一乘法周期和所述第二乘法周期的结果来确定所述结果矩阵的子矩阵。在又一个方面,所述结果矩阵的所述子矩阵包括所述结果矩阵的列和行中的一者。在再一个方面,确定所述乘积包括:基于所述第一乘法周期和所述第二乘法周期的结果来确定外积。在又一个方面,所述方法包括:在所述矩阵乘法器的第三乘法周期内,所述第三乘法周期接在所述第一乘法周期之后:将存储在所述第一输入寄存器处的所述第一矩阵的第二子矩阵与存储在所述第二输入寄存器处的所述第二矩阵的第二子矩阵相乘;以及在所述第三乘法周期内将所述第一矩阵的所述第一子矩阵改变为所述第一矩阵的所述第二子矩阵。

如本文所公开,在一些实施方案中,一种方法包括:在图形处理单元(GPU)的矩阵乘法器处将第一矩阵的子矩阵与第二矩阵的子矩阵相乘,其中所述相乘包括:在第一多个乘法周期内,将第一子矩阵维持在所述矩阵乘法器的第一输入寄存器处。在一方面,所述相乘还包括:在所述第一多个乘法周期内,改变在所述矩阵乘法器的第二输入寄存器处的子矩阵。在另一个方面,所述相乘还包括:在第二多个乘法周期内,将第二子矩阵维持在所述矩阵乘法器的所述第二输入寄存器处。在又一个方面,所述第一子矩阵的至少一个元素是非零元素。

如本文所公开,在一些实施方案中,一种图形处理单元(GPU)包括:第一输入寄存器;第二输入寄存器;矩阵乘法器,所述矩阵乘法器用于将存储在所述第一输入寄存器处的子矩阵与存储在所述第二输入寄存器处的子矩阵相乘;以及定序器,所述定序器用于控制存储在所述第一输入寄存器和所述第二输入寄存器处的子矩阵,所述定序器被配置为:在所述矩阵乘法器的第一乘法周期内,存储在所述第一输入寄存器处的第一矩阵的第一子矩阵和存储在所述第二输入寄存器处的第二矩阵的第一子矩阵;在所述矩阵乘法器的第二乘法周期内,将所述第一矩阵的所述第一子矩阵维持在所述第一输入寄存器处并且存储存储在所述第二输入寄存器处的所述第二矩阵的第二子矩阵,所述第二乘法周期接在所述第一乘法周期之后。在一方面,所述定序器被配置为:在所述矩阵乘法器的第三乘法周期内,所述第三乘法周期接在所述第一乘法周期之后:维持存储在所述第一输入寄存器处的所述第一矩阵并且存储存储在所述第二输入寄存器处的所述第二矩阵的第二子矩阵。在另一个方面,所述第一子矩阵包括至少一个非零元素。

在一方面,所述GPU被配置为:基于所述第一乘法周期和所述第二乘法周期的结果来确定所述第一矩阵和所述第二矩阵的乘积,所述乘积包括结果矩阵。在另一个方面,所述GPU被配置为通过以下方式来确定所述乘积:基于所述第一乘法周期和所述第二乘法周期的结果来确定所述结果矩阵的子矩阵。在再一个方面,所述结果矩阵的所述子矩阵包括所述结果矩阵的列和行中的一者。在又一个方面,所述GPU被配置为通过以下方式来确定所述乘积:基于所述第一乘法周期和所述第二乘法周期的结果来确定外积。在另一个方面,所述定序器被配置为:在所述矩阵乘法器的第三乘法周期内,所述第三乘法周期接在所述第一乘法周期之后:在所述第一输入寄存器处存储所述第一矩阵的第二子矩阵和在所述第二输入寄存器处存储所述第二矩阵的第二子矩阵。

计算机可读存储介质可包括在使用期间可由计算机系统访问以将指令和/或数据提供到计算机系统的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器),或者基于微机电系统(MEMS)的存储介质。计算机可读介质可嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器),或者经由有线或无线网络耦合到计算机系统(例如,网络可存取存储(NAS))。

在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实现。所述软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件可包括在由一个或多个处理器执行时操纵一个或多个处理器来执行上文所描述的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质可包括例如磁性或光学磁盘存储装置、固态存储装置(诸如快闪存储器、高速缓存、随机存取存储器(RAM)或一个或多个其他非易失性存储器装置)等。存储在非暂时性计算机可读存储介质上的可执行指令可以源代码、汇编语言代码、对象代码或由一个或多个处理器解译或以其他方式执行的其他指令格式来实现。

应注意,并不要求上文在一般描述中所描述的所有活动或元件,可不要求特定活动或装置的一部分,并且可执行一个或多个其他活动,或者可包括除所描述的那些元件之外的元件。此外,列出活动的顺序不一定是执行活动的顺序。另外,已经参考具体实施方案描述了概念。然而,本领域普通技术人员应了解,在不脱离如所附权利要求书中所阐述的本公开范围的情况下,可作出各种修改和改变。因此,本说明书和附图将被视为说明性而非限制性的,并且所有此类修改都意图被包括在本公开的范围内。

上文已经关于具体实施方案描述了益处、其他优点以及问题解决方案。然而,所述益处、优点、问题解决方案以及可使任何益处、优点或问题解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,上文所公开的特定实施方案仅仅是说明性的,因为所公开的主题可按受益于本文教义的本领域技术人员显而易见的不同但等效的方式来修改和实践。除了如所附权利要求书中所描述的之外,并不意图限制本文所展示的构造或设计的细节。因此,明显的是,上文所公开的特定实施方案可被更改或修改,并且所有此类变化都被认为是在所公开的主题的范围内。因此,本文所寻求的保护正如在所附权利要求书中阐述的那般。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号