一种面向异构芯片的矩阵乘法运算过程优化方法技术

技术编号:35707428 阅读:11 留言:0更新日期:2022-11-23 15:04
本发明专利技术公开了一种面向异构芯片的矩阵乘法运算过程优化方法,通过根据矩阵乘法运算相关矩阵的结构和异构芯片的硬件参数确定计算过程中相关参数的优化范围及方式,从而实现了对分块优化、访存合并、循环展开、流水并行及向量并行等优化技术的联合运用,达到了对矩阵乘法运算过程进行优化的效果。法运算过程进行优化的效果。

【技术实现步骤摘要】
一种面向异构芯片的矩阵乘法运算过程优化方法


[0001]本专利技术属于矩阵乘法的加速设计
,具体涉及一种面向异构芯片的矩阵乘法运算过程优化方法。

技术介绍

[0002]当前计算机技术已被广泛应用于多个领域,这不仅给多个行业带来了巨大的经济效益,也为我们的生活带来了许多改变和便利,然而,不断深化的应用也对计算性能及效率的进一步提升提出了新的要求。现有计算机算法中包含多种矩阵乘法密集型算法,这类算法涉及大量的矩阵乘法运算,这些矩阵乘法运算所涉及的矩阵往往具有尺寸多样等特殊性,因此,提高计算机算法执行效率的关键因素之一就是提高矩阵乘法运算的执行效率。
[0003]现有技术中针对矩阵乘法运算执行效率的研究主要包括以下两类:一是关注矩阵乘法中矩阵尺寸对执行效率的影响,二是聚焦于矩阵分块优化技术的研究。此外,矩阵乘法的执行效率还与芯片密切相关。异构芯片各自具有不同的硬件参数,包括计算核心数量、寄存器大小、局部共享存储器大小、全局存储器大小、向量指令宽度等,不同异构芯片上矩阵乘法的运算性能也各不相同。然而,现有针对矩阵乘法运算执行效率的研究中缺乏对异构芯片的硬件参数影响因素的考虑,且对访存合并、循环展开、流水并行、向量并行等其他方法的综合运用缺少研究。

技术实现思路

[0004]有鉴于此,本专利技术提供了一种面向异构芯片的矩阵乘法运算过程优化方法,能够实现不同异构芯片上矩阵乘法运算的计算性能优化。
[0005]本专利技术提供的一种面向异构芯片的矩阵乘法运算过程优化方法,包括以下步骤:步骤1、建立芯片的屋檐模型;根据所述屋檐模型确定芯片的访存带宽阈值和算力阈值;令迭代次数为1;步骤2、运行待执行代码,所述待执行代码中包含矩阵乘法运算;获取芯片的实时访存带宽和实时算力;若实时访存带宽和实时算力分别小于访存带宽阈值和算力阈值,且迭代次数小于次数阈值,则执行步骤3;若实时访存带宽不小于访存带宽阈值,且实时算力小于算力阈值,同时迭代次数小于次数阈值,则执行步骤4;若实时访存带宽小于访存带宽阈值,且实时算力不小于算力阈值,同时迭代次数小于次数阈值,则执行步骤3;若实时访存带宽和实时算力分别不小于访存带宽阈值和算力阈值,则结束本优化流程;若迭代次数不小于次数阈值,则结束本优化流程;步骤3、采用模拟退火算法确定寄存器及局部共享存储器内与矩阵乘法相关的优化分块大小,执行步骤2;步骤4、顺序执行向量并行、循环展开及流水并行完成算力优化后,执行步骤2。
[0006]进一步地,所述步骤3中在执行步骤2之前还包括将全局内存转换为连续空间,并判断局部共享存储器内是否存在bank冲突,若存在则对其存储的矩阵进行转置或偏移1位
访问操作。
[0007]进一步地,所述步骤3中的所述采用模拟退火算法确定寄存器及局部共享存储器内与矩阵乘法相关的优化分块大小的方式,包括以下步骤:步骤3.1、定义模拟退火算法的解状态S表示为{m
L0
,k
L0
,n
L0
,m
L1
,k
L1
,n
L1
},其中,m
L0
为寄存器L0内输入矩阵A
L0
的行数,k
L0
为寄存器L0内输入矩阵A
L0
的列数,n
L0
为寄存器L0内输入矩阵B
L0
的列数,m
L1
为共享存储器L1内输入矩阵A
L1
的行数,k
L1
为共享存储器L1内输入矩阵A
L1
的列数,n
L1
为共享存储器L1内输入矩阵B
L1
的列数;步骤3.2、令解状态S取初始解状态S0,初始解状态S0表示为{m
L0i
,k
L0i
,n
L0i
,m
L1i
,k
L1i
,n
L1i
},令温度T取初始值T0;在初始解状态S0下执行待执行代码,得到代码实际执行时间,将该执行时间作为记为t_S;令计数变量j取初始值零;步骤3.3、改变解状态S为解状态S

,解状态S

表示为{m
L0c
,k
L0c
,n
L0c
,m
L1c
,k
L1c
,n
L1c
},在解状态S

下执行待执行代码,得到代码实际执行时间记为t_S

;步骤3.4、求得计算时间增量Δt = t_S
′‑ꢀ
t_S;若Δt小于零且温度T大于温度阈值,则采用解状态S

对应的计算时间t_S

