矩阵乘运算方法技术

技术编号:39516402 阅读:5 留言:0更新日期:2023-11-25 18:53
本申请提供了一种矩阵乘运算方法

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


[0001]本申请涉及数据处理
,具体而言,涉及一种矩阵乘运算方法

装置和电子设备


技术介绍

[0002]基础线性代数子程序库(
Basic Linear Algebra Subprograms

BLAS
)是一系列线性代数运算函数的接口标准,这里的线性代数运算是指例如矢量的线性组合,矩阵乘以矢量,矩阵乘以矩阵等

不同的企业

平台

设计者可以写出不同版本的
BLAS
库来实现同样类型的接口功能,但对于同样的接口,各自所用的内部实现算法不同,这一点导致在不同架构设备上不同版本的
BLAS
表现性能会存在差异

[0003]其中,通用矩阵乘(
General Matrix Multiplication

Gemm
)是两个矩阵 a (mk)、b (kn) 相乘得到新的矩阵
c (mn) 的线性代数运算,该过程理论上需要
mnk
次乘法和
mnk
次加法运算,当矩阵的元素数据量
m, n, k 很大(比如超过
1024
)时,运算量会非常巨大,运算速度较慢


技术实现思路

[0004]有鉴于此,本申请实施例提供了一种矩阵乘运算方法

装置和电子设备,以改善进行
BLAS
库中通用矩阵乘的算子具体实现时,运算量会非常巨大,运算速度较慢的问题

[0005]第一方面,本申请实施例提供了一种矩阵乘运算方法,应用于电子设备,所述电子设备上设置有加速运算器,所述加速运算器包括:多个加速处理单元,该方法包括:分别将待进行矩阵乘运算的第一输入数据和第二输入数据拆分为多个第一数据单元和多个第二数据单元;基于拆分得到的所述多个第一数据单元和所述多个第二数据单元,为每个加速处理单元分配待处理的多个目标数据单元组,每个目标数据单元组包括用于进行矩阵乘运算的一个第一数据单元和一个第二数据单元;采用所述每个加速处理单元,分别对各自被分配的所述多个目标数据单元组进行矩阵乘运算,得到所述每个加速处理单元各自对应的多个输出数据单元;根据所述多个加速处理单元中所有加速处理单元的多个输出数据单元,确定所述第一输入数据和所述第二输入数据的运算结果

[0006]在该实施方式中,面临数据量大的通用矩阵乘运算,将待进行矩阵乘运算的第一输入数据和第二输入数据进行拆分

组合,并将组合得到的数据单元组分配给具有多个加速运算单元的加速运算器,以使各加速运算单元进行并行计算,将各加速运算单元的运算结果进行组合,得到第一输入数据和第二输入数据的运算结果

从而加速了运算过程,提高了运算速度

[0007]在一可选的实施方式中,所述基于拆分得到的所述多个第一数据单元和所述多个第二数据单元,为每个加速处理单元分配待处理的多个目标数据单元组,包括:
对所述多个第一数据单元和所述多个第二数据单元进行组合,得到多个数据单元组;获取每个数据单元组中的第一数据单元在所述第一输入数据中的第一索引以及所述每个数据单元组中的第二数据单元在所述第二输入数据中的第二索引;根据所述第一索引和所述第二索引,从所述多个数据单元中为所述每个加速处理单元分配所述多个目标数据单元组

[0008]在该实施方式中,根据第一索引和第二索引,从多个数据单元组中为每个加速处理单元分配待处理的多个目标数据单元组,提高了目标数据单元组的确定灵活性

[0009]在一可选的实施方式中,所述根据所述第一索引和所述第二索引,从所述多个数据单元中为所述每个加速处理单元分配所述多个目标数据单元组,包括:根据所述第一索引和所述第二索引,确定所述每个数据单元组对应的输出数据单元的第三索引;根据所述第三索引,从所述多个数据单元组中为所述每个加速处理单元分配所述多个目标数据单元组

[0010]在该实施方式中,根据第一索引和第二索引,确定输出数据单元的第三索引,然后根据第三索引为每个加速处理单元分配多个目标数据单元组,提高了目标数据单元组的确定灵活性,并使得加速处理单元所处理的目标数据单元组具有一定规律,即遵循一定规律

[0011]在一可选的实施方式中,所述根据所述第三索引,从所述多个数据单元组中为所述每个加速处理单元分配所述多个目标数据单元组,包括:根据所述第三索引和所述多个加速处理单元的数量进行求余,得到余数;根据所述余数,从所述多个数据单元组中为所述每个加速处理单元分配所述多个目标数据单元组

[0012]在该实施方式中,根据第三索引,确定余数,然后根据余数为每个加速处理单元分配多个目标数据单元组,提高了目标数据单元组的确定灵活性,并使得加速处理单元所处理的目标数据单元组具有一定规律,即遵循一定规律

[0013]在一可选的实施方式中,所述分别将待进行矩阵乘运算的第一输入数据和第二输入数据拆分为多个第一数据单元和多个第二数据单元,包括:若所述第一输入数据和所述第二输入数据满足预设均分条件,则将所述第一输入数据均分为所述多个第一数据单元,以及将所述第二输入数据均分为所述多个第二数据单元

[0014]在该实施方式中,在满足预设均分条件时,对输入数据进行均分,使得加速处理单元所运算的目标数据单元组的大小一致,提高加速处理单元的同步运算性能

[0015]在一可选的实施方式中,所述分别将待进行矩阵乘运算的第一输入数据和第二输入数据拆分为多个第一数据单元和多个第二数据单元,包括:若所述第一输入数据和所述第二输入数据中的至少一个输入数据不满足预设均分条件,则将所述至少一个输入数据拆分为前
p
‑1个数据单元以及第
p
个数据单元,其中,所述前
p
‑1个数据单元的数据形状相等,且所述前
p
‑1个数据单元和所述第
p
个数据单元的数据形状不相同

[0016]在该实施方式中,在不满足预设均分条件时,优先保证前
p
‑1个 数据单元均分,尽
可能保证大多数加速处理单元所计算的数据大小基本一致,从而提高加速处理单元的同步运算性能

[0017]在一可选的实施方式中,所述采用所述每个加速处理单元,分别对各自被分配的所述多个目标数据单元组进行矩阵乘运算,得到所述每个加速处理单元各自对应的多个输出数据单元之前,所述方法还包括:根据预设补偿数据,对所述第
p
个数据单元进行数据补偿,以使补偿后的第
p
个数据单元和所述前
p
‑1个数据单元的数据形状相同;所述根据所述多个加速处理单元中所有加速处本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种矩阵乘运算方法,其特征在于,应用于电子设备,所述电子设备上设置有加速运算器,所述加速运算器包括:多个加速处理单元,该方法包括:分别将待进行矩阵乘运算的第一输入数据和第二输入数据拆分为多个第一数据单元和多个第二数据单元;基于拆分得到的所述多个第一数据单元和所述多个第二数据单元,为每个加速处理单元分配待处理的多个目标数据单元组,每个目标数据单元组包括用于进行矩阵乘运算的一个第一数据单元和一个第二数据单元;采用所述每个加速处理单元,分别对各自被分配的所述多个目标数据单元组进行矩阵乘运算,得到所述每个加速处理单元各自对应的多个输出数据单元;根据所述多个加速处理单元中所有加速处理单元的多个输出数据单元,确定所述第一输入数据和所述第二输入数据的运算结果;所述基于拆分得到的所述多个第一数据单元和所述多个第二数据单元,为每个加速处理单元分配待处理的多个目标数据单元组,包括:对所述多个第一数据单元和所述多个第二数据单元进行组合,得到多个数据单元组;获取每个数据单元组中的第一数据单元在所述第一输入数据中的第一索引以及所述每个数据单元组中的第二数据单元在所述第二输入数据中的第二索引;根据所述第一索引和所述第二索引,从所述多个数据单元中为所述每个加速处理单元分配所述多个目标数据单元组
。2.
根据权利要求1所述的方法,其特征在于,所述根据所述第一索引和所述第二索引,从所述多个数据单元中为所述每个加速处理单元分配所述多个目标数据单元组,包括:根据所述第一索引和所述第二索引,确定所述每个数据单元组对应的输出数据单元的第三索引;根据所述第三索引,从所述多个数据单元组中为所述每个加速处理单元分配所述多个目标数据单元组
。3.
根据权利要求2所述的方法,其特征在于,所述根据所述第三索引,从所述多个数据单元组中为所述每个加速处理单元分配所述多个目标数据单元组,包括:根据所述第三索引和所述多个加速处理单元的数量进行求余,得到余数;根据所述余数,从所述多个数据单元组中为所述每个加速处理单元分配所述多个目标数据单元组
。4.
根据权利要求1所述的方法,其特征在于,所述分别将待进行矩阵乘运算的第一输入数据和第二输入数据拆分为多个第一数据单元和多个第二数据单元,包括:若所述第一输入数据和所述第二输入数据满足预设均分条件,则将所述第一输入数据均分为所述多个第一数据单元,以及将所述第二输入数据均分为所述多个第二数据单元
。5.
根据权利要求1所述的方法,其特征在于,所述分别将待进行矩阵乘运算的第一输入数据和第二输入数据拆分为多个第一数据单元和多个第二数据单元,包括:若所述第一输入数据和所述第二输入数据中的至少一个输入数据不满足预设均分条件,则将所述至少一个输入数据拆分为前
p
‑1个数据单元以及第
p
个数据单元,其中,所述前
p
‑1个数据单元的数据形状相等,且所述前
p
‑1个数据单元和所述第
p
个数据单元的数据形状...

【专利技术属性】
技术研发人员:姜沛
申请(专利权)人:上海登临科技有限公司
类型:发明
国别省市:

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

1