算子处理方法及算子处理装置、电子设备和可读存储介质制造方法及图纸

技术编号:37363809 阅读:21 留言:0更新日期:2023-04-27 07:11
一种算子处理方法、算子处理装置、电子设备和计算机可读存储介质。该算子处理方法包括:获取计算图,该计算图包含M个算子节点以及M个算子节点之间的连接关系,每个算子节点对应至少一个算子;对计算图进行拆分,得到N个子图,每个子图包含至少一个算子节点,N个子图包括第一子图,第一子图对应K个第一融合算子,K个第一融合算子为将第一子图包括的多个算子节点对应的多个算子进行融合而得到的算子;确定N个子图分别对应的算子代码,N个子图分别对应的算子代码包括第一子图对应的K个第一融合算子的算子代码;基于N个子图分别对应的算子代码,得到用于执行计算过程的代码。该方法可以适用于各种场景,适用范围广,泛化能力强。泛化能力强。泛化能力强。

【技术实现步骤摘要】
算子处理方法及算子处理装置、电子设备和可读存储介质


[0001]本公开的实施例涉及一种算子处理方法、算子处理装置、电子设备和计算机可读存储介质。

技术介绍

[0002]在人工智能芯片上运行神经网络需要大量算子的支撑,神经网络可用于语音识别、图像识别、自然语言识别等领域,这些算子可以是预定义的底层算子,也可以是用户自定义的算子。算子之间的数据交互往往通过访存的方式实现,导致代码的执行效率较为低下。通常的做法是将若干个算子根据一定的模式组合在一起形成融合算子,融合算子内部可以通过寄存器交换数据,从而提高运行效率。

技术实现思路

