CN114936099B - 一种用于神经网络计算的图优化方法和装置 - Google Patents
一种用于神经网络计算的图优化方法和装置 Download PDFInfo
- Publication number
- CN114936099B CN114936099B CN202210874564.2A CN202210874564A CN114936099B CN 114936099 B CN114936099 B CN 114936099B CN 202210874564 A CN202210874564 A CN 202210874564A CN 114936099 B CN114936099 B CN 114936099B
- Authority
- CN
- China
- Prior art keywords
- node
- graph
- computation
- redefined
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种用于神经网络计算的图优化方法和装置,包括以下步骤:步骤S1:转换计算图;步骤S2:分配寄存器;步骤S3:定义关于重定义变量的路由选择器;步骤S4:求解关于重定义变量的路由选择器;步骤S5:定义关于重定义变量的路由选择器插入节点的准则;步骤S6:分析关于重定义变量节点的支配边集合;步骤S7:插入关于重定义变量的路由选择器;步骤S8:重命名关于重定义变量。本发明解决了编译期计算图中包含重定义变量的节点流经多路计算流时所对应的关于重定义变量的正确定义的路由选择问题,减少数据流中张量变量所需的内存开销,降低了大模型对于硬件内存资源的要求,推动了深度神经网络模型落地应用的发展。
Description
技术领域
本发明涉及一种基于特定计算模型的计算机技术领域,尤其涉及一种用于神经网络计算的图优化方法和装置。
背景技术
随着人工智能产业化应用的快速发展,用于深度神经网络模型计算的图优化技术越来越成为学术界和工业界的研究热点。
为此,我们提出了一种用于神经网络计算的图优化方法和装置。
发明内容
本发明的目的在于提供一种用于神经网络计算的图优化方法和装置,用于神经网络计算的计算图中的多个节点包含重定义变量时,所述重定义变量面对多路计算流图时所对应的关于重定义变量的正确定义的选择依赖于计算图运行阶段执行流所流经的路径。为了在计算图执行之前优化包含重定义变量的计算图,本发明提供了一种图优化的全局单节点定义模式的计算图中间表示,提出了关于重定义变量的正确定义的路由选择器的插入准则和分析方法。本发明解决了编译期计算图中包含重定义变量的节点流经多路计算流时所对应的关于重定义变量的正确定义的路由选择问题。本发明通过简化计算图中节点的重定义变量的特性,简化了用于神经网络计算的图优化过程,获得了更好的优化结果。研究人员和工程应用者开发算法模型的过程中,利用本发明简化了用于神经网络计算的计算图的数据流,减少数据流中张量变量所需的内存开销,降低了大模型对于硬件内存资源的要求,推动了深度神经网络模型落地应用的发展。
本发明采用的技术方案如下:
一种用于神经网络计算的图优化方法,包括以下步骤:
步骤S1:转换计算图,将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图;
步骤S2:分配寄存器:为所述计算图节点处的变量分配寄存器;
步骤S3:定义关于重定义变量的路由选择器,根据所述计算图运行阶段执行流所流经的路径选择所述计算图节点处重定义变量的正确定义;
步骤S4:求解关于重定义变量的路由选择器;
步骤S5:定义关于重定义变量的路由选择器插入节点的准则;
步骤S6:分析关于重定义变量节点的支配边集合;
步骤S7:插入关于重定义变量的路由选择器;
步骤S8:重命名关于重定义变量。
进一步地,所述步骤S1具体包括以下子步骤:
步骤S11:记录关于所有变量所在用于神经网络计算的神经网络计算图起始节点处定义的变量的名称;
步骤S12:根据所述用于神经网络计算的神经网络计算图的拓扑顺序遍历所述用于神经网络计算的神经网络计算图,每当存在后继节点重新定义所述变量时,则为所述变量产生一个新的名称,得到全局单节点定义模式的计算图。
进一步地,所述步骤S2具体包括以下子步骤:
步骤S21:分析所述计算图节点处的变量的生命周期;
步骤S22:根据所述生命周期为所述变量分配寄存器,当所述变量对应的所述生命周期不冲突,则不冲突的所述生命周期的所述变量复用同一个寄存器。
进一步地,所述步骤S3中在所述计算图中间表示中,当重定义变量面对多路计算流时所对应的正确路由的选择时,则在所述重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器匹配所述重定义变量的正确定义。
进一步地,所述步骤S3定义关于重定义变量的路由选择器包括以下定义:
定义插入路由选择器的条件;
定义所述计算图的支配属性;
定义严格的所述计算图。
进一步地,所述定义插入路由选择器的条件具体为:当存在所述计算图的多路计算流的汇合节点的前驱节点构成两个或两个以上的不同子图,并且不同所述子图中各自均包含重定义变量的定义节点,则同时满足条件一和条件二,在所述计算图的重定义变量的定义节点处插入重定义变量的路由选择器;
所述条件一为不同所述子图与所述计算图的多路计算流的汇合节点均存在连边,且所述连边存在唯一的共同节点为所述计算图的多路计算流的汇合节点;
所述条件二为在一次所述计算图执行流中,所述计算图的多路计算流的汇合节点不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边,只能选择其中一条连边。
进一步地,所述定义所述计算图的支配属性具体为:所述计算图执行流从所述计算图的根结点流向节点的过程中所有路径都会经过所述计算图的多路计算流的汇合节点。
进一步地,所述定义严格的所述计算图具体为:
对于没有所述路由选择器的节点,前驱节点中一定存在所述重定义变量的定义支配所述节点;
对于有所述路由选择器的节点,一定存在所述重定义变量的多个定义,关于所述重定义变量对应的定义支配所述路由选择器的节点对应的前驱节点。
进一步地,所述步骤S4具体包括以下子步骤:
步骤S41:在所述计算图的非关键边上插入重定义变量的正确定义的拷贝节点:在所述计算图的非关键边上插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;
步骤S42:分解所述计算图的关键边:在所述计算图的关键边上添加空节点;
步骤S43:在所述计算图的关键边上插入重定义变量的正确定义的拷贝节点:在所述步骤S42所述空节点的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;
步骤S44:移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点:当所述重定义变量的正确定义的路由选择器被所述步骤S42和所述步骤S43解构,则将重定义变量的正确定义节点插入到所述多路计算流的汇合节点对应的前驱节点中。
进一步地,所述步骤S5具体包括以下子步骤:
步骤S51:定义节点V1严格支配节点V2:节点V1支配节点V2,且节点V1是节点V2的前驱节点,V1≠V2;
步骤S52:定义节点V1的支配边:所述支配边包含满足以下条件的所有节点Vi的集合:节点V1支配节点Vi的前驱节点,且节点V1不严格支配节点Vi。
进一步地,所述步骤S6具体包括以下子步骤:
步骤S61:分析包含重定义变量的起始节点的支配边:关于任意节点处的重定义变量的路由选择器的插入位置为节点的支配边集合;
步骤S62:迭代起始节点的后继节点,直到没有节点需要关于重定义变量的路由选择器。
进一步地,所述步骤S7具体包括:当节点包含任意一个重定义变量的正确定义时,则在所述任意一个重定义变量的支配边上的任何节点处都插入一个关于重定义变量的路由选择器。
进一步地,所述步骤S8具体包括:对所述插入关于重定义变量的路由选择器输出的变量进行重命名。
本发明还提供一种用于神经网络计算的图优化装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例任一项所述的一种用于神经网络计算的图优化方法。
本发明还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例任一项所述的一种用于神经网络计算的图优化方法。
本发明的有益效果是:本发明用于神经网络计算的计算图中的多个节点所包含的重定义变量面对多路计算流图时所对应的正确定义的选择问题,传统方法都是需要先执行计算图,并且根据执行流实际所流经的路径来选择重定义变量所对应的正确定义。本发明为包含重定义变量的计算图提供了编译期的图优化方法,提供了一种图优化的全局单节点定义模式的计算图中间表示,在计算图编译期就解决了计算图中包含重定义变量的节点流经多路计算流时所对应的关于重定义变量的正确定义的路由选择问题,简化了用于神经网络计算的计算图的数据流,减少数据流中张量变量所需的内存开销,降低了大模型对于硬件内存资源的要求。本发明用于神经网络计算的数据流动方法提高整个计算图的计算效率,节约硬件和时间成本。
附图说明
图1为本发明一种用于神经网络计算的图优化方法的流程图;
图2为本发明实施例将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图的示意图;
图3为本发明实施例为计算图节点处的变量分配寄存器的示意图;
图4为本发明实施例面对多路计算流图时的重定义变量插入路由选择器的示意图;
图5为本发明实施例定义插入路由选择器的条件的示意图;
图6为本发明实施例定义所述计算图的支配属性的示意图;
图7为本发明实施例重定义变量对应的定义支配路由选择器的节点对应的前驱节点的示意图;
图8为本发明实施例定义严格的所述计算图的示意图;
图9为本发明实施例求解关于重定义变量的路由选择器过程的示意图;
图10为本发明实施例分析关于重定义变量节点的支配边集合的示意图;
图11为本发明实施例分析关于重定义变量节点的支配边集合以及插入关于重定义变量的路由选择器的示意图;
图12为本发明实施例插入关于重定义变量的路由选择器输出的变量进行重命名的示意图;
图13为本发明一种用于神经网络计算的图优化装置的结构图。
具体实施方式
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
见图1,一种用于神经网络计算的图优化方法,包括以下步骤:
步骤S1:转换计算图,将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图;
步骤S11:记录关于所有变量所在用于神经网络计算的神经网络计算图起始节点处定义的变量的名称;
步骤S12:根据所述用于神经网络计算的神经网络计算图的拓扑顺序遍历所述用于神经网络计算的神经网络计算图,每当存在后继节点重新定义所述变量时,则为所述变量产生一个新的名称,得到全局单节点定义模式的计算图。
步骤S2:分配寄存器:为所述计算图节点处的变量分配寄存器;
步骤S21:分析所述计算图节点处的变量的生命周期;
步骤S22:根据所述生命周期为所述变量分配寄存器,当所述变量对应的所述生命周期不冲突,则不冲突的所述生命周期的所述变量复用同一个寄存器。
步骤S3:定义关于重定义变量的路由选择器,根据所述计算图运行阶段执行流所流经的路径选择所述计算图节点处重定义变量的正确定义;
在所述计算图中间表示中,当重定义变量面对多路计算流时所对应的正确路由的选择时,则在所述重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器匹配所述重定义变量的正确定义;
定义关于重定义变量的路由选择器包括以下定义:
定义插入路由选择器的条件;
当存在所述计算图的多路计算流的汇合节点的前驱节点构成两个或两个以上的不同子图,并且不同所述子图中各自均包含重定义变量的定义节点,则同时满足条件一和条件二,在所述计算图的重定义变量的定义节点处插入重定义变量的路由选择器;
所述条件一为不同所述子图与所述计算图的多路计算流的汇合节点均存在连边,且所述连边存在唯一的共同节点为所述计算图的多路计算流的汇合节点;
所述条件二为在一次所述计算图执行流中,所述计算图的多路计算流的汇合节点不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边,只能选择其中一条连边。
定义所述计算图的支配属性;
所述计算图执行流从所述计算图的根结点流向节点的过程中所有路径都会经过所述计算图的多路计算流的汇合节点。
定义严格的所述计算图;
对于没有所述路由选择器的节点,前驱节点中一定存在所述重定义变量的定义支配所述节点;
对于有所述路由选择器的节点,一定存在所述重定义变量的多个定义,关于所述重定义变量对应的定义支配所述路由选择器的节点对应的前驱节点。
步骤S4:求解关于重定义变量的路由选择器;
步骤S41:在所述计算图的非关键边上插入重定义变量的正确定义的拷贝节点:在所述计算图的非关键边上插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;
步骤S42:分解所述计算图的关键边:在所述计算图的关键边上添加空节点;
步骤S43:在所述计算图的关键边上插入重定义变量的正确定义的拷贝节点:在所述步骤S42所述空节点的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;
步骤S44:移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点:当所述重定义变量的正确定义的路由选择器被所述步骤S42和所述步骤S43解构,则将重定义变量的正确定义节点插入到所述多路计算流的汇合节点对应的前驱节点中。
步骤S5:定义关于重定义变量的路由选择器插入节点的准则;
步骤S51:定义节点V1严格支配节点V2:节点V1支配节点V2,且节点V1是节点V2的前驱节点,V1≠V2;
步骤S52:定义节点V1的支配边:所述支配边包含满足以下条件的所有节点Vi的集合:节点V1支配节点Vi的前驱节点,且节点V1不严格支配节点Vi。
步骤S6:分析关于重定义变量节点的支配边集合;
步骤S61:分析包含重定义变量的起始节点的支配边:关于任意节点处的重定义变量的路由选择器的插入位置为节点的支配边集合;
步骤S62:迭代起始节点的后继节点,直到没有节点需要关于重定义变量的路由选择器。
步骤S7:插入关于重定义变量的路由选择器;
当节点包含任意一个重定义变量的正确定义时,则在所述任意一个重定义变量的支配边上的任何节点处都插入一个关于重定义变量的路由选择器。
步骤S8:重命名关于重定义变量;
对所述插入关于重定义变量的路由选择器输出的变量进行重命名。
实施例:
步骤S1:转换计算图,将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图;
步骤S11:记录关于所有变量所在用于神经网络计算的神经网络计算图起始节点处定义的变量的名称;
步骤S12:根据所述用于神经网络计算的神经网络计算图的拓扑顺序遍历所述用于神经网络计算的神经网络计算图,每当存在后继节点重新定义所述变量时,则为所述变量产生一个新的名称,得到全局单节点定义模式的计算图。
参见图2为用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图的示意图,首先记录在计算图起始节点V0处定义的变量a的名称为a0,在后继节点V1处使用的变量a的名称更新为a0。由于后继节点V2处重新定义了变量a,因此变量a0的生命周期从节点V0至节点V1。而且,需要为节点V2处的变量a产生新的名称a1,然后将后继节点V4处使用的变量a的名称更新为a1。又由于后继节点V4处重新定义了变量a,因此变量a1的生命周期从节点V2至节点V4。
步骤S2:分配寄存器:为所述计算图节点处的变量分配寄存器;
步骤S21:分析所述计算图节点处的变量的生命周期;
步骤S22:根据所述生命周期为所述变量分配寄存器,当所述变量对应的所述生命周期不冲突,则不冲突的所述生命周期的所述变量复用同一个寄存器。
参见图3为计算图节点处的变量分配寄存器的示意图,包括如下过程:
(1)变量a0的生命周期从节点V0至节点V1,所以为计算图的节点V0和节点V1处的变量 a0分配寄存器r0;
(2)变量a1的生命周期从节点V2至节点V4,因此为计算图上从节点V2至节点V4处的变量 a1分配寄存器r1;
(3)因为变量a0和变量a1的生命周期不冲突,所以后继节点从节点V2至节点V4处的变量 a1的寄存器r1可以复用寄存器r0的内存。
步骤S3:定义关于重定义变量的路由选择器,根据所述计算图运行阶段执行流所流经的路径选择所述计算图节点处重定义变量的正确定义;
所述路由选择器具有多路复用器的语义;
在所述计算图中间表示中,当重定义变量面对多路计算流时所对应的正确路由的选择时,则在所述重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器匹配所述重定义变量的正确定义;
对于所述计算图节点中重定义变量,在所述计算图中间表示中,所述重定义变量面对多路计算流图时所对应的正确路由的选择依赖于计算图运行阶段执行流所流经的路径。所以,为了在所述计算图执行之前优化所述计算图,需要在重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器来匹配重定义变量的正确定义。
参见图4为面对多路计算流图时的重定义变量插入路由选择器的示意图,如图4左边所示,节点 V5处的重定义变量b的定义只有在计算图运行阶段才能确定是复制节点V1处的b0还是节点V3处的b1。节点V5处的重定义变量b的定义面对多路计算流图时,需要插入如图4右边所示的路由选择器ϕ 函数,并且使用所述路由选择器的匹配结果更新节点 V5处的重定义变量b的定义。
定义关于重定义变量的路由选择器包括以下定义:
定义插入路由选择器的条件;
当存在所述计算图的多路计算流的汇合节点的前驱节点构成两个或两个以上的不同子图,并且不同所述子图中各自均包含重定义变量的定义节点,则同时满足条件一和条件二,在所述计算图的重定义变量的定义节点处插入重定义变量的路由选择器;
所述条件一为不同所述子图与所述计算图的多路计算流的汇合节点均存在连边,且所述连边存在唯一的共同节点为所述计算图的多路计算流的汇合节点;
所述条件二为在一次所述计算图执行流中,所述计算图的多路计算流的汇合节点不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边,只能选择其中一条连边。
参见图5为定义插入路由选择器的条件的示意图,子图3是所述计算图的多路计算流的汇合节点,包含了重定义变量b的使用表达式。只要满足以下条件就可以插入关于重定义变量b的路由选择器:
条件一:存在子图1和子图2,并且所述子图中分别包含重定义变量的定义的节点V1和节点V3,存在子图1和子图2与所述计算图的多路计算流的汇合节点的两条连边分别为连边E1,3和连边E2,3;
条件二:在一次计算图执行流中,所述计算图的多路计算流的汇合节点V5不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边E1,3和连边E2,3,只可能选择连边 E1,3和连边E2,3的其中之一。
定义所述计算图的支配属性;
所述计算图执行流从所述计算图的根结点流向节点的过程中所有路径都会经过所述计算图的多路计算流的汇合节点。
参见图6为定义所述计算图的支配属性的示意图,计算图中节点d支配节点n的定义为:执行流从计算图的根节点流向节点n的过程中的所有路径都会经过节点d。
定义严格的所述计算图;
对于没有所述路由选择器的节点,前驱节点中一定存在所述重定义变量的定义支配所述节点;
对于有所述路由选择器的节点,一定存在所述重定义变量的多个定义,关于所述重定义变量对应的定义支配所述路由选择器的节点对应的前驱节点。
参见图7为重定义变量对应的定义支配路由选择器的节点对应的前驱节点的示意图,对于有路由选择器的节点x,存在变量的多个定义xa,xb,xc。变量x对应的定义xa,xb,xc分别支配所述节点Vd的前驱节点Va,Vb,Vc。
参见图8为定义严格的所述计算图的示意图:
1)变量a2,a1,a3分别是关于重定义变量a的路由选择器的三个参数。变量a2,a1,a3的定义分别支配子图n的包含变量a2,a1,a3使用表达式的前驱节点。
2)对于变量a0在变量a的路由选择器节点之外被使用的情形,那么包含变量a0的定义的节点V0一定支配子图n的节点。
步骤S4:求解关于重定义变量的路由选择器;
步骤S41:在所述计算图的非关键边上插入重定义变量的正确定义的拷贝节点:在所述计算图的非关键边上插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;
步骤S42:分解所述计算图的关键边:在所述计算图的关键边上添加空节点;
所述计算图的关键边的定义为:所述连边的起始节点存在多个后继节点,同时所述连边的尾节点存在多个前驱节点。
步骤S43:在所述计算图的关键边上插入重定义变量的正确定义的拷贝节点:在所述步骤S42所述空节点的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;
步骤S44:移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点:当所述重定义变量的正确定义的路由选择器被所述步骤S42和所述步骤S43解构,则将重定义变量的正确定义节点插入到所述多路计算流的汇合节点对应的前驱节点中。
参见图9为求解关于重定义变量的路由选择器过程的示意图:
1)首先将路由选择器的输出变量接管重定义变量的正确定义的拷贝节点V4插入到计算图的非关键边上,也就是连接节点V3至节点V5之间的边。
2)分解计算图的关键边,也就是连接节点V2至节点V8之间的边。通过在关键边上添加空节点 V7。
3)在所述空节点V7的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点V6。
4)移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点b2= ϕ(b0,b1)。
步骤S5:定义关于重定义变量的路由选择器插入节点的准则;
步骤S51:定义节点V1严格支配节点V2:节点V1支配节点V2,且节点V1是节点V2的前驱节点,V1≠V2;
步骤S52:定义节点V1的支配边:所述支配边包含满足以下条件的所有节点Vi的集合:节点V1支配节点Vi的前驱节点,且节点V1不严格支配节点Vi。
步骤S6:分析关于重定义变量节点的支配边集合;
步骤S61:分析包含重定义变量的起始节点的支配边:关于任意节点处的重定义变量的路由选择器的插入位置为节点的支配边集合;
步骤S62:迭代起始节点的后继节点,直到没有节点需要关于重定义变量的路由选择器;
由于关于重定义变量的路由选择器本身是一种关于重定义变量的定义,必须迭代支配边准则;
参见图10为分析关于重定义变量节点的支配边集合的示意图;
所述分析节点e的支配边集合{e}的过程如下:
步骤7节点e的支配边集合为:
{节点f后继节点集合移除节点e严格支配边集合}
∪{节点g后继节点集合移除节点e严格支配边集合}
∪{节点(h,d,k)后继节点集合移除节点e严格支配边集合}
∪{节点e后继节点集合移除节点e严格支配边集合};
步骤S7:插入关于重定义变量的路由选择器;
当节点包含任意一个重定义变量的正确定义时,则在所述任意一个重定义变量的支配边上的任何节点处都插入一个关于重定义变量的路由选择器。
参见图11为分析关于重定义变量节点的支配边集合以及插入关于重定义变量的路由选择器的示意图:
步骤S8:重命名关于重定义变量;
对所述插入关于重定义变量的路由选择器输出的变量进行重命名。
参见图12为插入关于重定义变量的路由选择器输出的变量进行重命名的示意图,关于节点 f 处的重定义变量,在节点f的支配边集合的节点处均需要进行重命名:分别在节点 d,h,e,k,l 处对重定义变量x进行重命名。
与前述一种用于神经网络计算的图优化方法的实施例相对应,本发明还提供了一种用于神经网络计算的图优化装置的实施例。
参见图13,本发明实施例提供的一种用于神经网络计算的图优化装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的一种用于神经网络计算的图优化方法。
本发明一种用于神经网络计算的图优化装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图13所示,为本发明一种用于神经网络计算的图优化装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图13所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种用于神经网络计算的图优化方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(SmartMediaCard,SMC)、SD卡、闪存卡(FlashCard)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种用于神经网络计算的图优化方法,其特征在于,包括以下步骤:
步骤S1:转换计算图,将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图;
步骤S2:分配寄存器:为所述计算图节点处的变量分配寄存器;
步骤S3:定义关于重定义变量的路由选择器,根据所述计算图运行阶段执行流所流经的路径选择所述计算图节点处重定义变量的正确定义;
步骤S4:求解关于重定义变量的路由选择器;
步骤S41:在所述计算图的非关键边上插入重定义变量的正确定义的拷贝节点:在所述计算图的非关键边上插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;
步骤S42:分解所述计算图的关键边:在所述计算图的关键边上添加空节点;
步骤S43:在所述计算图的关键边上插入重定义变量的正确定义的拷贝节点:在所述步骤S42所述空节点的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;
步骤S44:移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点:当所述重定义变量的正确定义的路由选择器被所述步骤S42和所述步骤S43解构,则将重定义变量的正确定义节点插入到所述多路计算流的汇合节点对应的前驱节点中;
步骤S5:定义关于重定义变量的路由选择器插入节点的准则;
步骤S6:分析关于重定义变量节点的支配边集合;
步骤S7:插入关于重定义变量的路由选择器;
步骤S8:重命名关于重定义变量。
2.如权利要求1所述的一种用于神经网络计算的图优化方法,其特征在于,所述步骤S1具体包括以下子步骤:
步骤S11:记录关于所有变量所在用于神经网络计算的神经网络计算图起始节点处定义的变量的名称;
步骤S12:根据所述用于神经网络计算的神经网络计算图的拓扑顺序遍历所述用于神经网络计算的神经网络计算图,每当存在后继节点重新定义所述变量时,则为所述变量产生一个新的名称,得到全局单节点定义模式的计算图。
3.如权利要求1所述的一种用于神经网络计算的图优化方法,其特征在于,所述步骤S2具体包括以下子步骤:
步骤S21:分析所述计算图节点处的变量的生命周期;
步骤S22:根据所述生命周期为所述变量分配寄存器,当所述变量对应的所述生命周期不冲突,则不冲突的所述生命周期的所述变量复用同一个寄存器。
4.如权利要求1所述的一种用于神经网络计算的图优化方法,其特征在于,所述步骤S3中在所述计算图中间表示中,当重定义变量面对多路计算流时所对应的正确路由的选择时,则在所述重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器匹配所述重定义变量的正确定义。
5.如权利要求1所述的一种用于神经网络计算的图优化方法,其特征在于,所述步骤S3定义关于重定义变量的路由选择器包括以下定义:
定义插入路由选择器的条件;
定义所述计算图的支配属性;
定义严格的所述计算图。
6.如权利要求5所述的一种用于神经网络计算的图优化方法,其特征在于,所述定义插入路由选择器的条件具体为:当存在所述计算图的多路计算流的汇合节点的前驱节点构成两个或两个以上的不同子图,并且不同所述子图中各自均包含重定义变量的定义节点,则同时满足条件一和条件二,在所述计算图的重定义变量的定义节点处插入重定义变量的路由选择器;
所述条件一为不同所述子图与所述计算图的多路计算流的汇合节点均存在连边,且所述连边存在唯一的共同节点为所述计算图的多路计算流的汇合节点;
所述条件二为在一次所述计算图执行流中,所述计算图的多路计算流的汇合节点不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边,只能选择其中一条连边。
7.如权利要求5所述的一种用于神经网络计算的图优化方法,其特征在于,所述定义所述计算图的支配属性具体为:所述计算图执行流从所述计算图的根结点流向节点的过程中所有路径都会经过所述计算图的多路计算流的汇合节点。
8.如权利要求5所述的一种用于神经网络计算的图优化方法,其特征在于,所述定义严格的所述计算图具体为:
对于没有所述路由选择器的节点,前驱节点中一定存在所述重定义变量的定义支配所述节点;
对于有所述路由选择器的节点,一定存在所述重定义变量的多个定义,关于所述重定义变量对应的定义支配所述路由选择器的节点对应的前驱节点。
9.如权利要求1所述的一种用于神经网络计算的图优化方法,其特征在于,所述步骤S5具体包括以下子步骤:
步骤S51:定义节点V1严格支配节点V2:节点V1支配节点V2,且节点V1是节点V2的前驱节点,V1≠V2;
步骤S52:定义节点V1的支配边:所述支配边包含满足以下条件的所有节点Vi的集合:节点V1支配节点Vi的前驱节点,且节点V1不严格支配节点Vi。
10.如权利要求1所述的一种用于神经网络计算的图优化方法,其特征在于,所述步骤S6具体包括以下子步骤:
步骤S61:分析包含重定义变量的起始节点的支配边:关于任意节点处的重定义变量的路由选择器的插入位置为节点的支配边集合;
步骤S62:迭代起始节点的后继节点,直到没有节点需要关于重定义变量的路由选择器。
11.如权利要求1所述的一种用于神经网络计算的图优化方法,其特征在于,所述步骤S7具体包括:当节点包含任意一个重定义变量的正确定义时,则在所述任意一个重定义变量的支配边上的任何节点处都插入一个关于重定义变量的路由选择器。
12.如权利要求1所述的一种用于神经网络计算的图优化方法,其特征在于,所述步骤S8具体包括:对所述插入关于重定义变量的路由选择器输出的变量进行重命名。
13.一种用于神经网络计算的图优化装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-12中任一项所述的一种用于神经网络计算的图优化方法。
14.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-12中任一项所述的一种用于神经网络计算的图优化方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210874564.2A CN114936099B (zh) | 2022-07-25 | 2022-07-25 | 一种用于神经网络计算的图优化方法和装置 |
PCT/CN2022/112951 WO2024021192A1 (zh) | 2022-07-25 | 2022-08-17 | 一种用于神经网络计算的图优化方法和装置 |
US17/950,028 US11915135B2 (en) | 2022-07-25 | 2022-09-21 | Graph optimization method and apparatus for neural network computation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210874564.2A CN114936099B (zh) | 2022-07-25 | 2022-07-25 | 一种用于神经网络计算的图优化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114936099A CN114936099A (zh) | 2022-08-23 |
CN114936099B true CN114936099B (zh) | 2022-09-30 |
Family
ID=82867804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210874564.2A Active CN114936099B (zh) | 2022-07-25 | 2022-07-25 | 一种用于神经网络计算的图优化方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114936099B (zh) |
WO (1) | WO2024021192A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115269205B (zh) * | 2022-09-27 | 2022-12-27 | 之江实验室 | 一种面向神经网络计算的内存优化方法和装置 |
CN115756474A (zh) * | 2022-09-27 | 2023-03-07 | 之江实验室 | 一种用于计算图编译的中间表示方法及装置 |
CN115269204B (zh) * | 2022-09-27 | 2022-12-30 | 之江实验室 | 一种用于神经网络编译的内存优化方法及装置 |
CN115268877B (zh) * | 2022-09-27 | 2022-12-13 | 之江实验室 | 一种用于图计算并行执行的中间表示方法及装置 |
US11782723B1 (en) | 2022-09-27 | 2023-10-10 | Zhejiang Lab | Intermediate representation method and apparatus for parallel execution of graph computation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446540A (zh) * | 2018-03-19 | 2018-08-24 | 中山大学 | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 |
CN112084038A (zh) * | 2020-09-23 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 神经网络的内存分配方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428793A (en) * | 1989-11-13 | 1995-06-27 | Hewlett-Packard Company | Method and apparatus for compiling computer programs with interproceduural register allocation |
US5761514A (en) * | 1995-08-31 | 1998-06-02 | International Business Machines Corporation | Register allocation method and apparatus for truncating runaway lifetimes of program variables in a computer system |
US6026241A (en) * | 1997-06-13 | 2000-02-15 | Silicon Graphics, Inc. | System, method, and computer program product for partial redundancy elimination based on static single assignment form during compilation |
CN101923472A (zh) * | 2010-09-16 | 2010-12-22 | 复旦大学 | 一种基于高级中间表示的结构优化方法及系统 |
CN112084037A (zh) * | 2020-09-23 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 神经网络的内存分配方法及装置 |
US20220198296A1 (en) * | 2020-12-23 | 2022-06-23 | EMC IP Holding Comnpany LLC | User context migration based on computation graph in artificial intelligence application executing in edge computing environment |
CN112579063B (zh) * | 2021-03-01 | 2021-06-08 | 之江实验室 | 一种用于深度学习编译器中探索优化空间的加速方法 |
CN114461351B (zh) * | 2022-04-13 | 2022-06-17 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
CN114598631B (zh) * | 2022-04-28 | 2022-08-09 | 之江实验室 | 面向神经网络计算的分布式数据路由的建模方法和装置 |
-
2022
- 2022-07-25 CN CN202210874564.2A patent/CN114936099B/zh active Active
- 2022-08-17 WO PCT/CN2022/112951 patent/WO2024021192A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446540A (zh) * | 2018-03-19 | 2018-08-24 | 中山大学 | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 |
CN112084038A (zh) * | 2020-09-23 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 神经网络的内存分配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114936099A (zh) | 2022-08-23 |
WO2024021192A1 (zh) | 2024-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114936099B (zh) | 一种用于神经网络计算的图优化方法和装置 | |
CN114186687B (zh) | 一种面向神经网络模型计算的中间表示方法和装置 | |
WO2022022670A1 (zh) | 神经网络计算图的处理方法、装置及处理设备 | |
KR20100061720A (ko) | 그래프에 기초한 연산에서 데이터 흐름을 관리하는 방법 및 시스템 | |
CN115033391B (zh) | 一种用于神经网络计算的数据流动方法和装置 | |
US20230236888A1 (en) | Memory allocation method, related device, and computer-readable storage medium | |
CN115421897B (zh) | 一种面向芯粒的深度神经网络流水线并行调度方法及装置 | |
CN115269204B (zh) | 一种用于神经网络编译的内存优化方法及装置 | |
CN108139898B (zh) | 数据处理图编译 | |
US10691432B1 (en) | Compilation method | |
CN115268936B (zh) | 一种用于计算图编译的优化方法及装置 | |
CN115461718A (zh) | 神经网络中的内存分配 | |
US11915135B2 (en) | Graph optimization method and apparatus for neural network computation | |
CN114968249A (zh) | 使用硬件加速指令 | |
CN115268877B (zh) | 一种用于图计算并行执行的中间表示方法及装置 | |
CN115269205B (zh) | 一种面向神经网络计算的内存优化方法和装置 | |
JPH07244647A (ja) | 間接参照ループの並列化方法、並列化装置、並列実行方法および並列実行装置 | |
US11782723B1 (en) | Intermediate representation method and apparatus for parallel execution of graph computation | |
Witterauf et al. | Symbolic Loop Compilation for Tightly Coupled Processor Arrays | |
US20240104341A1 (en) | Memory optimization method and apparatus for neural network compilation | |
JPWO2011090032A1 (ja) | 並列処理プログラム生成方法、並列処理プログラム生成プログラム、及び並列処理プログラム生成装置 | |
Ben Romdhane | Extending the capabilities of Tiramisu | |
Sigvardsson et al. | Walk less, pick more: choosing optimal batches of orders in a warehouse | |
Suba et al. | A new data flow graph model extended for handling loops and mutable data in high level synthesis | |
Martínez del Amor et al. | Extracting Parallelism in Simulation Algorithms for PDP systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |