System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及深度学习,具体而言,涉及一种动态张量处理方法、装置、电子设备及存储介质。
技术介绍
1、在深度学习领域中,传统深度学习模型需要处理的数据输入尺寸通常是不固定的,因此需要对于输入数据提前确定好尺寸,但是在智能化程度更高的模型推理场景中,无法提前确认实时输入数据的大小,这种在模型推理时无法确定形状大小或维度的输入数据为动态张量。因此,可以通过手工开发算子库的方式对模型中的算子进行优化,但是由于算法和硬件的更迭速度较快,算子库的开发和维护不仅成本高,而且开发周期长。
2、目前,针对上述问题,往往通过深度学习编译器来自动且高效地为动态张量提供高性能的张量程序。
3、但是,目前的深度学习编译器,在处理动态张量时需要产生较大的填充开销,使得张量程序性能较低,而即使提高动态张量的算子性能,也需要漫长的搜索张量程序的过程,编译时间较长,难以在较短的时间内为动态张量算子实现高性能的张量程序。
技术实现思路
1、有鉴于此,本申请的目的在于提供一种动态张量处理方法、装置、电子设备及存储介质,通过目标编译器对抽象计算单元进行初始化约束和并行度约束获取目标抽象计算单元,并确定目标抽象计算单元组合以生成目标张量程序,提高了张量程序的性能,减小了搜索空间,从而减少了搜索张量程序的时间,实现了在较短的时间内为动态张量算子搜索到高性能张量程序。
2、第一方面,本申请实施例提供了一种动态张量处理方法,所述方法包括:
3、基于目标编译器的内存架构特征对抽象计算单
4、基于预设的性能指标对所述第一抽象计算单元进行并行度约束,以获取目标抽象计算单元;
5、基于预设的组合搜索算法,根据所述目标抽象计算单元和预设的工作负载的主轴尺寸确定目标抽象计算单元组合;其中,所述工作负载由目标抽象计算单元组成;
6、根据所述目标抽象计算单元组合生成目标张量程序,并基于所述目标张量程序为输入的动态张量生成对应的高性能内核代码。
7、在一种可能的实施方式中,所述内存架构特征包括寄存器和共享内存,所述基于所述目标编译器的内存架构特征对抽象计算单的搜索空间进行初始化约束,包括:
8、基于预设的寄存器切分规则对所述寄存器进行划分,得到寄存器分块;
9、基于预设的多轴切分方式对所述共享内存进行分块;
10、基于预设的共享内存划分规则继续对所述共享内存进行划分,并遍历所述寄存器分块,以使得所述抽象计算单元在所述共享内存上完成分块。
11、在一种可能的实施方式中,所述基于预设的性能指标对所述第一抽象计算单元进行并行度约束,以获取高性能的目标抽象计算单元,包括:
12、基于预设的性能指标在所述第一抽象计算单元中筛选出符合针对所述性能指标设置的性能标准的第二抽象计算单元;其中,所述性能指标包括填充比率和资源利用率;
13、基于预设的并行度边界调整所述第二抽象计算单元,以获得符合目标并行度的第三抽象计算单元;
14、获取采用所述第三抽象计算单元的工作负载的计算资源饱和度和计算访存比,根据所述计算资源饱和度和所述计算访存比筛选出所述工作负载所需的目标抽象计算单元。
15、在一种可能的实施方式中,所述基于预设的评价指标在所述第一抽象计算单元中筛选出符合针对所述性能指标设置的性能标准的第二抽象计算单元,包括:
16、获取所述填充比率对应的填充阈值参数和所述资源利用率对应的开关参数,并为所述填充阈值参数和所述开关参数设置不同的取值范围;
17、根据预设的公式计算出填充阈值参数和开关参数,以得到所述第一抽象计算单元的填充比率和资源利用率;
18、基于所述填充比率和所述资源利用率筛选出符合针对所述性能指标设置的性能标准的第一抽象计算单元。
19、在一种可能的实施方式中,所述根据所述目标抽象计算单元组合生成目标张量程序,包括:
20、根据所述目标抽象计算单元组合生成第一张量程序;
21、对所述第一张量程序进行排序,并选择目标排名的第一张量程序为目标张量程序。
22、在一种可能的实施方式中,所述根据所述目标抽象计算单元组合生成第一张量程序,包括:
23、根据工作负载的主轴尺寸确定覆盖所述主轴尺寸的第一抽象计算单元组合,以根据所述第一抽象计算单元组合获得同主轴尺寸的第一张量程序;其中,所述第一抽象计算单元组合包括多个不同尺寸的目标抽象计算单元;
24、响应于所述工作负载的主轴尺寸被目标抽象计算单元覆盖,则根据所述目标抽象计算单元生成第二张量程序;
25、将所述第二张量程序和所述第一张量程序的性能进行对比,选择性能最好的张量程序作为最终的第一张量程序。
26、在一种可能的实施方式中,所述对所述第一张量程序进行排序,包括:
27、获取所述张量程序的排序指标;
28、基于所述第一张量程序的排序指标对所述第一张量程序进行加权计算后得到每个第一张量程序的排序分值,以对所述第一张量程序进行排序。
29、第二方面,本申请实施例还提供了一种动态张量处理装置,所述装置包括:
30、第一生成模块,用于基于目标编译器的内存架构特征对抽象计算单元的搜索空间进行初始化约束,以生成硬件对齐的第一抽象计算单元;
31、第一获取模块,用于基于预设的性能指标对所述第一抽象计算单元进行并行度约束,以获取目标抽象计算单元;
32、确定模块,用于基于预设的组合搜索算法,根据所述目标抽象计算单元和预设的工作负载的主轴尺寸确定目标抽象计算单元组合;其中,所述工作负载由目标抽象计算单元组成;
33、第二生成模块,用于根据所述目标抽象计算单元组合生成目标张量程序,并基于所述目标张量程序为输入的动态张量生成对应的高性能内核代码。
34、在一种可能的实施方式中,所述内存架构特征包括寄存器和共享内存,第一生成模块,具体用于:
35、基于预设的寄存器切分规则对所述寄存器进行划分,得到寄存器分块;
36、基于预设的多轴切分方式对所述共享内存进行分块;
37、基于预设的共享内存划分规则继续对所述共享内存进行划分,并遍历所述寄存器分块,以使得所述抽象计算单元在所述共享内存上完成分块。
38、在一种可能的实施方式中,所述获取模块,具体用于:
39、基于预设的性能指标在所述第一抽象计算单元中筛选出符合针对所述性能指标设置的性能标准的第二抽象计算单元;其中,所述性能指标包括填充比率和资源利用率;
40、基于预设的并行度边界调整所述第二抽象计算单元,以获得符合目标并行度的第三抽象计算单元;
41、获取采用所述第三抽象计算单元的工作负载的计算资源饱和度和计算访存比,根据所述计算资源饱和度和所述计算访存比筛选出所本文档来自技高网...
【技术保护点】
1.一种动态张量处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的处理方法,其特征在于,所述内存架构特征包括寄存器和共享内存,所述基于所述目标编译器的内存架构特征对抽象计算单元的搜索空间进行初始化约束,包括:
3.根据权利要求1所述的处理方法,其特征在于,所述基于预设的性能指标对所述第一抽象计算单元进行并行度约束,以获取高性能的目标抽象计算单元,包括:
4.根据权利要求3所述的处理方法,其特征在于,所述基于预设的评价指标在所述第一抽象计算单元中筛选出符合针对所述性能指标设置的性能标准的第二抽象计算单元,包括:
5.根据权利要求1所述的处理方法,其特征在于,所述根据所述目标抽象计算单元组合生成目标张量程序,包括:
6.根据权利要求5所述的处理方法,其特征在于,所述根据所述目标抽象计算单元组合生成第一张量程序,包括:
7.根据权利要求5所述的处理方法,其特征在于,所述对所述第一张量程序进行排序,包括:
8.一种动态张量处理装置,其特征在于,所述装置包括:
9.一种电子设备,其特
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任意一项所述的动态张量处理方法、装置、电子设备及存储介质的步骤。
...【技术特征摘要】
1.一种动态张量处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的处理方法,其特征在于,所述内存架构特征包括寄存器和共享内存,所述基于所述目标编译器的内存架构特征对抽象计算单元的搜索空间进行初始化约束,包括:
3.根据权利要求1所述的处理方法,其特征在于,所述基于预设的性能指标对所述第一抽象计算单元进行并行度约束,以获取高性能的目标抽象计算单元,包括:
4.根据权利要求3所述的处理方法,其特征在于,所述基于预设的评价指标在所述第一抽象计算单元中筛选出符合针对所述性能指标设置的性能标准的第二抽象计算单元,包括:
5.根据权利要求1所述的处理方法,其特征在于,所述根据所述目标抽象计算单元组合生成目标张量程序,包括:
6.根据权利要求5所述的处理方法,其特...
【专利技术属性】
技术研发人员:王锐,穆鹏宇,卫林泉,刘轶,钱德沛,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。