System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 支持动态形状的计算的方法、装置、介质和程序产品制造方法及图纸_技高网

支持动态形状的计算的方法、装置、介质和程序产品制造方法及图纸

技术编号:40504664 阅读:5 留言:0更新日期:2024-03-01 13:18
本发明专利技术涉及一种用于支持动态形状的计算的方法、装置、介质和程序产品。该方法包括:将用户输入的形状拆分至针对单计算核的形状,以便至少基于针对单计算核的形状确定核函数的循环结构;将核函数的循环结构分解为内层循环和外层循环,以使得内层循环匹配缓冲区并且循环展开;以及将核函数的循环结构的循环层拆分为循环块,以便通过复用循环块以使得核函数支持动态维度。本发明专利技术能够避免访存和算力的浪费,提高执行性能。

【技术实现步骤摘要】

本专利技术的实施例总体上涉及数据处理领域,更具体地涉及一种用于支持动态形状的计算的方法、计算装置、计算机可读存储介质和计算机程序产品。


技术介绍

1、动态形状(dynamic shape) 是延迟指定部分或全部张量维度直到运行时的能力。在深度学习计算中存在的大量的dynamic shape的场景,以解决功能和性能的泛化问题。

2、传统的用于支持动态形状的计算的方案例如包括分桶方案和基于dynamic shape直接生成核函数(kernel)的方案。在分桶方案中,主要将需要支持动态形状的范围进行分组,同一组动态形状使用同一kernel来执行,而且使用支持较大形状(shape)的kernel来覆盖稍小的shape。在上述方案中,存在访存和算力的浪费,以及需精细的kernel分组和筛选策略。在基于动态shape直接生成kernel的方案中,算子输入shape就包含动态维度,算子的整个生成周期中都直接处理该动态维度,最终生成支持动态的kernel。该方案的复杂度较高,难以在编译阶段进行极限优化,并且分支跳转多,从而影响执行性能,并且难于优化。

3、综上,传统的用于支持动态形状的计算的方案存在的不足之处在于,存在访存和算力的浪费,因需要精细的kernel分组和筛选策略,或者存在较多的分支跳转从而影响执行性能。


技术实现思路

1、本专利技术提供了一种用于支持动态形状的计算的方法、计算装置、计算机可读存储介质和计算机程序产品,能够避免访存和算力的浪费,提高执行性能。>

2、根据本专利技术的第一方面,提供了一种用于支持动态形状的计算的方法。该方法包括:将用户输入的形状拆分至针对单计算核的形状,以便至少基于针对单计算核的形状确定核函数的循环结构;将核函数的循环结构分解为内层循环和外层循环,以使得内层循环匹配缓冲区并且循环展开;以及将核函数的循环结构的循环层拆分为循环块,以便通过复用循环块以使得核函数支持动态维度。

3、根据本专利技术的第二方面,还提供了一种计算装置。该计算装置包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使计算装置能够执行本专利技术的第一方面的方法。

4、根据本专利技术的第三方面,还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序被机器执行时执行本专利技术的第一方面的方法。

5、根据本专利技术的第四方面,还提供了一种计算机程序产品,包括计算机程序,计算机程序被机器执行时执行本专利技术的第一方面的方法。

6、在一些实施例中,将用户输入的形状拆分至针对单计算核的形状包括:确认用户输入的形状是否包括子张量维度;响应于确认用户输入的形状包括子张量维度,将子张量维度转将转换至批量维度,以便生成转换至批量维度的形状;以及将转换至批量维度的形状拆分至针对单计算核的形状。

7、在一些实施例中,至少基于针对单计算核的形状确定核函数的循环结构包括:基于针对单计算核的形状、指令计算的粒度、带宽参数、存储资源,确定核函数的循环结构。

8、在一些实施例中,将核函数的循环结构分解为内层循环和外层循环包括:基于缓冲区的尺寸和带宽比,确定内层循环中各维度的范围;以及基于内层循环中各维度的范围的最大值,确定与内层循环最接近的外层循环的各维度的循环步长。