更新t_S,令温度T衰减设定步进后执行步骤3.3;若Δt小于零且温度T不大于温度阈值,则将当前解状态S

作为最优解的分块大小进行输出,退出本流程;若Δt大于零且温度T大于温度阈值,则以设定概率采用t_S

更新t_S,并令温度T衰减设定步进后执行步骤3.3;若Δt大于零且温度T不大于温度阈值,则将当前解状态S

作为最优解的分块大小进行输出,退出本流程;若Δt等于零且温度T大于温度阈值,同时j不大于次数阈值,则令温度T衰减设定步进后执行步骤3.3;若Δt等于零且温度T不大于温度阈值或j大于次数阈值,则将当前解状态S

作为最优解的分块大小进行输出,退出本流程。
[0008]进一步地,所述步骤3.1的解状态S中各元素取值的确定方式为:m
L0
的取值为芯片的最小并行执行线程数,k
L0
的取值为在区间[1, m
L0
]内选定的任意值,n
L0
的取值为满足条件1的最大值;m
L1
的取值为区间[m
L0
, m
L0_df
]内m
L0
的整数倍,k
L1
的取值为区间[k
L0
, k
L0_df
]内k
L0
的整数倍,n
L1
的取值为满足条件2且在区间[n
L0
, n
L0_df
]内n
L0
的整数倍的值;其中,m
L0_df 为系统默认确定的寄存器L0内输入矩阵A
L0
的行数,k
L0_df
为系统默认确定的寄存器L0内输入矩阵A
L0
的列数,n
L0_df
为寄存器L0内输入矩阵B
L0
的列数;所述条件1表示为(m
L0
* k
L0
+ k
L0
*n
L0
+ m
L0
* n
L0
)*B &本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向异构芯片的矩阵乘法运算过程优化方法,其特征在于,包括以下步骤:步骤1、建立芯片的屋檐模型;根据所述屋檐模型确定芯片的访存带宽阈值和算力阈值;令迭代次数为1;步骤2、运行待执行代码,所述待执行代码中包含矩阵乘法运算;获取芯片的实时访存带宽和实时算力;若实时访存带宽和实时算力分别小于访存带宽阈值和算力阈值,且迭代次数小于次数阈值,则执行步骤3;若实时访存带宽不小于访存带宽阈值,且实时算力小于算力阈值,同时迭代次数小于次数阈值,则执行步骤4;若实时访存带宽小于访存带宽阈值,且实时算力不小于算力阈值,同时迭代次数小于次数阈值,则执行步骤3;若实时访存带宽和实时算力分别不小于访存带宽阈值和算力阈值,则结束本优化流程;若迭代次数不小于次数阈值,则结束本优化流程;步骤3、采用模拟退火算法确定寄存器及局部共享存储器内与矩阵乘法相关的优化分块大小,执行步骤2;步骤4、顺序执行向量并行、循环展开及流水并行完成算力优化后,执行步骤2。2.根据权利要求1所述的矩阵乘法运算过程优化方法,其特征在于,所述步骤3中在执行步骤2之前还包括将全局内存转换为连续空间,并判断局部共享存储器内是否存在bank冲突,若存在则对其存储的矩阵进行转置或偏移1位访问操作。3.根据权利要求1所述的矩阵乘法运算过程优化方法,其特征在于,所述步骤3中的所述采用模拟退火算法确定寄存器及局部共享存储器内与矩阵乘法相关的优化分块大小的方式,包括以下步骤:步骤3.1、定义模拟退火算法的解状态S表示为{m
L0
,k
L0
,n
L0
,m
L1
,k
L1
,n
L1
},其中,m
L0
为寄存器L0内输入矩阵A
L0
的行数,k
L0
为寄存器L0内输入矩阵A
L0
的列数,n
L0
为寄存器L0内输入矩阵B
L0
的列数,m
L1
为共享存储器L1内输入矩阵A
L1
的行数,k
L1
为共享存储器L1内输入矩阵A
L1
的列数,n
L1
为共享存储器L1内输入矩阵B
L1
的列数;步骤3.2、令解状态S取初始解状态S0,初始解状态S0表示为{m
L0i
,k
L0i
,n
L0i
,m
L1i
,k
L1i
,n
L1i
},令温度T取初始值T0;在初始解状态S0下执行待执行代码,得到代码实际执行时间,将该执行时间作为记为t_S;令计数变量j取初始值零;步骤3.3、改变解状态S为解状态S

,解状态S

表示为{m
L0c
,k
L0c
,n
L0c
,m
L1c
,k
L1c
,n
L1c
},在解状态S

下执行待执行代码,得到代码实际执行时间记为t_S

;步骤3.4、求得计算时间增量Δt = t_S
′‑ꢀ
t_S;若Δt小于零且温度T大于温度阈值,则采用解状态S

对应的计算时间t_S

更新t_S,令温度T衰减设定步进后执行步骤3.3;若Δt小于零且温度T不大于温度阈值,则将当前解状态S

作为最优解的分块大小进行输出,退出本流程;若Δt大于零且温度T大于温度阈值,则以设定概率采用t_S

更新t_S,并令温度T衰减设定步进后执行步骤3.3;若Δt大于零且温度T不大于温度阈值,则将当前解状态S

作为最优解...

【专利技术属性】
技术研发人员:杜凯温研
申请(专利权)人:北京麟卓信息科技有限公司
类型:发明
国别省市:

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

1