System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于指令拓扑关系感知的GEMM调优方法技术_技高网

一种基于指令拓扑关系感知的GEMM调优方法技术

技术编号:42890383 阅读:13 留言:0更新日期:2024-09-30 15:10
本发明专利技术公开了一种基于指令拓扑关系感知的GEMM调优方法,该方法构建芯片参数模块,获取待优化算子,依据所有指令构建指令序列,并分为数据预取、矩阵乘运算、结果存回三部分。其次确定算子的搜索空间、起始解状态和矩阵乘运算中一个循环的期望执行时间的范围,对当前解状态及其相邻解状态分别构建指令拓扑关系图,将当前解状态作为候选解。然后基于贪心算法分别对当前解状态及其相邻解状态调整指令顺序。最后获取芯片的平均算力,并迭代循环,从候选解中选取平均算力最高的解状态作为该算子的最优解。本发明专利技术实现程序执行时间趋近于指令拓扑图中的关键路径长度,提高指令执行的效率,减少人工优化的时间。

【技术实现步骤摘要】

本专利技术属于面向gemm运算加速领域,涉及一种基于指令拓扑关系感知的gemm调优方法。


技术介绍

1、矩阵乘法(gemm)是使用最广泛的基本矩阵操作函数之一。它不仅在很多计算应用中被频繁调用,而且是基础代数库blas中三级函数的基础。很多其他blas三级函数的性能提高也依赖于gemm的优化。因此,对很多科学和工程应用来说,提高稠密矩阵乘法的性能,对加快整体计算速度有重要作用。而gemm函数的优化,又严重依赖于硬件平台,函数实现必须充分利用处理器特性才能发挥出计算平台的计算能力。因此,各处理器制造厂商都在致力于提供针对自己生产的处理器进行过优化的blas函数库,尤其是进行了深度优化的gemm函数。

2、目前gemm的一个优化方式是对核心代码进行精细手工优化。这种方法的目的是通过使用低级的编程语言,如汇编语言,来编写矩阵乘法的核心代码,从而提高矩阵乘法的执行速度和精度。例如,gotoblas就提供了几种不同cpu上的汇编核心代码,如x86、arm、powerpc等,这些代码都是经过精心设计和调试的,可以充分利用cpu的指令集和功能,如simd、fma、预取等,从而实现高效的矩阵乘法。这种方法的优点是可以达到最高的性能和精度,以及最低的开销。这种方法的缺点是需要对汇编语言有高超的技巧和经验,以及编写不同指令集的代码,增加了开发的难度和复杂度。

3、从以上的分析可以看出,对代码进行手工优化的方法存在开发量大、开发效率低、优化困难等问题。如何实现矩阵乘的自动优化是一个迫切需要解决和非常有意义的问题。

/>

技术实现思路

1、本专利技术的目的是针对手工优化方法存在的开发量大、开发效率低、优化困难等问题,提出一种基于指令拓扑关系感知的gemm调优方法,该方法基于用户输入的指令序列,利用指令之间的数据冒险关系构建指令关系图,采用贪心算法对指令进行排序,以提高算子的开发效率指令和执行性能执行效率。

2、本专利技术提供的一种基于指令拓扑关系感知的gemm调优方法,包括以下步骤:

3、步骤1、构建芯片参数模块,包含指令发射间隔和指令执行时间。

4、所述芯片参数模块包含:指令发射间隔、lds指令执行时间、ldg指令执行时间、fma指令间隔。所述lds指令为读取共享存储器数据指令,ldg指令为读取全局存储器数据指令,fma指令为乘加计算指令。

5、步骤2、获取待优化算子,依据算子中的所有指令构建指令序列,将指令序列分为数据预取、矩阵乘运算、结果存回三个部分。所述算子包括访存指令以及计算指令等构成用于矩阵乘任务的程序;所述指令由指令名称、目地寄存器序列、源寄存器序列组成。

6、步骤3、确定算子的搜索空间、起始解状态和矩阵乘运算部分中一个循环的期望执行时间t的范围tscope。所述搜索空间中包含算子的所有可行解,所述可行解s表示为{t0,t1,t2...tn,t},其中ti为矩阵乘运算部分中第i条ldg指令与第i+1条ldg指令的发射间隔,n为矩阵乘运算部分中ldg指令的总数,特别的,tn为矩阵乘运算部分中最后一条ldg指令与结果存回部分的第一条指令的发射间隔,t表示矩阵乘运算部分中一个循环的指令期望执行时间。此外,可行解s应满足令解状态s取起始解状态s0,起始解状态s0={t0,0,t1,0,t2,0...tn,0,t}可取tmin表示tscope的最小值。

7、步骤4、对当前解状态si及其相邻解状态si′分别构建指令拓扑关系图,并将当前解状态作为候选解。所述相邻解状态si′={t0,i′,t1,i′,t2,i...tn,i′,t}并且满足所述指令拓扑关系图的顶点表示指令,边表示指令之间的依赖关系,边长为表示指令发射间隔,构建关系图的规则是:1.根据指令之间的数据冒险建边,所述数据冒险有:写后读相关性(raw),写后写相关性(waw)和读后写相关性(war),其中raw是指上一条指令还未执行对指定内存的写操作,下一条指令就对指定内存进行读操作,导致逻辑错误;waw是指上一条指令还未执行对指定内存的写操作,下一条指令就对指定内存进行写操作,导致逻辑错误;war是指上一条指令还未执行对指定内存的读操作,下一条指令就对指定内存进行写操作,导致逻辑错误;2.根据访存指令建边:由于指令缓存有限,因此访存指令之间会存在一定间隔,即一定的先后关系,根据当前解状态确定访存指令间隔并建边。3.根据指令所在的数据预取、矩阵乘运算、结果存回三个部分建边。

