一种算子编译方法、装置和电子设备与流程

文档序号:31210249发布日期:2022-08-20 03:25阅读:95来源:国知局
一种算子编译方法、装置和电子设备与流程
一种算子编译方法、装置和电子设备
【技术领域】
1.本发明实施例涉及人工智能(artificial intelligence,ai)技术领域,尤其涉及一种算子编译方法、装置和电子设备。


背景技术:

2.随着人工智能领域的发展,神经网络模型也变得越来越复杂。在运行神经网络的过程中存在大量的算子编译,并且随着神经网络模型参数的增加,对算子编译的速度会显著影响神经网络模型的运行速度,因此,提高算子编译的效率是非常必要的。
3.目前在进行算子编译时,通常是基于硬件的固定算法和能耗模型实现理论上较优的编译过程,并且硬件和算法之间进行绑定,当改变硬件对算子编译时,需要对算法进行迭代,造成了灵活性差的问题;一个完善的能耗模型是非常难设计的,而且要经过多次迭代才能成熟,若能耗模型设计的不合理,在算子编译时有可能会造成计算单元利用率较低、带宽较高以及运算速度慢的问题。


技术实现要素:

4.有鉴于此,本发明实施例提供了一种算子编译方法、装置和电子设备,用以在实现算子编译时,提高灵活性,提高计算单元利用率,降低带宽以及加快运算速度。
5.第一方面,本发明实施例提供了一种算子编译方法,所述方法包括:
6.根据算子的类型获取所述算子对应的查找表;
7.根据所述算子的张量形状从所述查找表中查询出与所述张量形状对应的最优切分配置,其中,所述查找表包括张量形状和与所述张量形状对应的最优切分配置;
8.根据所述张量形状和与所述张量形状对应的最优切分配置编译所述算子,生成第一数据文件。
9.可选地,所述算子对应于多个设定张量形状;所述根据算子的类型获取所述算子对应的查找表之前,还包括:
10.根据每个设定张量形状和生成的每个设定张量形状对应的最优切分配置,对所述算子对应的查找表进行更新。
11.可选地,所述根据每个设定张量形状和生成的每个设定张量形状对应的最优切分配置,对所述算子对应的查找表进行更新,包括:
12.根据第i个设定张量形状,生成第i个设定张量形状对应的最优切分配置;
13.根据所述第i个设定张量形状和与所述第i个设定张量形状对应的最优切分配置更新所述算子对应的查找表;
14.判断所述第i个设定张量形状的序号是否小于或等于多个设定张量形状的总数;
15.若判断出所述第i个设定张量形状的序号小于多个设定张量形状的总数,将第i+1个设定张量形状作为第i个设定张量形状,并执行所述根据第i个设定张量形状,生成第i个设定张量形状对应的最优切分配置的步骤,i为正整数。
16.可选地,所述根据第i个设定张量形状,生成第i个设定张量形状对应的最优切分配置,包括:
17.根据第i个设定张量形状生成所述第i个设定张量形状对应的多个切分配置;
18.根据所述第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,确定所述第i个设定张量形状对应的最优切分配置,j为正整数。
19.可选地,所述根据每个设定张量形状和生成的每个设定张量形状对应的最优切分配置,对所述算子对应的查找表进行更新之前,还包括:
20.在所述算子的张量的多个维度上,根据设置的每个所述维度的上限和设置的每个所述维度对应的维度步长,生成多个所述设定张量形状。
21.可选地,所述根据第i个设定张量形状生成所述第i个设定张量形状对应的多个切分配置,包括:
22.在所述第i个设定张量形状的不同维度上,根据设置的所述不同维度对应的维度切分阈值,对所述第i个设定张量形状进行切分,生成第i个设定张量形状对应的多个切分配置。
23.可选地,所述根据所述第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,确定所述第i个设定张量形状对应的最优切分配置,包括:
24.根据第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,确定出最优切分配置;
25.判断所述第j个切分配置的序号是否小于或等于所述第i个设定张量形状对应的多个切分配置的总数;
26.若判断出所述第j个切分配置的序号小于所述第i个设定张量形状对应的多个切分配置的总数,则将第j+1个切分配置作为第j个切分配置,并执行所述根据第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,确定出最优切分配置的步骤。
27.可选地,所述根据第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,确定出最优切分配置,包括:
28.根据第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,获取所述第j个切分配置对应的综合性能数值;
29.判断所述第j个切分配置对应的综合性能数值是否优于第j-1个切分配置对应的综合性能数值;
30.若判断出所述第j个切分配置对应的综合性能数值优于所述第j-1个切分配置对应的综合性能数值,则将所述第j个切分配置设置为最优切分配置;若判断出所述第j个切分配置对应的综合性能数值未优于所述第j-1个切分配置对应的综合性能数值,则将所述第j-1个切分配置作为最优切分配置。
31.可选地,所述根据第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,获取所述第j个切分配置对应的综合性能数值,包括:
32.根据所述第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置编译所述算子,生成第二数据文件;
33.将所述第二数据文件发送到移动终端;
34.接收所述移动终端运行所述第二数据文件获取并发送的多个性能数值;
35.对多个所述性能数值进行加权计算,生成所述第j个切分配置对应的综合性能数值。
36.可选地,所述根据第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,获取所述第j个切分配置对应的综合性能数值,包括:
37.根据所述第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置编译所述算子,生成第二数据文件;
38.运行所述第二数据文件以获取多个性能数值;
39.对多个所述性能数值进行加权计算,生成所述第j个切分配置对应的综合性能数值。
40.可选地,还包括:
41.若判断出所述第j个切分配置的序号等于所述第i个设定张量形状对应的多个切分配置的总数时,则执行所述根据所述第i个设定张量形状和与所述第i个设定张量形状对应的最优切分配置更新所述算子对应的查找表的步骤。
42.第二方面,本发明实施例提供了一种算子编译装置,所述装置包括:
43.获取模块,用于根据算子的类型获取所述算子对应的查找表;
44.查询模块,用于根据所述算子的张量形状从所述查找表中查询出与所述张量形状对应的最优切分配置,其中,所述查找表包括张量形状和与所述张量形状对应的最优切分配置;
45.生成模块,用于根据所述张量形状和与所述张量形状对应的最优切分配置编译所述算子,生成第一数据文件。
46.可选地,还包括:更新模块;
47.所述更新模块,用于根据每个设定张量形状和生成的每个设定张量形状对应的最优切分配置,对所述算子对应的查找表进行更新。
48.第三方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行第一方面或第一方面任一可能的实现方式中的算子编译方法。
49.第四方面,本发明实施例提供一种电子设备,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述设备执行时,使得所述设备执行第一方面或第一方面任一可能的实现方式中的算子编译方法。
50.本发明实施例提供的技术方案中,电子设备根据算子的类型获取算子对应的查找表,根据算子的张量形状从查找表中查询出与张量形状对应的最优切分配置,其中,查找表包括张量形状和与张量形状对应的最优切分配置,电子设备根据张量形状和与张量形状对应的最优切分配置编译算子,生成第一数据文件,在算子编译的过程中,通过获取算子对应的查找表得出最优切分配置并且通过最优切分配置编译算子,从而在实现算子编译时,提高了灵活性、提高了计算单元利用率,降低了带宽以及加快了运算速度。
【附图说明】
51.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附
图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
52.图1为本发明实施例提供的一种算子编译方法的流程图;
53.图2为本发明实施例提供的一种查找表更新方法的流程图;
54.图3为本发明实施例提供的一种确定最优切分配置方法的流程图;
55.图4为本发明实施例提供的另一种确定最优切分配置方法的流程图;
56.图5为本发明实施例提供的另一种确定最优切分配置方法的流程图;
57.图6为本发明实施例提供的一种获取综合性能数值方法的流程图;
58.图7为本发明实施例提供的另一种获取综合性能数值方法的流程图;
59.图8为本发明实施例提供的一种算子编译装置的结构示意图;
60.图9为本发明实施例提供的一种电子设备的示意图。
【具体实施方式】
61.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
62.应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
63.在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
64.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,甲和/或乙,可以表示:单独存在甲,同时存在甲和乙,单独存在乙这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
65.取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
66.图1为本发明实施例提供的一种算子编译方法的流程图,如图1所示,该方法包括:
67.步骤11、根据算子的类型获取算子对应的查找表。
68.本发明实施例的各个步骤可以由电子设备执行。其中,电子设备包括但不限于手机、平板电脑、便携式pc、台式机、可穿戴设备等。
69.本发明实施例可通过各种神经网络后端编译器实现,其中,神经网络后端编译器为安装于电子设备中的软件。
70.本发明实施例,算子为神经网络计算的基本单元,例如,算子可包括卷积、池化、激活或归一化等。以算子为卷积为例,按类型划分,算子可包括二维卷积或三维卷积等。不同类型的算子对应于不同的查找表,例如,算子的类型包括二维卷积时,电子设备根据二维卷
积获取二维卷积对应的查找表。
71.步骤12、根据算子的张量形状从查找表中查询出与张量形状对应的最优切分配置,其中,查找表包括张量形状和与张量形状对应的最优切分配置。
72.每个张量形状和每个张量形状对应的最优切分配置可以以键值对的形式保存于查找表。例如,算子的张量形状为[100,100,100,100]时,电子设备从查找表中获取该张量形状对应的最优切分配置为“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”。
[0073]
步骤13、根据张量形状和与张量形状对应的最优切分配置编译算子,生成第一数据文件。
[0074]
电子设备根据张量形状和与张量形状对应的最优切分配置编译算子的参数,生成算子参数结构体;电子设备对算子参数结构体进行序列化处理,生成第一数据文件,其中,第一数据文件的类型为二进制文件;第一数据文件包括但不限于二进制的权重数据。
[0075]
本发明实施例中,步骤11之前还包括:
[0076]
步骤10、根据每个设定张量形状和生成的每个设定张量形状对应的最优切分配置,对算子对应的查找表进行更新。
[0077]
本发明实施例中,步骤10之前,还包括:
[0078]
在算子的张量的多个维度上,电子设备根据设置的每个维度的上限和设置的每个维度对应的维度步长,生成多个设定张量形状。例如,算子的张量由批(batch,n)、高度(height,h)、宽度(width,w)和通道(channel,c)四个维度构成,电子设备将n、h、w和c四个维度的上限均设置为100,且将每个维度的对应的维度步长设置为10,则电子设备可根据设置的n、h、w和c中每个维度的上限100以及每个维度对应的维度步长10,生成多个设定张量形状,例如,生成的多个设定张量形状包括[10,10,10,10]、[20,10,10,10]、[10,20,10,10]、[10,10,20,10]、

