掌桥专利:专业的专利平台
掌桥专利
首页

算子执行方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 19:58:30


算子执行方法、装置、电子设备及存储介质

技术领域

本发明涉及人工智能技术领域,尤其涉及一种算子执行方法、装置、电子设备及存储介质。

背景技术

随着人工智能(Artificial Intelligence,AI)的快速发展,神经网络在各领域得到了广泛的应用,运行神经网络需要大量算子的支撑。

相关技术中,运行神经网络基本采用单算子模式(eager mode),算子的执行通常是串行起来的,算子之间同步由硬件保证:即这个由多次运行核函数(kernel)来决定。

但是,算子串行执行比较耗时,导致算子开发效率较低。因此,如何提高算子的执行效率,是目前亟待解决的问题。

发明内容

针对现有技术存在的问题,本发明实施例提供一种算子执行方法、装置、电子设备及存储介质。

本发明提供一种算子执行方法,包括:

对神经网络模型中的多个单算子进行算子融合处理,生成所述神经网络模型对应的目标算子;所述目标算子包括M个融合算子,或,M个融合算子及N个单算子;M、N为大于或等于1的整数;

基于所述目标算子,生成算子执行配置信息;所述算子执行配置信息用于指示所述目标算子的并行执行策略;

基于所述算子执行配置信息,执行所述目标算子。

可选地,所述算子执行配置信息,包括以下至少一项:

第一算子执行配置信息,用于指示所述M个融合算子之间的算子并行执行策略,及所述M个融合算子与所述N个单算子之间的算子并行执行策略;

第二算子执行配置信息,用于指示每一个融合算子内部各子算子之间的算子并行执行策略。

可选地,所述基于所述算子执行配置信息,执行所述目标算子,包括:

在所述目标算子包括所述M个融合算子及所述N个单算子的情况下,基于所述第一算子执行配置信息及所述第二算子执行配置信息,生成算子执行指令;

基于所述算子执行指令,执行所述目标算子。

可选地,所述基于所述算子执行配置信息,执行所述目标算子,包括:

在所述目标算子包括所述M个融合算子的情况下,基于所述第二算子执行配置信息,生成算子执行指令;

基于所述算子执行指令,执行所述目标算子。

可选地,所述基于所述算子执行指令,执行所述目标算子,包括:

针对每一个融合算子,响应于所述算子执行指令,基于所述第二算子执行配置信息,在第一子算子向第二子算子发送第一消息的情况下,执行所述第二子算子;所述第一子算子的输出为所述第二子算子的输入,所述第一消息用于表征所述第一子算子执行完毕与所述第一子算子关联的数据中的至少部分数据;

基于所述第一算子执行配置信息,在每一个融合算子中的目标子算子向所述N个单算子发送第二消息的情况下,执行所述N个单算子;所述第二消息用于表征所述目标子算子执行完毕与所述目标子算子关联的数据中的至少部分数据,所述目标子算子的输出为所述N个单算子的输入。

可选地,所述基于所述算子执行指令,执行所述目标算子,包括:

针对每一个融合算子,响应于所述算子执行指令,基于所述第二算子执行配置信息,在第三子算子向第四子算子发送第三消息的情况下,执行所述第四子算子;

其中,所述第三子算子的输出为所述第四子算子的输入,所述第三消息用于表征所述第三子算子执行完毕与所述第三子算子关联的数据中的至少部分数据。

可选地,在所述执行所述目标算子之前,所述方法还包括:

针对每一个融合算子,基于预设数据切分策略对所述融合算子中各所述子算子关联的数据进行切分。

可选地,所述基于所述算子执行指令,执行所述目标算子,包括:

将所述算子执行指令从逻辑空间映射至所述目标算子在硬件设备中的物理空间;

基于所述物理空间中的所述算子执行指令,执行所述目标算子。

可选地,在所述对神经网络模型中的多个单算子进行算子融合处理之前,所述方法还包括:

基于所述神经网络模型中的多个单算子,生成所述神经网络模型对应的计算图,所述计算图用于表征各单算子之间的数据依赖关系。

本发明还提供一种算子执行装置,包括:

融合模块,用于对神经网络模型中的多个单算子进行算子融合处理,生成所述神经网络模型对应的目标算子;所述目标算子包括M个融合算子,或,M个融合算子及N个单算子;M、N为大于或等于1的整数;

第一生成模块,用于基于所述目标算子,生成算子执行配置信息;所述算子执行配置信息用于指示所述目标算子的并行执行策略;

执行模块,用于基于所述算子执行配置信息,执行所述目标算子。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述算子执行方法。

本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述算子执行方法。

本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述算子执行方法。

本发明提供的算子执行方法、装置、电子设备及存储介质,通过对神经网络模型中的多个单算子进行算子融合处理,生成神经网络模型对应的目标算子,其中,目标算子包括M个融合算子,或,M个融合算子及N个单算子;然后,基于目标算子,生成算子执行配置信息,基于算子执行配置信息指示的并行执行策略,执行M个融合算子,或,M个融合算子及N个单算子,从而实现各算子之间计算的并行执行,提高了各融合算子之间计算的并行度,以及每一个融合算子内部算子与算子之间计算的并行度,进而提高了算子执行效率及算子开发效率。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的算子执行方法的流程示意图之一;

图2是本发明提供的计算图的示意图之一;

图3是本发明提供的计算图的示意图之二;

图4是本发明提供的计算图的示意图之三;

图5是本发明提供的算子图对应的kernel示意图;

图6是本发明提供的算子执行方法的流程示意图之二;

图7是本发明提供的算子执行装置的结构示意图;

图8是本发明提供的电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1至图6对本发明提供的算子执行方法进行具体描述。图1是本发明提供的算子执行方法的流程示意图之一,参见图1所示,该方法包括步骤101-步骤103,其中:

步骤101、对神经网络模型中的多个单算子进行算子融合处理,生成所述神经网络模型对应的目标算子;所述目标算子包括M个融合算子,或,M个融合算子及N个单算子;M、N为大于或等于1的整数。

首先需要说明的是,本发明应用于人工智能芯片软件栈中计算图编译场景,本发明的执行主体可以是能够实现算子执行的任何电子设备,例如可以为智能手机、智能手表、台式电脑、手提电脑等任何一种。

在本发明实施例中,神经网络模型可以应用于图像识别、语音处理、自然语言处理等领域,神经网络模型例如可以是卷积神经网络模型(Convolutional Neural Networks,CNN)、循环神经网络模型(Recurrent Neural Networks,RNN)等,运行神经网络需要多个算子作为支撑。

可选地,在所述对神经网络模型中的多个单算子进行算子融合处理之前,还需要执行以下步骤:

基于所述神经网络模型中的多个单算子,生成所述神经网络模型对应的计算图,所述计算图用于表征各单算子之间的数据依赖关系。

在本发明实施例中,在对神经网络模型中的多个单算子进行算子融合处理之前,需要将来自神经网络模型的各单算子按照接口进行组图,生成计算图。

神经网络模型对应的计算图是用来描述运算的有向无环图,有两个主要元素:节点(Node)和边(Edge);其中,每个节点可以对应一个单算子,例如向量、矩阵、张量等;边表示运算,如加、减、乘、除、卷积等。

计算图反映了各单算子之间的数据依赖关系。图2是本发明提供的计算图的示意图之一,在图2示出的计算图中,算子1和算子2的输出是算子3的输入,算子4的输出是算子5的输入,算子3和算子5的输出是算子6的输入。

本发明提出一套系统的计算图模式下的算子同步机制,在不同的计算图编译阶段配置不同的算子同步策略(即算子之间的并行执行策略),从而提高了算子之间计算的并行度。

步骤102、基于所述目标算子,生成算子执行配置信息;所述算子执行配置信息用于指示所述目标算子的并行执行策略。

可选地,所述算子执行配置信息,包括以下至少一项:

a)第一算子执行配置信息,用于指示所述M个融合算子之间的算子并行执行策略,及所述M个融合算子与所述N个单算子之间的算子并行执行策略。

b)第二算子执行配置信息,用于指示每一个融合算子内部各子算子之间的算子并行执行策略。