[0003]本公开至少一个实施例提供一种算子处理方法,包括:获取用于描述计算过程的计算图,其中,所述计算图包含M个算子节点以及所述M个算子节点之间的连接关系,所述M个算子节点中的每个对应至少一个算子;对所述计算图进行拆分,得到N个子图,其中,所述N个子图中的每个包含所述M个算子节点中的至少一个算子节点,所述N个子图包括第一子图,所述第一子图对应K个第一融合算子,所述K个第一融合算子为将所述第一子图包括的多个算子节点对应的多个算子进行融合而得到的算子;确定所述N个子图分别对应的算子代码,其中,所述N个子图分别对应的算子代码包括所述第一子图对应的所述K个第一融合算子的算子代码;基于所述N个子图分别对应的算子代码,得到用于执行所述计算过程的代码,其中,M、N和K均为不小于1的整数。
[0004]例如,在本公开一实施例提供的算子处理方法中,所述第一子图包括的多个算子节点为P个算子节点,其中,P为大于1的整数;确定所述N个子图分别对应的算子代码,包括:针对所述第一子图,确定所述P个算子节点分别对应的算子的代码;基于所述P个算子节点分别对应的算子的代码,得到所述第一子图对应的所述K个第一融合算子的算子代码。
[0005]例如,在本公开一实施例提供的算子处理方法中,针对所述第一子图,确定所述P个算子节点分别对应的算子的代码,包括:针对所述P个算子节点中的每个算子节点,执行如下操作:在所述算子节点对应的算子为预定义算子的情况下,针对所述预定义算子,获取与所述预定义算子对应的配置参数和代码模块,并基于所述配置参数和代码模块,得到所述预定义算子的代码;在所述算子节点对应的算子为自定义算子的情况下,针对所述自定义算子,对所述自定义算子进行编译,以得到所述自定义算子的代码。
[0006]例如,在本公开一实施例提供的算子处理方法中,基于所述P个算子节点分别对应的算子的代码,得到所述第一子图对应的所述K个第一融合算子的代码,包括:将所述P个算子节点分别对应的算子的代码进行组合,得到所述K个第一融合算子的算子代码。
[0007]例如,在本公开一实施例提供的算子处理方法中,对所述计算图进行拆分,得到N个子图,包括:若Q个算子节点对应的算子的目标属性相同,则将所述Q个算子节点划分为一
个子图,其中,所述目标属性包括类型属性、计算属性和数据传输属性中的至少一种,其中,Q为大于1的整数。
[0008]例如,在本公开一实施例提供的算子处理方法中,对所述计算图进行拆分,得到N个子图,包括:若所述Q个算子节点对应的算子均为相同类型的算子,则将所述Q个算子节点划分为一个子图。
[0009]例如,在本公开一实施例提供的算子处理方法中,对所述计算图进行拆分,得到N个子图,包括:若所述Q个算子节点对应的算子配置为通过寄存器传输数据,则将所述Q个算子节点划分为一个子图。
[0010]例如,在本公开一实施例提供的算子处理方法中,对所述计算图进行拆分,得到N个子图,包括:若所述Q个算子节点对应的算子配置为在同一个计算单元上运行,则将所述Q个算子节点划分为一个子图。
[0011]例如,在本公开一实施例提供的算子处理方法中,对所述计算图进行拆分,得到N个子图,包括:若Q个算子节点对应的算子的类型和执行顺序与预定融合算子包含的算子的类型和执行顺序一致,则将所述Q个算子节点划分为一个子图。
[0012]例如,在本公开一实施例提供的算子处理方法中,所述Q个算子节点在根据所述计算图确定的执行顺序上为彼此连续的或彼此并列的。
[0013]例如,在本公开一实施例提供的算子处理方法中,所述K个第一融合算子中的至少一个包括多个算子,所述多个算子依次连接并且顺次执行;对于所述多个算子中的相邻两个算子,在执行顺序上的前一个算子的计算结果数据作为后一个算子的输入数据。
[0014]例如,在本公开一实施例提供的算子处理方法中,所述N个子图还包括第二子图,所述第二子图对应R个第二融合算子,所述R个第二融合算子为将所述第二子图包括的多个算子节点对应的多个算子进行融合而得到的算子,其中,R为不小于1的整数;所述N个子图分别对应的算子代码还包括所述第二子图对应的所述R个第二融合算子的算子代码;所述方法还包括:在确定所述N个子图分别对应的算子代码之前,对所述K个第一融合算子和所述R个第二融合算子进行优化处理,以得到分别针对所述K个第一融合算子和所述R个第二融合算子的配置信息。
[0015]例如,在本公开一实施例提供的算子处理方法中,对所述K个第一融合算子和所述R个第二融合算子进行优化处理,以得到针对所述K个第一融合算子和所述R个第二融合算子的配置信息,包括:对所述K个第一融合算子和所述R个第二融合算子进行资源配置优化,以得到针对每个所述第一融合算子和每个所述第二融合算子的优化后的资源配置信息,其中,所述资源包括计算资源和/或存储资源。
[0016]例如,在本公开一实施例提供的算子处理方法中,对所述K个第一融合算子和所述R个第二融合算子进行优化处理,以得到针对所述K个第一融合算子和所述R个第二融合算子的配置信息,包括:基于所述计算图的计算过程,针对所述K个第一融合算子和所述R个第二融合算子制定同步策略,以得到针对所述K个第一融合算子和所述R个第二融合算子的同步配置信息。
[0017]例如,在本公开一实施例提供的算子处理方法中,基于所述计算图的计算过程,针对所述K个第一融合算子和所述R个第二融合算子制定同步策略,以得到针对所述K个第一融合算子和所述R个第二融合算子的同步配置信息,包括:至少针对所述K个第一融合算子
和所述R个第二融合算子中的两个融合算子执行如下操作:若所述两个融合算子存在数据依赖关系,并且数据接收方的调度单元标识与数据产生方的调度单元标识以及所述数据产生方至所述数据接受方之间的调度单元标识均不相同,则将所述两个融合算子配置为进行数据同步处理,其中,所述数据产生方为所述两个融合算子中的一者,所述数据产生方为另一者。
[0018]例如,在本公开一实施例提供的算子处理方法中,所述第一融合算子包括所述第一子图包括的多个算子节点对应的多个算子;所述方法还包括:针对所述第一融合算子,在所述第一融合算子包含的所述多个算子之间进行优化处理,以得到针对所述多个算子的配置信息,其中,所述优化处理包括资源配置优化和/或制定同步策略。
[0019]例如,在本公开一实施例提供的算本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种算子处理方法,包括:获取用于描述计算过程的计算图,其中,所述计算图包含M个算子节点以及所述M个算子节点之间的连接关系,所述M个算子节点中的每个对应至少一个算子;对所述计算图进行拆分,得到N个子图,其中,所述N个子图中的每个包含所述M个算子节点中的至少一个算子节点,所述N个子图包括第一子图,所述第一子图对应K个第一融合算子,所述K个第一融合算子为将所述第一子图包括的多个算子节点对应的多个算子进行融合而得到的算子;确定所述N个子图分别对应的算子代码,其中,所述N个子图分别对应的算子代码包括所述第一子图对应的所述K个第一融合算子的算子代码;基于所述N个子图分别对应的算子代码,得到用于执行所述计算过程的代码,其中,M、N和K均为不小于1的整数。2.根据权利要求1所述的方法,其中,所述第一子图包括的多个算子节点为P个算子节点,其中,P为大于1的整数;确定所述N个子图分别对应的算子代码,包括:针对所述第一子图,确定所述P个算子节点分别对应的算子的代码;基于所述P个算子节点分别对应的算子的代码,得到所述第一子图对应的所述K个第一融合算子的算子代码。3.根据权利要求2所述的方法,其中,针对所述第一子图,确定所述P个算子节点分别对应的算子的代码,包括:针对所述P个算子节点中的每个算子节点,执行如下操作:在所述算子节点对应的算子为预定义算子的情况下,针对所述预定义算子,获取与所述预定义算子对应的配置参数和代码模块,并基于所述配置参数和代码模块,得到所述预定义算子的代码;在所述算子节点对应的算子为自定义算子的情况下,针对所述自定义算子,对所述自定义算子进行编译,以得到所述自定义算子的代码。4.根据权利要求2所述的方法,其中,基于所述P个算子节点分别对应的算子的代码,得到所述第一子图对应的所述K个第一融合算子的代码,包括:将所述P个算子节点分别对应的算子的代码进行组合,得到所述K个第一融合算子的算子代码。5.根据权利要求1所述的方法,其中,对所述计算图进行拆分,得到N个子图,包括:若Q个算子节点对应的算子的目标属性相同,则将所述Q个算子节点划分为一个子图,其中,所述目标属性包括类型属性、计算属性和数据传输属性中的至少一种,其中,Q为大于1的整数。6.根据权利要求5所述的方法,其中,对所述计算图进行拆分,得到N个子图,包括:若所述Q个算子节点对应的算子均为相同类型的算子,则将所述Q个算子节点划分为一个子图。7.根据权利要求5所述的方法,其中,对所述计算图进行拆分,得到N个子图,包括:若所述Q个算子节点对应的算子配置为通过寄存器传输数据,则将所述Q个算子节点划分为一个子图。
8.根据权利要求5所述的方法,其中,对所述计算图进行拆分,得到N个子图,包括:若所述Q个算子节点对应的算子配置为在同一个计算单元上运行,则将所述Q个算子节点划分为一个子图。9.根据权利要求1所述的方法,其中,对所述计算图进行拆分,得到N个子图,包括:若Q个算子节点对应的算子的类型和执行顺序与预定融合算子包含的算子的类型和执行顺序一致,则将所述Q个算子节点划分为一个子图。10.根据权利要求5至9任一项所述的方法,其中,所述Q个算子节点在根据所述计算图确定的执行顺序上为彼此连续的或彼此并列的。11.根据权利要求1至9任一项所述的方法,其中,所述K个第一融合算子中的至少一个包括多个算子,所述多个算子依次连接并且顺次执行;对于所述多个算子中的相邻两个算子,在执行顺序上的前一个算子的计算结果数据作为后一个算子的输入数据。12.根据权利要求1至9任一项所述的方法,其中,所述N个子图还包括第二子图,所述第二子图对应R个第二融合算子,所述R个第二融合算子为将所述第二子图包括的多个算子节点对应的多个算子进行融合而得到的算子,其中,...

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

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

1