[100,100,100,100]。
[0079]
每个算子可对应于多个设定张量形状,电子设备根据每个设定张量形状均可以生成该设定张量形状对应的多个切分配置。电子设备从每个设定张量形状对应的多个切分配置中获取最优切分配置,将每个设定张量形状和每个设定张量形状对应的最优切分配置保存至算子对应的查找表中,以实现对查找表的更新。
[0080]
例如,算子的多个设定张量形状包括[10,10,10,10]、[20,10,10,10]、[10,20,10,10]、[10,10,20,10]、

[100,100,100,100]。例如,当设定张量形状为[100,100,100,100]时,[100,100,100,100]对应的多个切分配置包括:“从h维度切分为2个张量形状,每个张量形状为[100,50,100,100]”、“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”、“从w维度切分为2个张量形状,每个张量形状为[100,100,50,100]”、“从w维度切分为4个张量形状,每个张量形状为[100,100,25,100]”、从c维度切分为2个张量形状,每个张量形状为[100,100,100,50]以及“从c维度切分为4个张量形状,每个张量形状为[100,100,100,25]”。
[0081]
例如,在[100,100,100,100]的h维度上,根据h维度对应的维度切分阈值,对[100,100,100,100]的h维度进行切分,生成[100,100,100,100]对应的多个切分配置。例如,维度切分阈值为2时,切分配置包括“从h维度切分为2个张量形状,每个张量形状为[100,50,100,100]”;又例如,维度切分阈值为4时,切分配置包括“从h维度切分为4个张量形状,每个
张量形状为[100,25,100,100]”。
[0082]
又例如,在[100,100,100,100]的w维度上,根据w维度对应的维度切分阈值,对[100,100,100,100]的w维度进行切分,生成[100,100,100,100]对应的多个切分配置。例如,维度切分阈值为2时,切分配置包括“从w维度切分为2个张量形状,每个张量形状为[100,100,50,100]”;又例如,维度切分阈值为4时,切分配置包括“从w维度切分为4个张量形状,每个张量形状为[100,100,25,100]”。
[0083]
又例如,在[100,100,100,100]的c维度上,根据c维度对应的维度切分阈值,对[100,100,100,100]的c维度进行切分,生成[100,100,100,100]对应的多个切分配置。例如,维度切分阈值为2时,切分配置包括“从c维度切分为2个张量形状,每个张量形状为[100,100,100,50]”;又例如,维度切分阈值为4时,切分配置包括“从c维度切分为4个张量形状,每个张量形状为[100,100,100,25]”。
[0084]
综上所述,生成的多个切分配置可包括“从h维度切分为2个张量形状,每个张量形状为[100,50,100,100]”、“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”、“从w维度切分为2个张量形状,每个张量形状为[100,100,50,100]”、“从w维度切分为4个张量形状,每个张量形状为[100,100,25,100]”、“从c维度切分为2个张量形状,每个张量形状为[100,100,100,50]”以及“从c维度切分为4个张量形状,每个张量形状为[100,100,100,25]”。
[0085]
例如,张量形状[100,100,100,100]对应的最优切分配置为“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”时,将[100,100,100,100]和对应的“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”保存至算子对应的查找表中。
[0086]
本发明实施例中,电子设备根据算子的类型获取算子对应的查找表,根据算子的张量形状从查找表中查询出与张量形状对应的最优切分配置,并根据张量形状和与张量形状对应的最优切分配置编译算子,生成第一数据文件,在算子编译的过程中,通过获取算子对应的查找表得出最优切分配置并且通过最优切分配置编译算子,从而在实现算子编译时,提高了灵活性、提高了计算单元利用率,降低了带宽以及加快了运算速度。在算子编译时,采取获取查找表的方式编译算子,实现了自动适配后端硬件的变化,当后端硬件发生改变时不会对算子编译的过程造成影响。
[0087]
图2为本发明实施例提供的一种查找表更新方法的流程图,如图2所示,步骤10具体包括:
[0088]
步骤101、根据第i个设定张量形状,生成第i个设定张量形状对应的最优切分配置。
[0089]
例如,当i等于1,第1个设定张量形状为[10,10,10,10]时,电子设备根据[10,10,10,10]生成[10,10,10,10]对应的最优切分配置,最优切分配置为:“从c维度切分为2个张量形状,每个张量形状为[10,10,10,5]”。又例如,当i等于100,第100个设定张量形状为[100,100,100,100]时,电子设备根据[100,100,100,100]生成[100,100,100,100]对应的最优切分配置,最优切分配置为“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”。i为正整数,例如,i=1、2、

