针对矩阵-矩阵乘法分配处理线程制造技术

技术编号:33300754 阅读:10 留言:0更新日期:2022-05-06 12:07
公开了针对矩阵

【技术实现步骤摘要】
针对矩阵

矩阵乘法分配处理线程
技术背景
[0001]给定的计算机系统可以包含专门的数学库,该库提供程序以支持各种工程、数据挖掘、数字处理、数据分析和机器学习应用中的算术运算。一个这样的程序可以实现广义矩阵

矩阵乘法(GEMM)算法的一个版本,用于执行矩阵

矩阵乘法。对于一些应用,矩阵

矩阵乘法所涉及的矩阵可能相对较大(例如,给定的矩阵可能具有数万或数十万的行和列,或者更多),导致每个矩阵

矩阵乘法的相对大量的浮点乘法运算。
附图说明
[0002]图1是根据示例实施方式的计算机系统的示意图。
[0003]图2是描绘由根据示例实施方式的图1的计算机系统的线程分解引擎和争用缓解引擎使用的进程的流程图。
[0004]图3是根据示例实施方式的广义矩阵

矩阵乘法(GEMM)算法的嵌套处理循环的图示。
[0005]图4是根据示例实施方式的由K组处理线程进行的矩阵

矩阵乘法处理的图示。
[0006]图5A和5B示出了根据示例实施方式的执行自适应K维度线程化的进程的流程图。
[0007]图6是描绘根据示例实施方式的确定用于处理线程子循环的子块大小的进程的流程图。
[0008]图7是描绘根据示例实施方式的确定是否推荐使用本地临时缓冲器以缓解处理线程争用的进程的流程图。
[0009]图8是根据示例实施方式的存储机器可执行指令的非瞬时性存储介质的图示,机器可执行指令当由机器执行时使得机器提供表示分解的数据,以用于处理线程分配。
[0010]图9是根据示例实施方式的装置的示意图,该装置包括处理器,该处理器提供表示用于通过乘法算法进行线程化的块大小的数据。
[0011]图10是描绘根据示例实施方式的使矩阵相乘的进程的流程图。
具体实施方式
[0012]可以在具有一个或多个多核中央处理单元(CPU)半导体封装(或“芯片”)的计算机系统中执行两个矩阵的乘法(在本文中称为“矩阵

矩阵乘法”或“矩阵乘法”)。CPU半导体封装可以包含多个可访问本地片上存储器的CPU处理内核。此外,CPU半导体封装可以采用非统一内存访问(NUMA)架构。一般来说,NUMA架构认识到处理节点对本地存储器的访问时间比对非本地存储器的访问时间快。因此,在NUMA架构中,处理核可以根据NUMA域进行分组,诸如每个NUMA域的处理核使用本地存储器访问来执行它们的大部分计算。NUMA域可以具有一个或多个缓存级,使得通过将最近访问的数据存储在更快的缓存存储器中,使得能够更加有效地访问本地片上存储器。
[0013]对于矩阵

矩阵计算,计算机系统可以采用广义矩阵

矩阵乘法(GEMM)算法,该算法依赖于(在对应NUMA节点和套接字上的)不同的处理线程,以用于执行乘法的不同部分。
矩阵

矩阵乘法可涉及使相当大的矩阵相乘,该矩阵包含数万、或者数十万(或者更多)的行和列。
[0014]为了适应这种计算量大的运算,可以使用称为“线程化”的进程以在计算机系统的处理线程之间分配矩阵

矩阵乘法处理工作量的不同部分。在此情况下,“处理线程”(或“线程”)指的是被分配给计算机系统的处理核的机器可执行指令的单元。可以通过被分配给处理线程的处理核并行(即,同时)执行处理线程。
[0015]在本公开的背景下,“线程化”指的是将矩阵

矩阵乘法的处理工作量分配给计算机系统的不同处理线程。线程化可以例如,对矩阵