9、在一些实施例中,将核函数的循环结构的循环层拆分为循环块,以便通过复用循环块以使得核函数支持动态维度包括:确定针对单计算核的形状是否支持动态形状;响应于确定针对单计算核的形状支持动态形状,将核函数的各层循环代码拆分为多段分代码,以便对多段分代码所包括的主体分代码进行循环展开;以及配置寄存器所存储的循环次数,以用于动态控制主体分代码的循环次数。

10、在一些实施例中,确定针对单计算核的形状是否支持动态形状包括:响应于确定用于矩阵乘法累加的输入矩阵的第一维度和第二维度的乘积大于缓存区尺寸,使得输入矩阵的第一维度或第二维度支持动态形状。

11、在一些实施例中,确定针对单计算核的形状是否支持动态形状包括:确定用于矩阵乘法累加的输入矩阵的计算公式中的最小循环块的第一维度和第二维度;响应于确认最小循环块的第一维度大于或者等于 64 * 3,使得最小循环块的第一维度支持动态形状;以及响应于确认最小循环块的第二维度大于或者等于最小循环步长乘以3,使得最小循环块的第二维度支持动态形状。

12、在一些实施例中,用于支持动态形状的计算的方法还包括:针对矩阵乘法累加,确定子张量维度转换至批量维度之后是否还存在多余的维度;以及响应于确定子张量维度转换至批量维度之后还存在多余的维度,通过多次启动同样的核函数,用以使得核函数支持动态维度。

13、应当理解,本部分所描述的内容并非旨在标识本专利技术的实施例的关键或重要特征,也不用于限制本专利技术的范围。本专利技术的其它特征将通过以下的说明书而变得容易理解。

本文档来自技高网...

【技术保护点】

1.一种用于支持动态形状的计算的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,将用户输入的形状拆分至针对单计算核的形状包括:

3.根据权利要求1所述的方法,其特征在于,至少基于针对单计算核的形状确定核函数的循环结构包括:

4.根据权利要求3所述的方法,其特征在于,将核函数的循环结构分解为内层循环和外层循环包括:

5.根据权利要求1所述的方法,其特征在于,将核函数的循环结构的循环层拆分为循环块,以便通过复用循环块以使得核函数支持动态维度包括:

6.根据权利要求5所述的方法,其特征在于,确定针对单计算核的形状是否支持动态形状包括:

7.根据权利要求5所述的方法,其特征在于,确定针对单计算核的形状是否支持动态形状包括:

8.根据权利要求1所述的方法,其特征在于,确定用于针对单计算核的形状是否支持动态形状包括:

9.根据权利要求1所述的方法,其特征在于,还包括:

10.一种计算装置,其特征在于,包括:

11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被机器执行时执行根据权利要求1-9中任一项所述的方法。

12.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被机器执行时执行根据权利要求1-9中任一项所述的方法。

...

【技术特征摘要】

1.一种用于支持动态形状的计算的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,将用户输入的形状拆分至针对单计算核的形状包括:

3.根据权利要求1所述的方法,其特征在于,至少基于针对单计算核的形状确定核函数的循环结构包括:

4.根据权利要求3所述的方法,其特征在于,将核函数的循环结构分解为内层循环和外层循环包括:

5.根据权利要求1所述的方法,其特征在于,将核函数的循环结构的循环层拆分为循环块,以便通过复用循环块以使得核函数支持动态维度包括:

6.根据权利要求5所述的方法,其特征在于,确定针对单计算核的形状是否支持动态形状包括:...

【专利技术属性】
技术研发人员:请求不公布姓名请求不公布姓名请求不公布姓名请求不公布姓名请求不公布姓名请求不公布姓名请求不公布姓名请求不公布姓名
申请(专利权)人:北京壁仞科技开发有限公司
类型:发明
国别省市:

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

1