矩阵运算方法、装置及单元、电子设备制造方法及图纸

技术编号:37067344 阅读:16 留言:0更新日期:2023-03-29 19:45
本申请实施例提供一种矩阵运算方法、装置及单元、电子设备。其中,矩阵运算方法应用于矩阵运算单元,该方法包括:获取矩阵运算指令,矩阵运算指令包括掩码,掩码用于指示待运算的目标矩阵中的元素的运算参与范围;根据掩码所指示的运算参与范围,对目标矩阵中的元素执行矩阵运算指令对应的运算,获得矩阵运算结果。该方法通过在矩阵运算指令中加入掩码,使得矩阵运算单元在对目标矩阵中的元素执行矩阵运算指令对应的运算时,可以根据掩码所指示的运算参与范围进行有选择的、精细的运算,从而能够提高矩阵运算的效率,并降低矩阵运算单元进行矩阵运算时的功耗。矩阵运算时的功耗。矩阵运算时的功耗。

【技术实现步骤摘要】
矩阵运算方法、装置及单元、电子设备


[0001]本申请涉及计算机
,具体而言,涉及一种矩阵运算方法、装置及单元、电子设备。

技术介绍

[0002]矩阵运算在通用计算、高性能计算、图形学、人工智能等领域扮演着核心的角色,很多复杂的算法最终都能转换为基本的矩阵运算,因此如何高效低功耗进行矩阵运算显得尤为重要。然而,目前的硬件单元在进行矩阵运算时,通常只是严格地按照矩阵运算的数学定义进行计算,而不考虑其中是否存在一些对于实际应用而言无效的计算,导致矩阵运算的效率不高,而且硬件功耗也难以降低。

技术实现思路