矩阵乘法中涉及的输入矩阵进行分区,并将所得的分区分配给相应处理线程。
[0016]一种类型的线程化是“M/N”线程化,其中沿着M维度和N维度执行矩阵分区,以形成对应M
×
N子矩阵或块,这些子矩阵或块被分配给不同的处理线程。在本文中,“M维度”指的是矩阵

矩阵乘法的输入矩阵A的行维度,“N维度”指的是矩阵

矩阵乘法的输入矩阵B的列维度,矩阵

矩阵乘法的定义如下:A
×
B=C,其中“C”表示输出矩阵,或者矩阵

矩阵乘法的结果。因此,输出矩阵C的维度为M
×
N,或M行乘N列。输入矩阵A和输入矩阵B共用公共维度,该公共维度在本文中称为“K维度”。更具体地,K维度是输入矩阵A的列维度和输入矩阵B的行维度。
[0017]使用M/N线程化的挑战是对应于子矩阵的结果数据单元可能太小而不能有效利用缓存(例如,CPU的最后一级缓存(LLC)的缓存线边界)。因此,由于缓存未充分利用,可能没有足够的缓存数据以摊销从主系统存储器移动数据的成本,导致矩阵

矩阵乘法的处理较慢。
[0018]根据本文所描的示例实施方式,在K维度,即输入矩阵共用的维度上执行线程化。更具体地,根据示例实施方式,具有自适应K维度分块引擎的线程分解(在本文称为“线程分解引擎”)向GEMM算法提供处理线程分配。相应子矩阵或子块按大小排列以提高缓存存储器利用率,并且一般地,减少矩阵

矩阵乘法的处理时间。根据示例实施方式,线程分解引擎基于二维矩阵分区将处理线程分配给子矩阵或块,其中一个维度是K维度,另一个维度或者是M维度或者是N维度。
[0019]本文所描的基于K维度的线程化可以是两种形式中的一种:“M/K线程化”,指的是将处理线程分配给通过沿着M维度和K维度分区而得到的各自矩阵块的线程化;以及“N/K线程化”,指的是将处理线程分配给沿着N维度和K维度进行矩阵分区而得到的矩阵块的线程化。M/K或N/K处理线程分配导致更接近或对应于最优缓存块大小的块大小,即,与M/N线程化相比,在执行矩阵

矩阵乘法时导致更多缓存命中和更好利用缓存存储器的块大小。此外,根据示例实施方式,线程分解引擎以考虑最优缓存块大小的自适应方式沿着K维度执行分区。
[0020]还如本文所述,根据示例实施方式,争用缓解引擎向GEMM算法提供进一步的信息,这在处理矩阵