n。
[0090]
图3为本发明实施例提供的一种确定最优切分配置方法的流程图,如图3所示,步骤101具体包括:
[0091]
步骤1011、根据第i个设定张量形状生成第i个设定张量形状对应的多个切分配置。
[0092]
在第i个设定张量形状的不同维度上,电子设备根据设置的不同维度对应的维度切分阈值,对第i个设定张量形状进行切分,生成第i个设定张量形状对应的多个切分配置。在算子编译的过程中,为了实现多处理器架构下的高效推理运算,会对算子的张量形状进行数据无关的切分,切分后的张量形状可以独立参与运算,使得多个处理器可以同时对算子进行并发运算。
[0093]
在算子编译的过程中,通常从h、w和c这三个维度将设定张量形状切分成若干大小相等的块,其中,若干大小相等的块可以为切分配置。电子设备根据设置的不同维度对应的维度切分阈值对设定张量形状进行切分,同一设定张量形状可以生成几十甚至上百个切分配置,并且不同的切分配置会影响算子编译的效率。
[0094]
例如,当i等于100,第100个设定张量形状为[100,100,100,100]时,设置[100,100,100,100]的h、w和c三个维度的维度切分阈值的上限均为4,维度切分阈值的下限均为1,电子设备根据h、w或c的维度切分阈值对[100,100,100,100]进行切分,生成[100,100,100,100]对应的多个切分配置。其中,多个切分配置包括:“从h维度切分为2个张量形状,每个张量形状为[100,50,100,100]”、“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”、“从w维度切分为2个张量形状,每个张量形状为[100,100,50,100]”、“从w维度切分为4个张量形状,每个张量形状为[100,100,25,100]”、从c维度切分为2个张量形状,每个张量形状为[100,100,100,50]以及“从c维度切分为4个张量形状,每个张量形状为[100,100,100,25]”。
[0095]
例如,在[100,100,100,100]的h维度上,电子设备将h维度的维度切分阈值的上限设置为4,且将维度切分阈值的下限设置为1,则电子设备根据设置的h维度的维度切分阈值的上限4和维度切分阈值的下限1,对[100,100,100,100]的h维度进行切分,生成[100,100,100,100]对应的多个切分配置,多个切分配置包括“从h维度切分为2个张量形状,每个张量形状为[100,50,100,100]”、“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”。又例如,在[100,100,100,100]的c维度上,电子设备将c维度的维度切分阈值的上限设置为4,且将维度切分阈值的下限设置为1,则电子设备根据设置的c维度的维度切分阈值的上限4和维度切分阈值的下限1,对[100,100,100,100]的c维度进行切分,生成[100,100,100,100]对应的多个切分配置,多个切分配置包括“从c维度切分为2个张量形状,每个张量形状为[100,100,100,50]”、“从c维度切分为4个张量形状,每个张量形状为[100,100,100,25]”。
[0096]
步骤1012、根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置,确定第i个设定张量形状对应的最优切分配置,j为正整数。
[0097]
电子设备根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置获取第j个切分配置对应的综合性能数值,将第j个切分配置对应的综合性能数值与第j-1个切分配置对应的综合性能数值进行比较,根据比较结果确定第i个设定张量形状对应的最优切分配置。例如,当i等于100,j等于6时,电子设备根据第100个设定张量形状和与第100个设定张量形状对应的第6个切分配置获取第6个切分配置对应的综合性能数值,将第6个切分配置对应的综合性能数值与第5个切分配置对应的综合性能数值进行比较,根据比
较结果确定第100个设定张量形状对应的最优切分配置。
[0098]
步骤102、根据第i个设定张量形状和与第i个设定张量形状对应的最优切分配置更新算子对应的查找表。
[0099]
电子设备将第i个设定张量形状和与第i个设定张量形状对应的最优切分配置保存至算子对应的查找表中,以实现对查找表的更新。例如,当i等于1,第1个设定张量形状为[10,10,10,10]时,[10,10,10,10]对应的最优切分配置为“从c维度切分为2个张量形状,每个张量形状为[10,10,10,5]”,将[10,10,10,10]和对应的“从c维度切分为2个张量形状,每个张量形状为[10,10,10,5]”保存至算子对应的查找表中。又例如,当i等于100,第100个设定张量形状为[100,100,100,100]时,[100,100,100,100]对应的最优切分配置为“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”,将[100,100,100,100]和对应的“从h维度切分为4个张量形状,每个张量形状为[100,25,100,100]”保存至算子对应的查找表中。
[0100]
步骤103、判断第i个设定张量形状的序号是否小于或等于多个设定张量形状的总数,若小于,则执行步骤104;若等于,则流程结束。
[0101]
电子设备若判断出第i个设定张量形状的序号小于多个设定张量形状的总数,表明需要确定其余的设定张量形状对应的最优切分配置,则执行步骤104;电子设备若判断出第i个设定张量形状的序号等于多个设定张量形状的总数,表明已经遍历完所有的设定张量形状并已确定每个设定张量形状对应的最优切分配置,完成对查找表的更新,流程结束。例如,多个设定张量形状的总数为100,当i等于66,第66个设定张量形状的序号为66时,此时,第66个设定张量形状的序号小于多个设定张量形状的总数,表明需要确定其余的设定张量形状对应的最优切分配置,则执行步骤104;当i等于100,第100个设定张量形状的序号为100时,此时,第100个设定张量形状的序号等于多个设定张量形状的总数,表明已经遍历完所有的设定张量形状并已确定每个设定张量形状对应的最优切分配置,完成对查找表的更新,流程结束。
[0102]
步骤104、将第i+1个设定张量形状作为第i个设定张量形状,并执行步骤101。
[0103]
当电子设备判断出第i个设定张量形状的序号小于多个设定张量形状的总数,表明需要确定其余的设定张量形状对应的最优切分配置,则将第i+1个设定张量形状作为第i个设定张量形状,并根据第i个设定张量形状生成第i个设定张量形状对应的最优切分配置。例如,当i等于2,第2个设定张量形状的序号为2时,此时,第2个设定张量形状的序号小于多个设定张量形状的总数,则将第3个设定张量形状作为第i个设定张量形状,即i=3,并执行步骤101中的根据第3个设定张量形状生成第3个设定张量形状对应的最优切分配置。
[0104]
本发明实施例中,电子设备根据第i个设定张量形状生成第i个设定张量形状对应的最优切分配置,并根据第i个设定张量形状和与第i个设定张量形状对应的最优切分配置更新算子对应的查找表,在对查找表更新的过程中,电子设备对算子的张量形状进行数据无关的切分,切分后的张量形状可以独立参与运算,并且通过确定出最优切分配置,实现了高效的并发运算。
[0105]
图4为本发明实施例提供的另一种确定最优切分配置方法的流程图,如图4所示,步骤1112具体包括:
[0106]
步骤s1、根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置,
确定出最优切分配置。
[0107]
电子设备根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置获取第j个切分配置对应的综合性能数值,将第j个切分配置对应的综合性能数值与第j-1个切分配置对应的综合性能数值进行比较,根据比较结果确定出最优切分配置。例如,当i等于8,j等于6时,电子设备根据第8个设定张量形状和与第8个设定张量形状对应的第6个切分配置获取第6个切分配置对应的综合性能数值,将第6个切分配置对应的综合性能数值与第5个切分配置对应的综合性能数值进行比较,根据比较结果确定出第8个设定张量形状对应的最优切分配置。
[0108]
步骤s2、判断第j个切分配置的序号是否小于或等于第i个设定张量形状对应的多个切分配置的总数,若小于,则执行步骤s3;若等于,则执行步骤102。
[0109]
电子设备若判断出第j个切分配置的序号小于第i个设定张量形状对应的多个切分配置的总数,表明需要确定第i个设定张量形状对应的其余的切分配置是否为该张量形状的最优切分配置,则执行步骤s3;电子设备若判断出第j个切分配置的序号等于第i个设定张量形状对应的多个切分配置的总数,表明已经遍历完第i个设定张量形状对应的所有切分配置,并确定出该设定张量形状对应的最优切分配置,则执行步骤102。例如,当i等于3,j等于6时,第3个设定张量形状对应的多个切分配置的总数为9,第6个切分配置的序号为6,此时,第6个切分配置的序号小于多个切分配置的总数,表明需要确定第3个设定张量形状对应的其余的切分配置是否为该张量形状的最优切分配置,则执行步骤s3;当j等于9时,第9个切分配置的序号为9,此时,第9个切分配置的序号等于多个切分配置的总数,表明已经遍历完第3个设定张量形状对应的所有切分配置,并确定出该张量形状对应的最优切分配置,则执行步骤102。
[0110]
步骤s3、将第j+1个切分配置作为第j个切分配置,并执行步骤s1。
[0111]
当电子设备判断出第j个切分配置的序号小于第i个设定张量形状对应的多个切分配置的总数时,将第j+1个切分配置作为第j个切分配置,并根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置,确定出最优切分配置。例如,当i等于3,j等于2时,第2个切分配置的序号为2,第3个设定张量形状对应的多个切分配置的总数为9,此时,第2个切分配置的序号小于多个切分配置的总数,将第3个切分配置作为第j个切分配置,即j=3,并执行步骤s1中的根据第3个设定张量形状和与第3个设定张量形状对应的第3个切分配置,确定出最优切分配置。
[0112]
图5为本发明实施例提供的另一种确定最优切分配置方法的流程图,如图5所示,步骤s1具体包括:
[0113]
步骤s11、根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置,获取第j个切分配置对应的综合性能数值。
[0114]
例如,当i等于100,j等于6,电子设备根据第100个设定张量形状和与第100个设定张量形状对应的第6个切分配置,获取第6个切分配置对应的综合性能数值。第100个设定张量形状为[100,100,100,100],第6个切分配置为“从c维度切分为4个张量形状,每个张量形状为[100,100,100,25]”时,电子设备根据[100,100,100,100]和“从c维度切分为4个张量形状,每个张量形状为[100,100,100,25]”,获取第6个切分配置对应的综合性能数值。i为正整数,例如,i=1、2、