8、步骤5、基于贪心算法分别对当前解状态及其相邻解状态调整指令顺序,所述贪心算法为:以的最早可执行时间作第一指标,以最长执行时间作为第二指标对指令进行排序。

9、步骤6、运行调整后的指令,获取芯片的平均算力,并迭代循环。

10、所述迭代循环为:将平均算力最高的并且不属于候选解的解状态作为当前解状态si+1,搜索次数加一,若搜索次数小于指定次数则执行步骤4,否则增加t,若t∈tscope则执行步骤3,否则从候选解中选取平均算力最高的解状态作为该算子的最优解。

11、本专利技术提供的技术方案包含以下有益效果:

12、本专利技术在保证指令执行正确性的前提下1.通过指令间的拓扑关系对指令顺序进行调整,实现整个程序执行时间趋近于指令拓扑图中的关键路径长度,以提高指令执行的效率2.通过指令拓扑关系感知实现指令的自适应调整,从而减少人工优化的时间,提高了算子开发效率。

本文档来自技高网...

【技术保护点】

1.一种基于指令拓扑关系感知的GEMM调优方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于指令拓扑关系感知的GEMM调优方法,其特征在于,所述芯片参数模块包含:指令发射间隔,lds指令执行时间,ldg指令执行时间,fma指令间隔;

3.根据权利要求2所述的基于指令拓扑关系感知的GEMM调优方法,其特征在于,所述算子包括访存指令以及计算指令构成用于矩阵乘任务的程序;所述指令由指令名称、目地寄存器序列、源寄存器序列组成。

4.根据权利要求3所述的基于指令拓扑关系感知的GEMM调优方法,其特征在于,所述搜索空间中包含算子的所有可行解,可行解S表示为{t0,t1,t2...tn,T},其中ti为矩阵乘运算部分中第i条ldg指令与第i+1条ldg指令的发射间隔,n为矩阵乘运算部分中ldg指令的总数,tn为矩阵乘运算部分中最后一条ldg指令与结果存回部分的第一条指令的发射间隔,可行解S满足令解状态S取起始解状态S0,起始解状态S0={t0,0,t1,0,t2,0...tn,0,T}可取Tmin表示Tscope的最小值。

5.根据权利要求4所述的基于指令拓扑关系感知的GEMM调优方法,其特征在于,所述相邻解状态Si′={t0,i′,t1,i′,t2,i...tn,i′,T}并且满足所述指令拓扑关系图的顶点表示指令,边表示指令之间的依赖关系,边长为表示指令发射间隔,构建指令拓扑关系图的规则是:根据指令之间的数据冒险建边,提供的指令间的先后顺序构建图;根据访存指令建边:根据当前解状态确定访存指令间隔并建边;根据指令所在的数据预取、矩阵乘运算、结果存回三个部分建边。

6.根据权利要求1所述的基于指令拓扑关系感知的GEMM调优方法,其特征在于,所述贪心算法中,以最早可执行时间作第一指标,以最长执行时间作为第二指标对指令进行排序。

7.根据权利要求1至6任一所述的基于指令拓扑关系感知的GEMM调优方法,其特征在于,所述迭代循环具体为:将平均算力最高的并且不属于候选解的解状态作为当前解状态Si+1,搜索次数加一,若搜索次数小于指定次数则执行步骤4,否则增加T,若T∈Tscope则执行步骤3,否则从候选解中选取平均算力最高的解状态作为该算子的最优解。

...

【技术特征摘要】

1.一种基于指令拓扑关系感知的gemm调优方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于指令拓扑关系感知的gemm调优方法,其特征在于,所述芯片参数模块包含:指令发射间隔,lds指令执行时间,ldg指令执行时间,fma指令间隔;

3.根据权利要求2所述的基于指令拓扑关系感知的gemm调优方法,其特征在于,所述算子包括访存指令以及计算指令构成用于矩阵乘任务的程序;所述指令由指令名称、目地寄存器序列、源寄存器序列组成。

4.根据权利要求3所述的基于指令拓扑关系感知的gemm调优方法,其特征在于,所述搜索空间中包含算子的所有可行解,可行解s表示为{t0,t1,t2...tn,t},其中ti为矩阵乘运算部分中第i条ldg指令与第i+1条ldg指令的发射间隔,n为矩阵乘运算部分中ldg指令的总数,tn为矩阵乘运算部分中最后一条ldg指令与结果存回部分的第一条指令的发射间隔,可行解s满足令解状态s取起始解状态s0,起始解状态s0={t0,0,t1,0,t2,0...tn,0,t}可取tmin表示tscope的最小值。...

【专利技术属性】
技术研发人员:曾艳陆星宇薛梅婷赵乃良殷昱煜张纪林
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

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

1