矩阵乘法时减少(或者消除)了处理线程之间的存储器争用。更具体地,根据示例实施方式,争用缓解引擎进一步沿着M维度和/或N维度进行细分或分区,以创建输出矩阵C的每个M
×
N块的子块。每个处理线程可以在相应子块上“子循环”。作为子块和子循环的结果,可以减少“K组”处理线程之间的存储器资源争用。在此情况下,“K组”处理线程指的是对输出矩阵C的给定的M
×
N块做出贡献的所有处理线程。
[0021]此外,根据示例实施方式,作为减少存储器资源争用的进一步措施,争用缓解引擎建议K组处理线程是否应各自使用本地临时缓冲器(即,“暂存器”缓冲器)以确定输出矩阵C的相应M
×
N块的结果。如果K组处理线程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种存储机器可读指令的非瞬时性存储介质,所述指令当由机器执行时,使得所述机器:访问表示第一矩阵的第一维度、第二矩阵的第二维度以及由所述第一矩阵和所述第二矩阵共用的第三维度的数据,确定所述第一矩阵的多个候选分解,其中所述候选分解沿着所述第一维度和所述第三维度相对彼此大小不同;确定所述多个候选分解中的每个候选分解的相关联的适应度值;基于所述适应度值,选择所述多个候选分解中的候选分解,以提供经选择的候选分解;以及提供表示所述经选择的候选分解的数据,以使得将处理线程分配给所述第一矩阵的子矩阵,其中所述处理线程基于所述第一矩阵和所述第二矩阵的乘法来确定第三矩阵。2.根据权利要求1所述的存储介质,其中,所述指令当由所述机器执行时,还使得所述机器确定所述多个候选分解的块大小,使得所述多个候选分解中的每个候选分解根据所述块大小沿着第三维度被分解。3.根据权利要求2所述的存储介质,其中,所述指令当由所述机器执行时,还使得所述机器基于在所述第三矩阵的确定中由所述处理线程使用的缓存存储器的特征来确定所述块大小。4.根据权利要求1所述的存储介质,其中,所述指令当由所述机器执行时,还使得所述机器:对于所述适应度值中的每个适应度值:确定所述相关联的候选分解的多个条件;以及基于所述多个条件确定所述每个适应度值。5.根据权利要求4所述的存储介质,其中,所述指令当由所述机器执行时,还使得所述机器:对于所述每个适应度值:归一化所述多个条件中的每个条件,以提供多个经归一化的条件值;以及组合所述多个经归一化的条件值以确定所述每个适应度值。6.根据权利要求1所述的存储介质,其中,所述指令当由所述机器执行时,还使得所述机器:对所述适应度值排序,以提供所述多个候选分解的相应排序;以及基于所述排序选择所述经选择的候选分解。7.根据权利要求6所述的存储介质,其中,所述指令当由所述机器执行时,还使得所述机器:基于所述排序,选择第一候选分解;确定所述第一候选分解不满足选择标准;基于所述排序,选择除所述第一候选分解之外的第二候选分解;确定所述第二候选分解满足所述选择标准;以及确定所述第二候选分解为所述经选择的候选分解。8.根据权利要求1所述的存储介质,其中,所述经选择的候选分解对应于被细分为多个
子矩阵的所述第三矩阵,其中所述多个子矩阵中的每个子矩阵与所述多个进程的一组进程相关联,并且所述指令当由所述机器执行时,还使得所述机器:确定多个候选子矩阵分解,其中所述候选子矩阵分解沿着所述第一维度和所述第二维度相对彼此大小不同;确定所述多个候选子矩阵分解中的每个候选子矩阵分解的相关联的第二适应度值;基于所述第二适应度值,选择所述多个候选子矩阵分解中的候选子矩阵分解,以提供经选择的候选子矩阵分解;以及提供表示所述经选择的候选子矩阵分解的数据,以使得所述处理线程的每个处理线程基于所述经选择的子矩阵分解进行子循环。9.根据权利要求1所述的存储介质,其中,所述经选择的候选分解对应于被细分为多个子矩阵的所述第三矩阵,其中所述多个子矩阵中的每个子矩阵与所述多个进程的一组进程相关联,并且所述指令当由所述机器执行时,还使得所述机器:确定所述多个子矩阵的子矩阵分解;以及提供表示所述子矩阵分解的数据,以使得所述处理线程的每个处理线程基于所述子矩阵分解进行子循环。10.根据权利要求1所述的存储介质,其中,所述指令当由所述机器执行时,还使得所述机器基于所述经选择的候选分解的至少一个特征以确定是否建议使用缓冲器来存储所述乘法的初步结果,其中,例程使用来自存储在所述缓冲器中的内容的添加更新来更新所述第三矩阵。11.根据权利要求10所述的存储介质,其中,所述指令当由所述机器执行时,还使得所述机器基于以下中的至少一项确定是否推荐使用所述缓冲器:沿着所述第一维度的所述候选分解的第一块大小与沿着所述第一维度的第一缓存最优块大小的比较,沿着所述第二维度的所述候选分解的第二块大小与沿...

【专利技术属性】
技术研发人员:A
申请(专利权)人:慧与发展有限责任合伙企业
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1