在上述实施方式中,通过第一算子执行配置信息、第二算子执行配置信息,可以确定出各融合算子之间的并行执行策略、各融合算子与各单算子之间的并行执行策略以及每一个融合算子内部各子算子之间的并行执行策略,进而提高了算子之间计算的并行度。

步骤103、基于所述算子执行配置信息,执行所述目标算子。

本发明提供的算子执行方法,通过对神经网络模型中的多个单算子进行算子融合处理,生成神经网络模型对应的目标算子,其中,目标算子包括M个融合算子,或,M个融合算子及N个单算子;然后,基于目标算子,生成算子执行配置信息,基于算子执行配置信息指示的并行执行策略,执行M个融合算子,或,M个融合算子及N个单算子,从而实现各算子之间计算的并行执行,提高了各融合算子之间计算的并行度,以及每一个融合算子内部算子与算子之间计算的并行度,进而提高了算子执行效率及算子开发效率。

可选地,在所述执行所述目标算子之前,所述方法还包括:

针对每一个融合算子,基于预设数据切分策略对所述融合算子中各所述子算子关联的数据进行切分。

在本发明实施例中,数据切分策略为tiling策略,tiling策略是一种利用图形处理器(Graphics Processing Unit,GPU)上的shared memory来减少对global memory的访问,以提高核函数执行效率的技术。利用tiling策略可以对每一个融合算子中各子算子关联的数据进行切分,从而减少输入各子算子的数据量,可以有效提高整个融合算子的执行效率。

具体地,利用tiling策略对融合算子中各子算子关联的数据进行切分之后,得到各子算子关联的多个数据块。

在执行各子算子的过程中,输入各子算子的数据为切分后的数据块,从而提高了各子算子的数据处理量。

可选地,所述基于所述算子执行配置信息,执行所述目标算子,具体包括以下至少一种方式:

方式一、具体包括步骤1)-步骤2):

步骤1)、在所述目标算子包括所述M个融合算子及所述N个单算子的情况下,基于所述第一算子执行配置信息及所述第二算子执行配置信息,生成算子执行指令。

步骤2)、基于所述算子执行指令,执行所述目标算子。

可选地,所述基于所述算子执行指令,执行所述目标算子,具体可以通过以下步骤[1]-步骤[2]实现:

步骤[1]、针对每一个融合算子,响应于所述算子执行指令,基于所述第二算子执行配置信息,在第一子算子向第二子算子发送第一消息的情况下,执行所述第二子算子;所述第一子算子的输出为所述第二子算子的输入,所述第一消息用于表征所述第一子算子执行完毕与所述第一子算子关联的数据中的至少部分数据;

步骤[2]、基于所述第一算子执行配置信息,在每一个融合算子中的目标子算子向所述N个单算子发送第二消息的情况下,执行所述N个单算子;所述第二消息用于表征所述目标子算子执行完毕与所述目标子算子关联的数据中的至少部分数据,所述目标子算子的输出为所述N个单算子的输入。

图3是本发明提供的计算图的示意图之二,在图3示出的计算图中,包括融合算子a、融合算子b及单算子c。其中,融合算子a内部包括子算子1、子算子2及子算子3;融合算子b内部包括子算子4及子算子5。

a)对于子算子1和子算子3:子算子1为第一子算子,子算子3为第二子算子。

基于第二算子配置信息,子算子1先执行与其关联的至少一个数据块(各数据块是通过tiling策略对子算子1关联的数据进行切分后得到的)。在子算子1执行至少完毕至少部分数据之后,向子算子3发送第一消息。子算子3在接收到第一消息后,开始执行与子算子3关联的至少一个数据块。

在上述实施方式中,子算子1与子算子3之间可以并行执行。

b)对于子算子2和子算子3:子算子2为第一子算子,子算子3为第二子算子。

基于第二算子配置信息,子算子2先执行与其关联的至少一个数据块。在子算子2执行至少完毕至少部分数据之后,向子算子3发送第一消息。子算子3在接收到第一消息后,开始执行与子算子3关联的至少一个数据块。