n)。j为正整数,例如,j=1、2、

m。
[0115]
步骤s12、判断第j个切分配置对应的综合性能数值是否优于第j-1个切分配置对应的综合性能数值,若是,则执行步骤s13;若否,则执行步骤s14。
[0116]
电子设备若判断出第j个切分配置对应的综合性能数值优于第j-1个切分配置对应的综合性能数值,表明第j个切分配置优于第j-1个切分配置,则执行步骤s13;电子设备若判断出第j个切分配置对应的综合性能数值未优于第j-1个切分配置对应的综合性能数值,表明第j-1个切分配置优于第j个切分配置,则执行步骤s14。例如,当j等于6时,第6个切分配置对应的综合性能数值为3,第5个切分配置对应的综合性能数值为7,此时,第6个切分配置对应的综合性能数值优于第5个切分配置对应的综合性能数值,表明第6个切分配置优于第5个切分配置,则执行步骤s13;当第6个切分配置对应的综合性能数值为9,第5个切分配置对应的综合性能数值为7,此时,第6个切分配置对应的综合性能数值未优于第5个切分配置对应的综合性能数值,表明第5个切分配置优于第6个切分配置,则执行步骤s14。
[0117]
步骤s13、将第j个切分配置设置为最优切分配置。
[0118]
当电子设备判断出第j个切分配置对应的综合性能数值优于第j-1个切分配置对应的综合性能数值时,将第j个切分配置设置为最优切分配置。例如,当j等于6时,第6个切分配置对应的综合性能数值为3,第5个切分配置对应的综合性能数值为7,此时,电子设备判断出第6个切分配置对应的综合性能数值优于第5个切分配置对应的综合性能数值,将第6个切分配置设置为最优切分配置。
[0119]
步骤s14、将第j-1个切分配置作为最优切分配置。
[0120]
当电子设备判断出第j个切分配置对应的综合性能数值未优于第j-1个切分配置对应的综合性能数值时,将第j-1个切分配置设置为最优切分配置。例如,当j等于6时,当第6个切分配置对应的综合性能数值为9,第5个切分配置对应的综合性能数值为7,此时,电子设备判断出第6个切分配置对应的综合性能数值未优于第5个切分配置对应的综合性能数值,将第5个切分配置设置为最优切分配置。
[0121]
图6为本发明实施例中提供的一种获取综合性能数值方法的流程图,如图6所示,作为一种可选方案,步骤s11具体可包括:
[0122]
步骤s111、根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置编译算子,生成第二数据文件。
[0123]
电子设备根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置编译算子的参数,生成算子参数结构体;电子设备对算子参数结构体进行序列化处理,生成第二数据文件,其中,第二数据文件的类型为二进制文件;第二数据文件包括但不限于二进制的权重数据。
[0124]
步骤s112、将第二数据文件发送到移动终端。
[0125]
本发明实施例中,移动终端包括但不限于手机、可穿戴设备等。
[0126]
当电子设备为平板电脑、便携式pc或台式机时,电子设备通过通用串行总线(universal serial bus,usb)接口将第二数据文件发送到移动终端。
[0127]
步骤s113、接收移动终端运行第二数据文件获取并发送的多个性能数值。
[0128]
多个性能数值包括但不限于计算时间和带宽数据。电子设备通过usb接口接收移动终端获取并发送的计算时间和带宽数据。
[0129]
本发明实施例中,移动终端通过usb接口接收到电子设备发送的第二数据文件后,
将第二数据文件保存至本地,移动终端的处理器运行第二数据文件,移动终端通过运行日志获取多个性能数值。
[0130]
步骤s114、对多个性能数值进行加权计算,生成第j个切分配置对应的综合性能数值。
[0131]
本发明实施例中,根据用户的需求可以设置每个性能数值对应的权重值。电子设备根据设置的每个性能数值对应的权重值对每个性能数值进行加权计算,生成第j个切分配置对应的综合性能数值。
[0132]
电子设备根据计算时间和该计算时间对应的权重值以及带宽数据和该带宽数据对应的权重值进行加权计算,生成第j个切分配置对应的综合性能数值。例如,当用户需求计算时间长且带宽低的切分配置时,将计算时间的权重值设置为0.5且将带宽数据的权重值设置为0.1,当j等于2时,第2个切分配置的计算时间为10秒,带宽数据为2兆/秒,此时,第2个切分配置对应的综合性能数值为0.5*10+0.1*2=5.2。又例如,当用户需求计算时间短且带宽高的切分配置时,将计算时间的权重值设置为0.3且将带宽数据的权重值设置为0.6,当j等于2时,第2个切分配置的计算时间为10秒,带宽数据为2兆/秒,此时,第2个切分配置对应的综合性能数值为0.3*10+0.6*2=4.2。
[0133]
图7为本发明实施例中提供的另一种获取综合性能数值方法的流程图,如图7所示,作为另一种可选方案,步骤s11具体可包括:
[0134]
步骤s115、根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置编译算子,生成第二数据文件。
[0135]
电子设备根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置编译算子的参数,生成算子参数结构体;电子设备对算子参数结构体进行序列化处理,生成第二数据文件,其中,第二数据文件的类型为二进制文件;第二数据文件包括但不限于二进制的权重数据。
[0136]
步骤s116、运行第二数据文件以获取多个性能数值。
[0137]
多个性能数值包括但不限于计算时间和带宽数据。当电子设备为手机或可穿戴设备时,电子设备将第二数据文件保存至本地,电子设备的处理器运行第二数据文件,电子设备通过运行日志获取多个性能数值。
[0138]
步骤s117、对多个性能数值进行加权计算,生成第j个切分配置对应的综合性能数值。
[0139]
电子设备根据设置的每个性能数值对应的权重值对每个性能数值进行加权计算,生成第j个切分配置对应的综合性能数值。电子设备根据计算时间和该计算时间对应的权重值以及带宽数据和该带宽数据对应的权重值进行加权计算,生成第j个切分配置对应的综合性能数值。例如,当用户需求计算时间长且带宽低的切分配置时,将计算时间的权重值设置为0.5且将带宽数据的权重值设置为0.1,当j等于2时,第2个切分配置的计算时间为10秒,带宽数据为2兆/秒,此时,第2个切分配置对应的综合性能数值为0.5*10+0.1*2=5.2。又例如,当用户需求计算时间短且带宽高的切分配置时,将计算时间的权重值设置为0.3且将带宽数据的权重值设置为0.6,当j等于2时,第2个切分配置的计算时间为10秒,带宽数据为2兆/秒,此时,第2个切分配置对应的综合性能数值为0.3*10+0.6*2=4.2。
[0140]
需要说明的是:针对同一算子,每个性能数值对应的权重值是固定的。
[0141]
作为一种可选方案,当i等于1,j等于1时,第1个设定张量形状的序号为1且第1个设定张量形状对应的第1个切分配置的序号为1,此时,根据第1个设定张量形状和与第1个设定张量形状对应的第1个切分配置生成查找表,此时,查找表中保存了第1个设定张量形状和与第1个设定张量形状对应的第1个切分配置。
[0142]
本发明实施例中,电子设备进行算子编译时,若存在多种类型的算子,则电子设备可生成每种类型的算子对应的查找表。电子设备可根据步骤s10对不同类型的算子对应的查找表进行更新。
[0143]
本发明实施例提供的算子编译方法的技术方案中,电子设备根据每个设定张量形状和生成的每个设定张量形状对应的最优切分配置,对算子对应的查找表进行更新,根据算子的类型获取算子对应的查找表,并根据算子的张量形状从查找表中查询出与张量形状对应的最优切分配置,其中,查找表包括张量形状和与张量形状对应的最优切分配置,电子设备根据张量形状和与张量形状对应的最优切分配置编译算子,生成第一数据文件,在算子编译的之前,对查找表进行更新时,电子设备对算子的张量形状进行数据无关的切分,切分后的张量形状可以独立参与运算,并且确定出最优切分配置;在算子编译的过程中,通过获取算子对应的查找表得出最优切分配置并且通过最优切分配置编译算子,从而在实现算子编译时,提高了灵活性、提高了计算单元利用率,降低了带宽,并且高效的并发运算加快了运算速度。在算子编译时,采取获取查找表的方式编译算子,实现了自动适配后端硬件的变化,当后端硬件发生改变时不会对算子编译的过程造成影响。
[0144]
图8为本发明实施例提供的一种算子编译装置的结构示意图,如图8所示,该装置包括:获取模块11、查询模块12和生成模块13。
[0145]
获取模块11和查询模块12连接,查询模块12和生成模块13连接。
[0146]
获取模块11用于根据算子的类型获取算子对应的查找表;查询模块12用于根据算子的张量形状从查找表中查询出与张量形状对应的最优切分配置,其中,查找表包括张量形状和与张量形状对应的最优切分配置;生成模块13用于根据张量形状和与张量形状对应的最优切分配置编译算子,生成第一数据文件。
[0147]
本发明实施例中,该装置还包括:更新模块14。
[0148]
更新模块14用于根据每个设定张量形状和生成的每个设定张量形状对应的最优切分配置,对算子对应的查找表进行更新。
[0149]
本发明实施例中,更新模块14包括:生成子模块141、更新子模块142、判断子模块143、设置子模块144。
[0150]
生成子模块141用于根据第i个设定张量形状,生成第i个设定张量形状对应的最优切分配置;更新子模块142用于根据第i个设定张量形状和与第i个设定张量形状对应的最优切分配置更新算子对应的查找表;判断子模块143用于判断第i个设定张量形状的序号是否小于或等于多个设定张量形状的总数;设置子模块144用于若判断子模块143判断出第i个设定张量形状的序号小于多个设定张量形状的总数,将第i+1个设定张量形状作为第i个设定张量形状,并触发生成子模块141执行根据第i个设定张量形状,生成第i个设定张量形状对应的最优切分配置的步骤,i为正整数。
[0151]
本发明实施例中,生成子模块141具体用于根据第i个设定张量形状生成第i个设定张量形状对应的多个切分配置;根据第i个设定张量形状和与第i个设定张量形状对应的
第j个切分配置,确定第i个设定张量形状对应的最优切分配置,j为正整数。
[0152]
本发明实施例中,生成模块13还用于在算子的张量的多个维度上,根据设置的每个维度的上限和设置的每个维度对应的维度步长,生成多个设定张量形状。
[0153]
本发明实施例中,生成子模块141具体用于在第i个设定张量形状的不同维度上,根据设置的不同维度对应的维度切分阈值,对第i个设定张量形状进行切分,生成第i个设定张量形状对应的多个切分配置。
[0154]
本发明实施例中,生成子模块141具体用于根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置,确定出最优切分配置;判断第j个切分配置的序号是否小于或等于第i个设定张量形状对应的多个切分配置的总数;若判断出第j个切分配置的序号小于第i个设定张量形状对应的多个切分配置的总数,则将第j+1个切分配置作为第j个切分配置,并执行根据第i个设定张量形状和与所述第i个设定张量形状对应的第j个切分配置,确定出最优切分配置的步骤。
[0155]
本发明实施例中,生成子模块141具体用于根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置,获取第j个切分配置对应的综合性能数值;判断第j个切分配置对应的综合性能数值是否优于第j-1个切分配置对应的综合性能数值;若判断出第j个切分配置对应的综合性能数值优于第j-1个切分配置对应的综合性能数值,则将第j个切分配置设置为最优切分配置;若判断出第j个切分配置对应的综合性能数值未优于第j-1个切分配置对应的综合性能数值,则将第j-1个切分配置作为最优切分配置。
[0156]
本发明实施例中,生成子模块141具体用于根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置编译算子,生成第二数据文件;将第二数据文件发送到移动终端;接收移动终端运行第二数据文件获取并发送的多个性能数值;对多个性能数值进行加权计算,生成第j个切分配置对应的综合性能数值。
[0157]
本发明实施例中,生成子模块141具体用于根据第i个设定张量形状和与第i个设定张量形状对应的第j个切分配置编译算子,生成第二数据文件;运行第二数据文件以获取多个性能数值;对多个性能数值进行加权计算,生成第j个切分配置对应的综合性能数值。
[0158]
本发明实施例中,生成子模块141具体用于若判断出第j个切分配置的序号等于第i个设定张量形状对应的多个切分配置的总数时,则触发更新子模块142执行根据第i个设定张量形状和与第i个设定张量形状对应的最优切分配置更新算子对应的查找表的步骤。
[0159]
本发明实施例提供的算子编译装置的技术方案中,电子设备根据算子的类型获取算子对应的查找表,根据算子的张量形状从查找表中查询出与张量形状对应的最优切分配置,其中,查找表包括张量形状和与张量形状对应的最优切分配置,电子设备根据张量形状和与张量形状对应的最优切分配置编译算子,生成第一数据文件,在算子编译的过程中,通过获取算子对应的查找表得出最优切分配置并且通过最优切分配置编译算子,,从而在实现算子编译时,提高了灵活性、提高了计算单元利用率,降低了带宽以及加快了运算速度。
[0160]
图9为本发明实施例提供的一种电子设备的示意图,如图9所示,电子设备21包括:处理器211、存储器212以及存储在存储器212中并可在处理器211上运行的计算机程序213,该计算机程序213被处理器211执行时实现实施例中的算子编译方法,为避免重复,此处不一一赘述。
[0161]
电子设备21包括,但不仅限于,处理器211、存储器212。本领域技术人员可以理解,
图9仅仅是电子设备21的示例,并不构成对电子设备21的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子设备还可以包括输入输出设备、网络接入设备、总线等。
[0162]
所称处理器211可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0163]
存储器212可以是电子设备21的内部存储单元,例如电子设备21的硬盘或内存。存储器212也可以是电子设备21的外部存储设备,例如电子设备21上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,存储器212还可以既包括电子设备21的内部存储单元也包括外部存储设备。存储器212用于存储计算机程序以及网络设备所需的其他程序和数据。存储器212还可以用于暂时地存储已经输出或者将要输出的数据。
[0164]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0165]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1