System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种应用加速方法、装置及相关设备制造方法及图纸_技高网

一种应用加速方法、装置及相关设备制造方法及图纸

技术编号:40364473 阅读:8 留言:0更新日期:2024-02-20 22:12
本申请提供一种应用加速方法、装置及相关设备,该方法包括:计算设备获取应用对应的第一代码,该第一代码包括一种或多种不同类型的变量;根据第一代码中的各个算子和算子中所包括的变量的类型,将第一代码中的各个算子部署到不同的硬件芯片。计算设备保存有不同硬件芯片适合计算的算子和变量类型,在进行应用的部署时,根据不同硬件芯片适合计算的算子或变量类型,以算子为单位,将应用部署到不同的硬件芯片中,从而实现对应用进行加速。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及一种应用加速方法、装置及相关设备


技术介绍

1、当前高性能计算(high performance computing,hpc)应用等应用以及工程模拟中使用的数据的数据类型通常是高精度的浮点(floating point,fp)型,例如fp128、fp64。但是,对所有的变量都采用高精度的浮点型的数据是一种“过工程化”(over-engineered)的实现方式,这样的实现方式在运算过程中产生的数据量较大,导致运算量较大,影响计算效率。因此,如何对应用进行加速是一个需要解决的技术问题。


技术实现思路

1、本申请提供一种应用加速方法、装置及相关设备,能够将应用中的不同的算子部署到不同的硬件芯片中,对应用进行加速。

2、第一方面,本申请提供一种应用加速方法,包括:计算设备获取应用对应的第一代码,该第一代码包括一种或多种不同类型的变量;根据第一代码中的各个算子和算子中所包括的变量的类型,将第一代码中的各个算子部署到不同的硬件芯片。

3、应理解,上述第一代码可以是应用的源代码,也可以是将该应用的源代码中较高精度的变量转换为较低精度的变量后得到的。其中,当第一代码中的包括不同类型的变量时,不同类型的变量的精度不同,例如第一代码中包括fp64类型和fp32类型的变量,fp64类型的变量对应的数据的精度高于fp32类型的变量对应的数据的精度。

4、计算设备保存有不同硬件芯片适合计算的算子和变量类型,在进行应用的部署时,能够根据不同硬件芯片适合计算的算子或变量类型,以算子为单位,将应用部署到不同的硬件芯片中,从而实现对应用进行加速。

5、在一种可能的实现方式中,上述第一代码是通过第二代码转换得到的,第二代码中包括高精度的第一类型的变量,计算设备获取应用对应的第二代码,将第二代码中第一类型的变量中的部分或者全部转换为第二类型,得到上述第一代码;其中,第一类型的变量对应的数据的精度大于第二类型的变量对应的数据的精度;例如,第一类型的变量是fp64类型,第二类型的变量是fp32类型。上述第二代码可以是应用的源代码,也可以是将应用的源代码中高精度的变量转换为低精度的变量得到的。

6、应理解,本申请中的高精度和低精度是一种相对概念,高精度和低精度并不指代具体的某一种或者多种数据类型或变量类型的数据。例如,fp128的数据相对于fp64的数据是一种高精度的数据,fp64的数据相对于fp128的数据是一种低精度的数据;而fp64的数据相对于fp32的数据是一种高精度的数据,fp32的数据相对于fp64的数据是一种低精度的数据。

7、将应用的源代码中高精度的变量转换为低精度的变量,能够降低应用在执行过程中占用的存储空间,同时降低执行过程中产生的数据量,提高执行效率。例如在通过分布式方法训练人工智能模型时,通过降低变量的精度,能够降低训练过程中产生的数据量,从而降低分布式训练中不同计算设备之间的通信量,提高计算效率。

8、在一种可能的实现方式中,上述将第二代码中第一类型的变量中的部分或者全部转换为第二类型,包括:计算设备将第二代码中第一类型的变量划分为n个集合,每个集合包括多个变量,其中,n为正整数;遍历上述n个集合,确定n个集合中第i个集合中的变量能够由第一类型转换为第二类型,将第二代码中属于第i个集合中的变量由第一类型转换为第二类型。