在上述实施方式中,子算子2与子算子3之间可以并行执行。

c)对于子算子4和子算子5:子算子4为第一子算子,子算子5为第二子算子。

基于第二算子配置信息,子算子4先执行与其关联的至少一个数据块。在子算子4执行至少完毕至少部分数据之后,向子算子5发送第一消息。子算子5在接收到第一消息后,开始执行与子算子5关联的至少一个数据块。

在上述实施方式中,子算子4与子算子5之间可以并行执行。

d)对于子算子3、子算子5和单算子c:子算子3、子算子5为目标子算子。

基于第一算子配置信息,子算子3、子算子5先执行与其关联的至少一个数据块。在子算子3、子算子5执行至少完毕至少部分数据之后,向单算子c发送第二消息。单算子c在接收到子算子3以及子算子5发送的第二消息后,开始执行与单算子c关联的至少一个数据块。

在上述实施方式中,子算子3、子算子5及单算子c之间可以并行执行。

需要说明的是,在上述实施方式中,不同的算子属于不同的计算单元,因此,不同算子之间的并行执行,可以理解为不同计算单元之间的并行执行,或者不同计算单元之间的同步。

例如:Tcore与vector engine之间的同步;Vector与vector engine之间的同步。

方式二、具体包括步骤1)-步骤2):

步骤1)、在所述目标算子包括所述M个融合算子的情况下,基于所述第二算子执行配置信息,生成算子执行指令;

步骤2)、基于所述算子执行指令,执行所述目标算子。

可选地,所述基于所述算子执行指令,执行所述目标算子,具体可以通过以下步骤实现:

针对每一个融合算子,响应于所述算子执行指令,基于所述第二算子执行配置信息,在第三子算子向第四子算子发送第三消息的情况下,执行所述第四子算子;

其中,所述第三子算子的输出为所述第四子算子的输入,所述第三消息用于表征所述第三子算子执行完毕与所述第三子算子关联的数据中的至少部分数据。

图4是本发明提供的计算图的示意图之三,在图4示出的计算图中,包括融合算子a和融合算子b。其中,融合算子a内部包括子算子1、子算子2及子算子3;融合算子b内部包括子算子4及子算子5。

a)对于子算子1和子算子3:子算子1为第三子算子,子算子3为第四子算子。

基于第二算子配置信息,子算子1先执行与其关联的至少一个数据块(各数据块是通过tiling策略对子算子1关联的数据进行切分后得到的)。在子算子1执行至少完毕至少部分数据之后,向子算子3发送第三消息。子算子3在接收到第三消息后,开始执行与子算子3关联的至少一个数据块。

在上述实施方式中,子算子1与子算子3之间可以并行执行。

b)对于子算子2和子算子3:子算子2为第三子算子,子算子3为第四子算子。

基于第二算子配置信息,子算子2先执行与其关联的至少一个数据块。在子算子2执行至少完毕至少部分数据之后,向子算子3发送第三消息。子算子3在接收到第三消息后,开始执行与子算子3关联的至少一个数据块。

在上述实施方式中,子算子2与子算子3之间可以并行执行。

c)对于子算子4和子算子5:子算子4为第三子算子,子算子5为第四子算子。

基于第二算子配置信息,子算子4先执行与其关联的至少一个数据块。在子算子4执行至少完毕至少部分数据之后,向子算子5发送第三消息。子算子5在接收到第三消息后,开始执行与子算子5关联的至少一个数据块。

在上述实施方式中,子算子4与子算子5之间可以并行执行。

需要说明的是,由于子算子3与子算子5之间没有数据依赖关系,因此,在子算子3、子算子5接收到第三消息后,各自分别执行与自身关联的至少一个数据块即可。

可选地,在上述实施方式中,所述基于所述算子执行指令,执行所述目标算子,具体可以通过以下步骤实现:

步骤1)、将所述算子执行指令从逻辑空间映射至所述目标算子在硬件设备中的物理空间;

步骤2)、基于所述物理空间中的所述算子执行指令,执行所述目标算子。

在本发明实施例中,在生成算子执行指令之后,即可生成算子图对应的kernel,具体如图5所示,图5是本发明提供的算子图对应的kernel示意图。