[0003]本申请实施例的目的在于提供一种矩阵运算方法、装置及单元、电子设备,以改善上述技术问题。
[0004]为实现上述目的,本申请提供如下技术方案:
[0005]第一方面,本申请实施例提供一种矩阵运算方法,应用于矩阵运算单元,所述矩阵运算单元为硬件单元,所述方法包括:获取矩阵运算指令,所述矩阵运算指令包括掩码,所述掩码用于指示待运算的目标矩阵中的元素的运算参与范围;根据所述掩码所指示的运算参与范围,对所述目标矩阵中的元素执行所述矩阵运算指令对应的运算,获得矩阵运算结果。
[0006]上述方法通过在矩阵运算指令中加入掩码,使得矩阵运算单元在对目标矩阵中的元素执行矩阵运算指令对应的运算时,可以根据掩码所指示的运算参与范围进行有选择的、精细的运算(例如,某些元素需要参与运算,某些元素的运算可以直接跳过等)。从而,有利于排除掉矩阵运算中存在的一些对于实际应用而言无效的计算,因此能够提高矩阵运算的效率,并降低矩阵运算单元进行矩阵运算时的功耗。
[0007]在第一方面的一种实现方式中,所述矩阵运算指令为线程组或线程束级别的指令。
[0008]线程组或线程束级别的指令是指由一批线程共同完成矩阵运算,这些线程共享矩阵数据,难以精确地区分每个线程到底负责目标矩阵中哪块区域的运算,但由于本申请方法中掩码是针对目标矩阵中的元素设置的,而并非是针对线程设置的,所以对于矩阵运算指令为线程组或线程束级别的指令的情况,仍然能够很好地控制矩阵运算的范围。
[0009]在第一方面的一种实现方式中,所述矩阵运算指令为矩阵乘法指令,所述目标矩阵包括待相乘的目标左矩阵和目标右矩阵;所述掩码包括以下至少一种:针对所述目标左矩阵的行设置的第一掩码、针对所述目标右矩阵的列设置的第二掩码、以及针对所述目标左矩阵的列和所述目标右矩阵的行设置的第三掩码。
[0010]对于矩阵乘法而言,一个元素要么位于目标左矩阵中,其位置可以根据目标左矩
阵的行和目标左矩阵的列唯一确定,要么位于目标右矩阵中,其位置可以根据目标右矩阵的行和目标右矩阵的列唯一确定,而目标左矩阵的列和目标右矩阵的行是一一对应的(否则两个矩阵无法相乘),因此至多通过上述三种掩码可以有效描述目标左矩阵和目标右矩阵中的任意一个元素的运算参与范围,从而对矩阵乘法运算进行精细的控制。
[0011]在第一方面的一种实现方式中,所述掩码包括所述第一掩码、所述第二掩码以及所述第三掩码,所述第一掩码用于指示所述目标左矩阵中的每行是否为参与矩阵乘法运算的候选行,所述第二掩码用于指示所述目标右矩阵中的每列是否为参与矩阵乘法运算的候选列,所述第三掩码用于指示所述目标左矩阵中的每列是否为参与矩阵乘法运算的候选列,以及该列在所述目标右矩阵中对应的行是否为参与矩阵乘法运算的候选行;所述根据所述掩码所指示的运算参与范围,对所述目标矩阵中的元素执行所述矩阵运算指令对应的运算,获得矩阵运算结果,包括:对所述目标左矩阵中属于所述第一掩码所指示的候选行、且属于所述第三掩码所指示的候选列中的元素,以及所述目标右矩阵中属于所述第二掩码所指示的候选列、且属于所述第三掩码所指示的候选行中的元素执行矩阵乘法运算,获得所述矩阵运算结果。
[0012]在上述实现中,利用第一掩码和第三掩码之间的逻辑与关系,可以精确筛选出目标左矩阵中需要参与矩阵乘法运算的元素,利用第二掩码和第三掩码之间的逻辑与关系,可以精确筛选出目标右矩阵中需要参与矩阵乘法运算的元素,从而结合第一掩码、第二掩码和第三掩码可以对矩阵乘法运算进行精细的控制,避免其中一些对于实际应用而言无效的运算,因此能够提高矩阵乘法运算的效率,并降低矩阵运算单元进行矩阵乘法运算时的功耗。
[0013]在第一方面的一种实现方式中,原始左矩阵和原始右矩阵为待相乘的两个矩阵,所述目标左矩阵为所述原始左矩阵按照第一目标尺寸的整数倍进行分割后产生的矩阵,所述第一目标尺寸为符合所述矩阵乘法指令的运算要求的左矩阵尺寸,所述目标右矩阵为所述原始右矩阵按照第二目标尺寸的整数倍进行分割后产生的矩阵,所述第二目标尺寸为符合所述矩阵乘法指令的运算要求的右矩阵尺寸,所述第一目标尺寸的列数等于所述第二目标尺寸的行数;所述第一掩码用于指示所述目标左矩阵中的每行是否来源于所述原始左矩阵,若来源于所述原始左矩阵,则该行为参与矩阵乘法运算的候选行,否则不是参与矩阵乘法运算的候选行;所述第二掩码用于指示所述目标右矩阵中的每列是否来源于所述原始右矩阵,若来源于所述原始右矩阵,则该列为参与矩阵乘法运算的候选列,否则不是参与矩阵乘法运算的候选列;所述第三掩码用于指示所述目标左矩阵中的每列是否来源于所述原始左矩阵,以及该列在所述目标右矩阵中对应的行是否来源于所述原始右矩阵,若该列来源于所述原始左矩阵且该列对应的行来源于所述原始右矩阵,则该列为参与矩阵乘法运算的候选列且该列对应的行为参与矩阵乘法运算的候选行,否则该列不是参与矩阵乘法运算的候选列且该列对应的行不是参与矩阵乘法运算的候选行。
[0014]在上述实现方式中,为执行矩阵乘法指令,需要将原始左矩阵按照第一目标尺寸分割为若干个第一目标尺寸的目标左矩阵,由于原始左矩阵的尺寸不一定恰好是第一目标尺寸的整数倍,因为分割后可能会存在部分目标左矩阵中的部分行和/或列(不属于原始左矩阵的和/或列)需要填充数据的情况,但无论填充何种数据,这部分行和/或列中的元素都是无需参与矩阵乘法运算的。通过设置第一掩码和第三掩码,可以将这部分行和/或列中的
元素从矩阵乘法运算中排除,只对目标左矩阵中剩余的元素进行矩阵乘法运算,从而有利于提高矩阵乘法运算的效率,并降低矩阵运算单元进行矩阵乘法运算时的功耗,而且也不会影响矩阵乘法运算的结果。对于目标右矩阵,也可以类似分析。
[0015]在第一方面的一种实现方式中,所述目标左矩阵为自注意力运算中的查询矩阵或所述查询矩阵分割后产生的矩阵,所述目标右矩阵为自注意力运算中的键值矩阵的转置矩阵或所述键值矩阵的转置矩阵分割后产生的矩阵,所述目标左矩阵和所述目标右矩阵中均包括至少一个自注意力运算窗口,且所述目标左矩阵和所述目标右矩阵中包括的自注意力运算窗口相同;所述掩码包括所述第一掩码以及所述第二掩码,所述第一掩码用于指示所述目标左矩阵中的每行所属的自注意力运算窗口,所述第二掩码用于指示所述目标右矩阵中每列所属的自注意力运算窗口;所述根据所述掩码所指示的运算参与范围,对所述目标矩阵中的元素执行所述矩阵运本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种矩阵运算方法,其特征在于,应用于矩阵运算单元,所述矩阵运算单元为硬件单元,所述方法包括:获取矩阵运算指令,所述矩阵运算指令包括掩码,所述掩码用于指示待运算的目标矩阵中的元素的运算参与范围;根据所述掩码所指示的运算参与范围,对所述目标矩阵中的元素执行所述矩阵运算指令对应的运算,获得矩阵运算结果。2.根据权利要求1所述的矩阵计算方法,其特征在于,所述矩阵运算指令为线程组或线程束级别的指令。3.根据权利要求1或2所述的矩阵运算方法,其特征在于,所述矩阵运算指令为矩阵乘法指令,所述目标矩阵包括待相乘的目标左矩阵和目标右矩阵;所述掩码包括以下至少一种:针对所述目标左矩阵的行设置的第一掩码、针对所述目标右矩阵的列设置的第二掩码、以及针对所述目标左矩阵的列和所述目标右矩阵的行设置的第三掩码。4.根据权利要求3所述的矩阵运算方法,其特征在于,所述掩码包括所述第一掩码、所述第二掩码以及所述第三掩码,所述第一掩码用于指示所述目标左矩阵中的每行是否为参与矩阵乘法运算的候选行,所述第二掩码用于指示所述目标右矩阵中的每列是否为参与矩阵乘法运算的候选列,所述第三掩码用于指示所述目标左矩阵中的每列是否为参与矩阵乘法运算的候选列,以及该列在所述目标右矩阵中对应的行是否为参与矩阵乘法运算的候选行;所述根据所述掩码所指示的运算参与范围,对所述目标矩阵中的元素执行所述矩阵运算指令对应的运算,获得矩阵运算结果,包括:对所述目标左矩阵中属于所述第一掩码所指示的候选行、且属于所述第三掩码所指示的候选列中的元素,以及所述目标右矩阵中属于所述第二掩码所指示的候选列、且属于所述第三掩码所指示的候选行中的元素执行矩阵乘法运算,获得所述矩阵运算结果。5.根据权利要求4所述的矩阵运算方法,其特征在于,原始左矩阵和原始右矩阵为待相乘的两个矩阵,所述目标左矩阵为所述原始左矩阵按照第一目标尺寸的整数倍进行分割后产生的矩阵,所述第一目标尺寸为符合所述矩阵乘法指令的运算要求的左矩阵尺寸,所述目标右矩阵为所述原始右矩阵按照第二目标尺寸的整数倍进行分割后产生的矩阵,所述第二目标尺寸为符合所述矩阵乘法指令的运算要求的右矩阵尺寸,所述第一目标尺寸的列数等于所述第二目标尺寸的行数;所述第一掩码用于指示所述目标左矩阵中的每行是否来源于所述原始左矩阵,若来源于所述原始左矩阵,则该行为参与矩阵乘法运算的候选行,否则不是参与矩阵乘法运算的候选行;所述第二掩码用于指示所述目标右矩阵中的每列是否来源于所...

【专利技术属性】
技术研发人员:蔡慜方宝辉
申请(专利权)人:上海天数智芯半导体有限公司
类型:发明
国别省市:

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

1