一种用于神经网络计算的图优化方法和装置与流程

文档序号:31233832发布日期:2022-08-23 22:19阅读:115来源:国知局
一种用于神经网络计算的图优化方法和装置与流程

1.本发明涉及一种基于特定计算模型的计算机技术领域,尤其涉及一种用于神经网络计算的图优化方法和装置。


背景技术:

2.随着人工智能产业化应用的快速发展,用于深度神经网络模型计算的图优化技术越来越成为学术界和工业界的研究热点。
3.为此,我们提出了一种用于神经网络计算的图优化方法和装置。


技术实现要素:

4.本发明的目的在于提供一种用于神经网络计算的图优化方法和装置,用于神经网络计算的计算图中的多个节点包含重定义变量时,所述重定义变量面对多路计算流图时所对应的关于重定义变量的正确定义的选择依赖于计算图运行阶段执行流所流经的路径。为了在计算图执行之前优化包含重定义变量的计算图,本发明提供了一种图优化的全局单节点定义模式的计算图中间表示,提出了关于重定义变量的正确定义的路由选择器的插入准则和分析方法。本发明解决了编译期计算图中包含重定义变量的节点流经多路计算流时所对应的关于重定义变量的正确定义的路由选择问题。本发明通过简化计算图中节点的重定义变量的特性,简化了用于神经网络计算的图优化过程,获得了更好的优化结果。研究人员和工程应用者开发算法模型的过程中,利用本发明简化了用于神经网络计算的计算图的数据流,减少数据流中张量变量所需的内存开销,降低了大模型对于硬件内存资源的要求,推动了深度神经网络模型落地应用的发展。
5.本发明采用的技术方案如下:一种用于神经网络计算的图优化方法,包括以下步骤:步骤s1:转换计算图,将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图;步骤s2:分配寄存器:为所述计算图节点处的变量分配寄存器;步骤s3:定义关于重定义变量的路由选择器,根据所述计算图运行阶段执行流所流经的路径选择所述计算图节点处重定义变量的正确定义;步骤s4:求解关于重定义变量的路由选择器;步骤s5:定义关于重定义变量的路由选择器插入节点的准则;步骤s6:分析关于重定义变量节点的支配边集合;步骤s7:插入关于重定义变量的路由选择器;步骤s8:重命名关于重定义变量。
6.进一步地,所述步骤s1具体包括以下子步骤:步骤s11:记录关于所有变量所在用于神经网络计算的神经网络计算图起始节点处定义的变量的名称;
步骤s12:根据所述用于神经网络计算的神经网络计算图的拓扑顺序遍历所述用于神经网络计算的神经网络计算图,每当存在后继节点重新定义所述变量时,则为所述变量产生一个新的名称,得到全局单节点定义模式的计算图。
7.进一步地,所述步骤s2具体包括以下子步骤:步骤s21:分析所述计算图节点处的变量的生命周期;步骤s22:根据所述生命周期为所述变量分配寄存器,当所述变量对应的所述生命周期不冲突,则不冲突的所述生命周期的所述变量复用同一个寄存器。
8.进一步地,所述步骤s3中在所述计算图中间表示中,当重定义变量面对多路计算流时所对应的正确路由的选择时,则在所述重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器匹配所述重定义变量的正确定义。
9.进一步地,所述步骤s3定义关于重定义变量的路由选择器包括以下定义:定义插入路由选择器的条件;定义所述计算图的支配属性;定义严格的所述计算图。
10.进一步地,所述定义插入路由选择器的条件具体为:当存在所述计算图的多路计算流的汇合节点的前驱节点构成两个或两个以上的不同子图,并且不同所述子图中各自均包含重定义变量的定义节点,则同时满足条件一和条件二,在所述计算图的重定义变量的定义节点处插入重定义变量的路由选择器;所述条件一为不同所述子图与所述计算图的多路计算流的汇合节点均存在连边,且所述连边存在唯一的共同节点为所述计算图的多路计算流的汇合节点;所述条件二为在一次所述计算图执行流中,所述计算图的多路计算流的汇合节点不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边,只能选择其中一条连边。
11.进一步地,所述定义所述计算图的支配属性具体为:所述计算图执行流从所述计算图的根结点流向节点的过程中所有路径都会经过所述计算图的多路计算流的汇合节点。
12.进一步地,所述定义严格的所述计算图具体为:对于没有所述路由选择器的节点,前驱节点中一定存在所述重定义变量的定义支配所述节点;对于有所述路由选择器的节点,一定存在所述重定义变量的多个定义,关于所述重定义变量对应的定义支配所述路由选择器的节点对应的前驱节点。
13.进一步地,所述步骤s4具体包括以下子步骤:步骤s41:在所述计算图的非关键边上插入重定义变量的正确定义的拷贝节点:在所述计算图的非关键边上插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;步骤s42:分解所述计算图的关键边:在所述计算图的关键边上添加空节点;步骤s43:在所述计算图的关键边上插入重定义变量的正确定义的拷贝节点:在所述步骤s42所述空节点的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;步骤s44:移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点:当
所述重定义变量的正确定义的路由选择器被所述步骤s42和所述步骤s43解构,则将重定义变量的正确定义节点插入到所述多路计算流的汇合节点对应的前驱节点中。
14.进一步地,所述步骤s5具体包括以下子步骤:步骤s51:定义节点v1严格支配节点v2:节点v1支配节点v2,且节点v1是节点v2的前驱节点,v1≠v2;步骤s52:定义节点v1的支配边:所述支配边包含满足以下条件的所有节点vi的集合:节点v1支配节点vi的前驱节点,且节点v1不严格支配节点vi。
15.进一步地,所述步骤s6具体包括以下子步骤:步骤s61:分析包含重定义变量的起始节点的支配边:关于任意节点处的重定义变量的路由选择器的插入位置为节点的支配边集合;步骤s62:迭代起始节点的后继节点,直到没有节点需要关于重定义变量的路由选择器。
16.进一步地,所述步骤s7具体包括:当节点包含任意一个重定义变量的正确定义时,则在所述任意一个重定义变量的支配边上的任何节点处都插入一个关于重定义变量的路由选择器。
17.进一步地,所述步骤s8具体包括:对所述插入关于重定义变量的路由选择器输出的变量进行重命名。
18.本发明还提供一种用于神经网络计算的图优化装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例任一项所述的一种用于神经网络计算的图优化方法。
19.本发明还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例任一项所述的一种用于神经网络计算的图优化方法。
20.本发明的有益效果是:本发明用于神经网络计算的计算图中的多个节点所包含的重定义变量面对多路计算流图时所对应的正确定义的选择问题,传统方法都是需要先执行计算图,并且根据执行流实际所流经的路径来选择重定义变量所对应的正确定义。本发明为包含重定义变量的计算图提供了编译期的图优化方法,提供了一种图优化的全局单节点定义模式的计算图中间表示,在计算图编译期就解决了计算图中包含重定义变量的节点流经多路计算流时所对应的关于重定义变量的正确定义的路由选择问题,简化了用于神经网络计算的计算图的数据流,减少数据流中张量变量所需的内存开销,降低了大模型对于硬件内存资源的要求。本发明用于神经网络计算的数据流动方法提高整个计算图的计算效率,节约硬件和时间成本。
附图说明
21.图1为本发明一种用于神经网络计算的图优化方法的流程图;图2为本发明实施例将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图的示意图;图3为本发明实施例为计算图节点处的变量分配寄存器的示意图;图4为本发明实施例面对多路计算流图时的重定义变量插入路由选择器的示意图;
图5为本发明实施例定义插入路由选择器的条件的示意图;图6为本发明实施例定义所述计算图的支配属性的示意图;图7为本发明实施例重定义变量对应的定义支配路由选择器的节点对应的前驱节点的示意图;图8为本发明实施例定义严格的所述计算图的示意图;图9为本发明实施例求解关于重定义变量的路由选择器过程的示意图;图10为本发明实施例分析关于重定义变量节点的支配边集合的示意图;图11为本发明实施例分析关于重定义变量节点的支配边集合以及插入关于重定义变量的路由选择器的示意图;图12为本发明实施例插入关于重定义变量的路由选择器输出的变量进行重命名的示意图;图13为本发明一种用于神经网络计算的图优化装置的结构图。
具体实施方式
22.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.见图1,一种用于神经网络计算的图优化方法,包括以下步骤:步骤s1:转换计算图,将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图;步骤s11:记录关于所有变量所在用于神经网络计算的神经网络计算图起始节点处定义的变量的名称;步骤s12:根据所述用于神经网络计算的神经网络计算图的拓扑顺序遍历所述用于神经网络计算的神经网络计算图,每当存在后继节点重新定义所述变量时,则为所述变量产生一个新的名称,得到全局单节点定义模式的计算图。
24.步骤s2:分配寄存器:为所述计算图节点处的变量分配寄存器;步骤s21:分析所述计算图节点处的变量的生命周期;步骤s22:根据所述生命周期为所述变量分配寄存器,当所述变量对应的所述生命周期不冲突,则不冲突的所述生命周期的所述变量复用同一个寄存器。
25.步骤s3:定义关于重定义变量的路由选择器,根据所述计算图运行阶段执行流所流经的路径选择所述计算图节点处重定义变量的正确定义;在所述计算图中间表示中,当重定义变量面对多路计算流时所对应的正确路由的选择时,则在所述重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器匹配所述重定义变量的正确定义;定义关于重定义变量的路由选择器包括以下定义:定义插入路由选择器的条件;当存在所述计算图的多路计算流的汇合节点的前驱节点构成两个或两个以上的不同子图,并且不同所述子图中各自均包含重定义变量的定义节点,则同时满足条件一和条件二,在所述计算图的重定义变量的定义节点处插入重定义变量的路由选择器;
所述条件一为不同所述子图与所述计算图的多路计算流的汇合节点均存在连边,且所述连边存在唯一的共同节点为所述计算图的多路计算流的汇合节点;所述条件二为在一次所述计算图执行流中,所述计算图的多路计算流的汇合节点不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边,只能选择其中一条连边。
26.定义所述计算图的支配属性;所述计算图执行流从所述计算图的根结点流向节点的过程中所有路径都会经过所述计算图的多路计算流的汇合节点。
27.定义严格的所述计算图;对于没有所述路由选择器的节点,前驱节点中一定存在所述重定义变量的定义支配所述节点;对于有所述路由选择器的节点,一定存在所述重定义变量的多个定义,关于所述重定义变量对应的定义支配所述路由选择器的节点对应的前驱节点。
28.步骤s4:求解关于重定义变量的路由选择器;步骤s41:在所述计算图的非关键边上插入重定义变量的正确定义的拷贝节点:在所述计算图的非关键边上插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;步骤s42:分解所述计算图的关键边:在所述计算图的关键边上添加空节点;步骤s43:在所述计算图的关键边上插入重定义变量的正确定义的拷贝节点:在所述步骤s42所述空节点的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;步骤s44:移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点:当所述重定义变量的正确定义的路由选择器被所述步骤s42和所述步骤s43解构,则将重定义变量的正确定义节点插入到所述多路计算流的汇合节点对应的前驱节点中。
29.步骤s5:定义关于重定义变量的路由选择器插入节点的准则;步骤s51:定义节点v1严格支配节点v2:节点v1支配节点v2,且节点v1是节点v2的前驱节点,v1≠v2;步骤s52:定义节点v1的支配边:所述支配边包含满足以下条件的所有节点vi的集合:节点v1支配节点vi的前驱节点,且节点v1不严格支配节点vi。
30.步骤s6:分析关于重定义变量节点的支配边集合;步骤s61:分析包含重定义变量的起始节点的支配边:关于任意节点处的重定义变量的路由选择器的插入位置为节点的支配边集合;步骤s62:迭代起始节点的后继节点,直到没有节点需要关于重定义变量的路由选择器。
31.步骤s7:插入关于重定义变量的路由选择器;当节点包含任意一个重定义变量的正确定义时,则在所述任意一个重定义变量的支配边上的任何节点处都插入一个关于重定义变量的路由选择器。
32.步骤s8:重命名关于重定义变量;对所述插入关于重定义变量的路由选择器输出的变量进行重命名。
33.实施例:本实施例中所出现的
“”
表示为空集。
34.步骤s1:转换计算图,将用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图;步骤s11:记录关于所有变量所在用于神经网络计算的神经网络计算图起始节点处定义的变量的名称;步骤s12:根据所述用于神经网络计算的神经网络计算图的拓扑顺序遍历所述用于神经网络计算的神经网络计算图,每当存在后继节点重新定义所述变量时,则为所述变量产生一个新的名称,得到全局单节点定义模式的计算图。
35.参见图2为用于神经网络计算的神经网络计算图转换为全局单节点定义模式的计算图的示意图,首先记录在计算图起始节点v0处定义的变量a的名称为a0,在后继节点v1处使用的变量a的名称更新为a0。由于后继节点v2处重新定义了变量a,因此变量a0的生命周期从节点v0至节点v1。而且,需要为节点v2处的变量a产生新的名称a1,然后将后继节点v4处使用的变量a的名称更新为a1。又由于后继节点v4处重新定义了变量a,因此变量a1的生命周期从节点v2至节点v4。
36.:表示张量x与张量y进行相加操作。
37.:表示将张量a输入整流线性单元。
38.:表示张量x与张量y进行矩阵乘法操作。
39.步骤s2:分配寄存器:为所述计算图节点处的变量分配寄存器;步骤s21:分析所述计算图节点处的变量的生命周期;步骤s22:根据所述生命周期为所述变量分配寄存器,当所述变量对应的所述生命周期不冲突,则不冲突的所述生命周期的所述变量复用同一个寄存器。
40.参见图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的内存。
41.步骤s3:定义关于重定义变量的路由选择器,根据所述计算图运行阶段执行流所流经的路径选择所述计算图节点处重定义变量的正确定义;所述路由选择器具有多路复用器的语义;在所述计算图中间表示中,当重定义变量面对多路计算流时所对应的正确路由的选择时,则在所述重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器匹配所述重定义变量的正确定义;对于所述计算图节点中重定义变量,在所述计算图中间表示中,所述重定义变量面对多路计算流图时所对应的正确路由的选择依赖于计算图运行阶段执行流所流经的路径。所以,为了在所述计算图执行之前优化所述计算图,需要在重定义变量的多路计算流的汇合处插入路由选择器,利用所述路由选择器来匹配重定义变量的正确定义。
42.参见图4为面对多路计算流图时的重定义变量插入路由选择器的示意图,如图4左边所示,节点 v5处的重定义变量b的定义只有在计算图运行阶段才能确定是复制节点v1处的b0还是节点v3处的b1。节点v5处的重定义变量b的定义面对多路计算流图时,需要插入如图4右边所示的路由选择器
ϕ 函数,并且使用所述路由选择器的匹配结果更新节点 v5处的重定义变量b的定义。
43.:表示随机生成形状为5行3列的张量。
44.:表示返回执行包含bi张量变量的分支。
45.:表示进入执行vi节点的计算流。
46.定义关于重定义变量的路由选择器包括以下定义:定义插入路由选择器的条件;当存在所述计算图的多路计算流的汇合节点的前驱节点构成两个或两个以上的不同子图,并且不同所述子图中各自均包含重定义变量的定义节点,则同时满足条件一和条件二,在所述计算图的重定义变量的定义节点处插入重定义变量的路由选择器;所述条件一为不同所述子图与所述计算图的多路计算流的汇合节点均存在连边,且所述连边存在唯一的共同节点为所述计算图的多路计算流的汇合节点;所述条件二为在一次所述计算图执行流中,所述计算图的多路计算流的汇合节点不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边,只能选择其中一条连边。
47.参见图5为定义插入路由选择器的条件的示意图,子图3是所述计算图的多路计算流的汇合节点,包含了重定义变量b的使用表达式。只要满足以下条件就可以插入关于重定义变量b的路由选择器:条件一:存在子图1和子图2,并且所述子图中分别包含重定义变量的定义的节点v1和节点v3,存在子图1和子图2与所述计算图的多路计算流的汇合节点的两条连边分别为连边e
1,3
和连边e
2,3
;条件二:在一次计算图执行流中,所述计算图的多路计算流的汇合节点v5不会同时流经不同所述子图与所述计算图的多路计算流的汇合节点的连边e
1,3
和连边e
2,3
,只可能选择连边 e
1,3
和连边e
2,3
的其中之一。
48.:表示判断表达式的值是否为真,如果为真,则执行v3节点的计算流;否则执行v5节点的计算流。
49.定义所述计算图的支配属性;所述计算图执行流从所述计算图的根结点流向节点的过程中所有路径都会经过所述计算图的多路计算流的汇合节点。
50.参见图6为定义所述计算图的支配属性的示意图,计算图中节点d支配节点n的定义为:执行流从计算图的根节点流向节点n的过程中的所有路径都会经过节点d。
51.:表示计算图按照拓扑顺序进行遍历时的起始节点。
52.定义严格的所述计算图;对于没有所述路由选择器的节点,前驱节点中一定存在所述重定义变量的定义支配所述节点;
对于有所述路由选择器的节点,一定存在所述重定义变量的多个定义,关于所述重定义变量对应的定义支配所述路由选择器的节点对应的前驱节点。
53.参见图7为重定义变量对应的定义支配路由选择器的节点对应的前驱节点的示意图,对于有路由选择器的节点x,存在变量的多个定义xa,xb,xc。变量x对应的定义xa,xb,xc分别支配所述节点vd的前驱节点va,vb,vc。
54.:表示计算图按照拓扑顺序进行遍历时的起始节点。
55.图7所示的标识,表示所述位置的表达式可以为任意表达式。
56.参见图8为定义严格的所述计算图的示意图:1)变量a2,a1,a3分别是关于重定义变量a的路由选择器的三个参数。变量a2,a1,a3的定义分别支配子图n的包含变量a2,a1,a3使用表达式的前驱节点。
57.2)对于变量a0在变量a的路由选择器节点之外被使用的情形,那么包含变量a0的定义的节点v0一定支配子图n的节点。
58.:表示创建一个与张量a0形状相同且所有元素都为1的张量。
59.:表示关于张量变量a的路由选择函数,也称作关于张量变量a正确定义的路由选择器。
60.图8所示标识代表为被无颜色填充的框所标识的张量变量(如,,,)所处节点处关于张量变量a的定义支配被有颜色填充的框所标识的张量变量(如,,,)所处节点处关于张量变量a的使用表达式。
61.步骤s4:求解关于重定义变量的路由选择器;步骤s41:在所述计算图的非关键边上插入重定义变量的正确定义的拷贝节点:在所述计算图的非关键边上插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;步骤s42:分解所述计算图的关键边:在所述计算图的关键边上添加空节点;所述计算图的关键边的定义为:所述连边的起始节点存在多个后继节点,同时所述连边的尾节点存在多个前驱节点。
62.步骤s43:在所述计算图的关键边上插入重定义变量的正确定义的拷贝节点:在所述步骤s42所述空节点的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点;步骤s44:移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点:当所述重定义变量的正确定义的路由选择器被所述步骤s42和所述步骤s43解构,则将重定义变量的正确定义节点插入到所述多路计算流的汇合节点对应的前驱节点中。
63.参见图9为求解关于重定义变量的路由选择器过程的示意图:1)首先将路由选择器的输出变量接管重定义变量的正确定义的拷贝节点v4插入到计算图的非关键边上,也就是连接节点v3至节点v5之间的边。
64.2)分解计算图的关键边,也就是连接节点v2至节点v8之间的边。通过在关键边上添加空节点 v7。
65.3)在所述空节点v7的前驱节点的位置插入路由选择器的输出变量接管重定义变量的正确定义的拷贝节点v6。
66.4)移除所述计算图中多路计算流的汇合处所插入的路由选择器的节点b2= ϕ (b0,b1)。
67.步骤s5:定义关于重定义变量的路由选择器插入节点的准则;步骤s51:定义节点v1严格支配节点v2:节点v1支配节点v2,且节点v1是节点v2的前驱节点,v1≠v2;步骤s52:定义节点v1的支配边:所述支配边包含满足以下条件的所有节点vi的集合:节点v1支配节点vi的前驱节点,且节点v1不严格支配节点vi。
68.步骤s6:分析关于重定义变量节点的支配边集合;步骤s61:分析包含重定义变量的起始节点的支配边:关于任意节点处的重定义变量的路由选择器的插入位置为节点的支配边集合;步骤s62:迭代起始节点的后继节点,直到没有节点需要关于重定义变量的路由选择器;由于关于重定义变量的路由选择器本身是一种关于重定义变量的定义,必须迭代支配边准则;参见图10为分析关于重定义变量节点的支配边集合的示意图;所述分析节点e的支配边集合{e}的过程如下:步骤1节点e的支配节点集合: ;步骤2节点e的严格支配节点集合:;步骤3第一轮迭代:节点e的后继节点集合:步骤3.1节点e的后继节点集合:;步骤3.2节点e的后继节点集合移除节点e的严格支配节点集合:;步骤4第二轮迭代:节点e的后继节点集合的后继节点集合,节点f的后继节点集合:和节点g的后继节点集合:;步骤4.1迭代节点f的后继节点集合:;步骤4.2节点f的后继节点集合移除节点e的严格支配节点集合:;步骤4.3迭代节点g的后继节点集合:;步骤4.4节点g的后继节点集合移除节点e的严格支配节点集合:;步骤5第三轮迭代:节点集合和节点集合的后继节点:步骤5.1节点h的后继节点集合:;步骤5.2节点h的后继节点集合移除节点e的严格支配节点集合:;步骤5.3节点d的后继节点集合:;步骤5.4节点d的后继节点集合移除节点e的严格支配节点集合;步骤5.5迭代节点k的后继节点集合:;步骤5.6节点k的后继节点集合移除节点e的严格支配节点集合:;
步骤6第四轮迭代:节点集合和节点集合的后继节点:步骤6.1节点l的后继节点集合:;步骤6.2节点e的后继节点集合:;步骤6.3节点e的后继节点集合移除节点e的严格支配节点集合:;步骤7节点e的支配边集合为:{节点f后继节点集合移除节点e严格支配边集合}∪{节点g后继节点集合移除节点e严格支配边集合}∪{节点(h,d,k)后继节点集合移除节点e严格支配边集合}∪{节点e后继节点集合移除节点e严格支配边集合};所以,节点e的支配边集合。
69.步骤s7:插入关于重定义变量的路由选择器;当节点包含任意一个重定义变量的正确定义时,则在所述任意一个重定义变量的支配边上的任何节点处都插入一个关于重定义变量的路由选择器。
70.参见图11为分析关于重定义变量节点的支配边集合以及插入关于重定义变量的路由选择器的示意图:步骤1:节点f的支配节点集合:;步骤2:节点f的严格支配节点集合:;步骤3:第一轮迭代:分析节点f的后继节点:节点f的支配边集合:,分别在d和h节点处,插入关于x的路由选择器;步骤4:第二轮迭代:分析节点f的后继节点集合的后继节点:步骤4.1:节点d的支配节点集合:;步骤4.2:节点d的严格支配节点集合:;步骤4.3:节点d的支配边集合: ,在l节点处,插入关于x的路由选择器;步骤4.4:节点h的支配节点集合:;步骤4.5:节点h的严格支配节点集合:;步骤4.6:节点h的支配边集合: ,在e节点处,插入关于x的路由选择器;步骤5:第三轮迭代:分析节点d的后继节点集合和节点h的后继节点集合的后继节点:步骤5.1:节点l的后继节点集合;步骤5.2:节点l的支配边集合:;
步骤5.3:节点e支配边集合:,在k节点处,插入关于x的路由选择器。
71.步骤s8:重命名关于重定义变量;对所述插入关于重定义变量的路由选择器输出的变量进行重命名。
72.图11所示的标识,表示所述位置的表达式可以为任意表达式。
73.参见图12为插入关于重定义变量的路由选择器输出的变量进行重命名的示意图,关于节点 f 处的重定义变量,在节点f的支配边集合的节点处均需要进行重命名:分别在节点 d,h,e,k,l 处对重定义变量x进行重命名。
74.图12所示的标识,表示所述位置的表达式可以为任意表达式。
75.与前述一种用于神经网络计算的图优化方法的实施例相对应,本发明还提供了一种用于神经网络计算的图优化装置的实施例。
76.参见图13,本发明实施例提供的一种用于神经网络计算的图优化装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的一种用于神经网络计算的图优化方法。
77.本发明一种用于神经网络计算的图优化装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图13所示,为本发明一种用于神经网络计算的图优化装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图13所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
78.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
79.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
80.本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种用于神经网络计算的图优化方法。
81.所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(smartmediacard,smc)、sd卡、闪存卡(flashcard)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计
算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
82.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1