在将算子执行指令从逻辑空间映射至目标算子在硬件设备中的物理空间后,运行kernel来保证目标算子的并行执行。

图6是本发明提供的算子执行方法的流程示意图之二,参见图6所示,该方法包括步骤601-步骤610,其中:

步骤601、基于神经网络模型中的多个单算子,生成神经网络模型对应的计算图,其中,计算图用于表征各单算子之间的数据依赖关系。

步骤602、对神经网络模型中的多个单算子进行算子融合处理,生成神经网络模型对应的目标算子;其中,目标算子包括M个融合算子,或,M个融合算子及N个单算子;M、N为大于或等于1的整数。

步骤603、针对每一个融合算子,基于预设数据切分策略对融合算子中各子算子关联的数据进行切分。

步骤604、在目标算子包括M个融合算子及N个单算子的情况下,基于第一算子执行配置信息及第二算子执行配置信息,生成算子执行指令。

步骤605、针对每一个融合算子,响应于算子执行指令,基于第二算子执行配置信息,在第一子算子向第二子算子发送第一消息的情况下,执行第二子算子;其中,第一子算子的输出为第二子算子的输入,第一消息用于表征第一子算子执行完毕与第一子算子关联的数据中的至少部分数据;第二算子执行配置信息用于指示每一个融合算子内部各子算子之间的算子并行执行策略。

步骤606、基于第一算子执行配置信息,在每一个融合算子中的目标子算子向N个单算子发送第二消息的情况下,执行N个单算子;其中,第二消息用于表征目标子算子执行完毕与目标子算子关联的数据中的至少部分数据,目标子算子的输出为N个单算子的输入,第一算子执行配置信息用于指示M个融合算子之间的算子并行执行策略,及M个融合算子与N个单算子之间的算子并行执行策略。

步骤607、在目标算子包括M个融合算子的情况下,基于第二算子执行配置信息,生成算子执行指令。

步骤608、针对每一个融合算子,响应于算子执行指令,基于第二算子执行配置信息,在第三子算子向第四子算子发送第三消息的情况下,执行第四子算子;其中,第三子算子的输出为第四子算子的输入,第三消息用于表征第三子算子执行完毕与第三子算子关联的数据中的至少部分数据。

需要说明的是,步骤604-606与步骤607-608的执行顺序不分先后。

步骤609、将算子执行指令从逻辑空间映射至目标算子在硬件设备中的物理空间。

步骤610、基于物理空间中的算子执行指令,执行目标算子。

下面对本发明提供的算子执行装置进行描述,下文描述的算子执行装置与上文描述的算子执行方法可相互对应参照。图7是本发明提供的算子执行装置的结构示意图,如图7所示,该算子执行装置700包括:融合模块701、第一生成模块702及执行模块703,其中:

融合模块701,用于对神经网络模型中的多个单算子进行算子融合处理,生成所述神经网络模型对应的目标算子;所述目标算子包括M个融合算子,或,M个融合算子及N个单算子;M、N为大于或等于1的整数;

第一生成模块702,用于基于所述目标算子,生成算子执行配置信息;所述算子执行配置信息用于指示所述目标算子的并行执行策略;

执行模块703,用于基于所述算子执行配置信息,执行所述目标算子。

本发明提供的算子执行装置,通过对神经网络模型中的多个单算子进行算子融合处理,生成神经网络模型对应的目标算子,其中,目标算子包括M个融合算子,或,M个融合算子及N个单算子;然后,基于目标算子,生成算子执行配置信息,基于算子执行配置信息指示的并行执行策略,执行M个融合算子,或,M个融合算子及N个单算子,从而实现各算子之间计算的并行执行,提高了各融合算子之间计算的并行度,以及每一个融合算子内部算子与算子之间计算的并行度,进而提高了算子执行效率及算子开发效率。

可选地,所述算子执行配置信息,包括以下至少一项:

第一算子执行配置信息,用于指示所述M个融合算子之间的算子并行执行策略,及所述M个融合算子与所述N个单算子之间的算子并行执行策略;