9、应理解,计算设备一次能够确定一个集合中的所有变量是否能够由第一类型转换为第二类型;上述第i个集合是n个集合中的任意一个,即,计算设备会分别确定n个集合中的每一个集合中的变量是否能够转换成第二类型。当n等于1时,是只先将第二代码中的所有第一类型的变量均转换为第二类型,确定第二代码中所有的第一类型的变量是否能够都转换为第二类型。

10、相对于依次遍历代码中的每个变量,确定每个变量是否能够由较高精度转换为较低精度,通过将第一类型的变量划分为一个或多个集合,每次确定一个集合中的所有变量是否能够由高精度转换为低精度,能够在更短的时间内确定代码中能够转换为较低精度的变量,进而将确定的能够转换为较低精度的变量转换为降低精度,降低代码转换的复杂度,提高转换效率。

11、在一种可能的实现方式中,上述确定n个集合中第i个集合中的变量能够由所述第一类型转换为所述第二类型,包括:计算设备执行第二代码,确定执行第二代码后的基准执行结果;将第i个集合中的变量转换为第二类型,其他n-1个集合中的变量保持第一类型,得到第i个集合对应的第一中间代码,执行该第一中间代码得到第一执行结果;在第一中间代码的第一执行结果和基准执行结果满足预设条件时,例如第一执行结果和基准执行结果的误差小于或等于预设值,则确定第i个集合中的变量能够由第一类型转换为第二类型。其中,i为小于或等于n的正整数。

12、在将一个集合中的变量的变量类型由较高精度的第一类型转换为较低精度的第二类型,保持其他集合中的变量的变量类型不变,得到上述第一代码,然后执行第一代码,第一代码的执行结果和第二代码的执行结果进行对比,在两次执行结果满足预设条件,例如两次执行结果的残差小于或等于预设值,则表示将第二代码中该集合中的变量由较高精度转换为较低精度后对代码的执行结果影响较小,能够将该集合中的变量由较高精度转换为较低精度。

13、在一种可能的实现方式中,在第一中间代码的第一执行结果和基准执行结果不满足预设条件,即第i个集合中的变量不能都由第一类型转换为第二类型,计算设备再将第i个集合中的变量划分为m个子集,每个子集中包括第i个集合中的多个变量,其中,m为大于1的正整数;然后将第j个子集中的变量转换为第二类型,得到第j个子集对应的第二中间代码,执行第二中间代码得到第二执行结果;在第二中间代码的第二执行结果和基准执行结果满足预设条件时,确定第j个子集中的变量能够由第一类型转换为第二类型。其中,j为小于或等于m的正整数。

14、在第一代码的执行结果和第二代码的执行结果不满足预设条件时,表示将第二代码中该集合中的变量全部由较高精度的第一类型转换为较低精度第二类型后,会对应用的执行结果影响较大,此时再将该集合中的变量分为多个子集,确定每个子集中的变量的是否能够由较高精度转换为较低精度,即确定该集合中的部分变量是否能够由较高精度转换为较低精度。

15、在一种可能的实现方式中,上述第二中间代码中第j个子集中的变量为第二类型,m个子集中除第j个子集之外的其他m-1个子集中的变量为第一类型,上述n个集合中除所述第i个集合之外的其他n-1个集合中的目标集合中的变量转换为第二类型的变量,该目标集合是指确定的能够转换为第二类型的变量所属的集合。

16、在一种可能的实现方式中,第二中间代码中所述第j个子集中的变量为第二类型,m个子集中除第j个子集之外的其他m-1个子集中的变量为第一类型,n个集合中除第i个集合之外的其他n-1个集合中的变量为第一类型。

17、在第i个集合中的变量不能够全部由第一类型本文档来自技高网...

【技术保护点】

1.一种应用加速方法,其特征在于,包括:

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

3.根据权利要求2所述的方法,其特征在于,所述将所述第二代码中第一类型的变量中的部分或者全部转换为第二类型,包括:

4.根据权利要求3所述的方法,其特征在于,确定所述n个集合中第i个集合中的变量能够由所述第一类型转换为所述第二类型,包括:

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

6.根据权利要求5所述的方法,其特征在于,所述第二中间代码中所述第j个子集中的变量为第二类型,所述m个子集中除所述第j个子集之外的其他m-1个子集中的变量为第一类型,所述n个集合中除所述第i个集合之外的其他n-1个集合中的目标集合中的变量转换为第二类型的变量,所述目标集合是指确定的能够转换为第二类型的变量所属的集合。

7.根据权利要求5所述的方法,其特征在于,所述第二中间代码中所述第j个子集中的变量为第二类型,所述m个子集中除所述第j个子集之外的其他m-1个子集中的变量为第一类型,所述n个集合中除所述第i个集合之外的其他n-1个集合中的变量为第一类型。

8.根据权利要求1至7任一项所述的方法,其特征在于,根据所述第一代码中的各个算子和算子中所包括的变量的类型,将所述第一代码中的各个算子部署到不同的硬件芯片,包括:

9.一种应用加速装置,其特征在于,包括:

10.根据权利要求9所述的装置,其特征在于,所述装置还包括:

11.根据权利要求10所述的装置,其特征在于,所述转换模块具体用于:

12.根据权利要求11所述的装置,其特征在于,所述转换模块具体用于:

13.根据权利要求12所述的装置,其特征在于,所述转换模块还用于:

14.根据权利要求13所述的装置,其特征在于,所述第二中间代码中所述第j个子集中的变量为第二类型,所述m个子集中除所述第j个子集之外的其他m-1个子集中的变量为第一类型,所述n个集合中除所述第i个集合之外的其他n-1个集合中的目标集合中的变量转换为第二类型的变量,所述目标集合是指确定的能够转换为第二类型的变量所属的集合。

15.根据权利要求13所述的装置,其特征在于,所述第二中间代码中所述第j个子集中的变量为第二类型,所述m个子集中除所述第j个子集之外的其他m-1个子集中的变量为第一类型,所述n个集合中除所述第i个集合之外的其他n-1个集合中的变量为第一类型。

16.根据权利要求9至15任一项所述的装置,其特征在于,所述部署模块具体用于:

17.一种计算设备,其特征在于,包括处理器和存储器,所述存储器用于存储指令,所述处理器用于执行所述指令,当所述处理器执行所述指令时,执行如权利要求1至8中任一项所述的方法。

18.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,在被计算设备执行时,计算设备执行如权利要求1至8任一项所述的方法。

...

【技术特征摘要】

1.一种应用加速方法,其特征在于,包括:

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

3.根据权利要求2所述的方法,其特征在于,所述将所述第二代码中第一类型的变量中的部分或者全部转换为第二类型,包括:

4.根据权利要求3所述的方法,其特征在于,确定所述n个集合中第i个集合中的变量能够由所述第一类型转换为所述第二类型,包括:

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

6.根据权利要求5所述的方法,其特征在于,所述第二中间代码中所述第j个子集中的变量为第二类型,所述m个子集中除所述第j个子集之外的其他m-1个子集中的变量为第一类型,所述n个集合中除所述第i个集合之外的其他n-1个集合中的目标集合中的变量转换为第二类型的变量,所述目标集合是指确定的能够转换为第二类型的变量所属的集合。

7.根据权利要求5所述的方法,其特征在于,所述第二中间代码中所述第j个子集中的变量为第二类型,所述m个子集中除所述第j个子集之外的其他m-1个子集中的变量为第一类型,所述n个集合中除所述第i个集合之外的其他n-1个集合中的变量为第一类型。

8.根据权利要求1至7任一项所述的方法,其特征在于,根据所述第一代码中的各个算子和算子中所包括的变量的类型,将所述第一代码中的各个算子部署到不同的硬件芯片,包括:

9.一种应用加速装置,其特征在于,包括:

10.根据权利要求9所述的...

【专利技术属性】
技术研发人员:王楷
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1