第二算子执行配置信息,用于指示每一个融合算子内部各子算子之间的算子并行执行策略。

可选地,所述执行模块703,进一步用于:

在所述目标算子包括所述M个融合算子及所述N个单算子的情况下,基于所述第一算子执行配置信息及所述第二算子执行配置信息,生成算子执行指令;

基于所述算子执行指令,执行所述目标算子。

可选地,所述执行模块703,进一步用于:

在所述目标算子包括所述M个融合算子的情况下,基于所述第二算子执行配置信息,生成算子执行指令;

基于所述算子执行指令,执行所述目标算子。

可选地,所述执行模块703,进一步用于:

针对每一个融合算子,响应于所述算子执行指令,基于所述第二算子执行配置信息,在第一子算子向第二子算子发送第一消息的情况下,执行所述第二子算子;所述第一子算子的输出为所述第二子算子的输入,所述第一消息用于表征所述第一子算子执行完毕与所述第一子算子关联的数据中的至少部分数据;

基于所述第一算子执行配置信息,在每一个融合算子中的目标子算子向所述N个单算子发送第二消息的情况下,执行所述N个单算子;所述第二消息用于表征所述目标子算子执行完毕与所述目标子算子关联的数据中的至少部分数据,所述目标子算子的输出为所述N个单算子的输入。

可选地,所述执行模块703,进一步用于:

针对每一个融合算子,响应于所述算子执行指令,基于所述第二算子执行配置信息,在第三子算子向第四子算子发送第三消息的情况下,执行所述第四子算子;

其中,所述第三子算子的输出为所述第四子算子的输入,所述第三消息用于表征所述第三子算子执行完毕与所述第三子算子关联的数据中的至少部分数据。

可选地,所述装置还包括:

切分模块,用于针对每一个融合算子,基于预设数据切分策略对所述融合算子中各所述子算子关联的数据进行切分。

可选地,所述执行模块703,进一步用于:

将所述算子执行指令从逻辑空间映射至所述目标算子在硬件设备中的物理空间;

基于所述物理空间中的所述算子执行指令,执行所述目标算子。

可选地,所述装置还包括:

第二生成模块,用于基于所述神经网络模型中的多个单算子,生成所述神经网络模型对应的计算图,所述计算图用于表征各单算子之间的数据依赖关系。

图8是本发明提供的电子设备的结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行算子执行方法,该方法包括:对神经网络模型中的多个单算子进行算子融合处理,生成所述神经网络模型对应的目标算子;所述目标算子包括M个融合算子,或,M个融合算子及N个单算子;M、N为大于或等于1的整数;基于所述目标算子,生成算子执行配置信息;所述算子执行配置信息用于指示所述目标算子的并行执行策略;基于所述算子执行配置信息,执行所述目标算子。

此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的算子执行方法,该方法包括:对神经网络模型中的多个单算子进行算子融合处理,生成所述神经网络模型对应的目标算子;所述目标算子包括M个融合算子,或,M个融合算子及N个单算子;M、N为大于或等于1的整数;基于所述目标算子,生成算子执行配置信息;所述算子执行配置信息用于指示所述目标算子的并行执行策略;基于所述算子执行配置信息,执行所述目标算子。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的算子执行方法,该方法包括:对神经网络模型中的多个单算子进行算子融合处理,生成所述神经网络模型对应的目标算子;所述目标算子包括M个融合算子,或,M个融合算子及N个单算子;M、N为大于或等于1的整数;基于所述目标算子,生成算子执行配置信息;所述算子执行配置信息用于指示所述目标算子的并行执行策略;基于所述算子执行配置信息,执行所述目标算子。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 任务执行方法、装置、电子设备及计算机可读存储介质
  • 动态指令的执行方法、装置、电子设备及存储介质
  • 电子设备的显示控制方法、装置、电子设备和存储介质
  • 电子设备控制方法及装置、电子设备及存储介质
  • 数据分布存储方法、装置、存储介质及电子设备
  • 算子执行方法、装置、电子设备及存储介质
  • 算子执行方法、装置、电子设备及存储介质
技术分类

06120116496805