技术特征:
1.一种方法,其特征在于,所述方法包括:接收包含一个或多个控制流的tensorflow图;处理所述tensorflow图以从所述tensorflow图中提取控制流,并将所述提取的控制流存储在提取的控制流数据结构中;利用所述提取的控制流数据结构,对所述tensorflow图的输出递归地应用跟踪算法,以构建表示分层控制流的公用中间表示。2.根据权利要求1所述的方法,其特征在于,递归地应用所述跟踪算法包括:使用所述tensorflow图的输出作为当前节点;响应于确定所述当前节点不是终端节点,并且所述当前节点不是遍历的节点:将所述当前节点添加到遍历的数据结构中,所述遍历的数据结构指示所述当前节点已遍历;响应于确定所述当前节点包含在所述提取的控制流数据结构中的所述多个控制流中的一个控制流中:对包含所述当前节点的所述控制流的输入递归地应用所述跟踪算法;将包含所述当前节点的所述控制流添加到跟踪的数据结构中;响应于确定所述当前节点不包含在所述提取的控制流数据结构中的所述多个控制流中的一个控制流中:对所述当前节点的输入递归地应用所述跟踪算法;将所述当前节点添加到所述跟踪的数据结构中;输出所述跟踪的数据结构,其中,所述跟踪的数据结构是包含tensorflow图节点和公用中间表示控制流对象的列表。3.根据权利要求1所述的方法,其特征在于,还包括:根据所述公用中间表示构建至少一个编译器中间表示。4.根据权利要求1所述的方法,其特征在于,所述控制流包含多个tensorflow图分支,其中,数据使用两个分支路径中在合并节点处终止的一个分支路径,所述控制流包含多个循环条件节点,其中,每个循环条件节点对应于tensorflow图循环。5.根据权利要求4所述的方法,其特征在于,处理所述tensorflow图以从所述tensorflow图中提取控制流还包括:将所述多个tensorflow图分支和所述多个循环条件节点中的每一个的合并节点存储在收集的节点数据结构中。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:(a)确定所述收集的节点数据结构是否为空;(b)响应于确定所述收集的节点数据结构不为空:以确保在第二次选择任一节点之前所有节点都被选择了一次的顺序,从所述收集的节点数据结构中选择节点;响应于确定所述选择的节点是合并节点:(i)提取对应的tensorflow图分支;(ii)响应于确定所述tensorflow图分支有效:构建对应于所述tensorflow图分支的公用中间表示分支;将所述公用中间表示分支存储在所述提取的控制流数据结构中;
从所述收集的节点数据结构中移除所述合并节点;返回至(a);(iii)响应于确定所述tensorflow图分支无效:返回至(a);响应于确定所述选择的节点是循环条件节点:(i)提取对应的tensorflow图循环谓词和循环体;(ii)响应于确定所述tensorflow图循环谓词和循环体有效:构建对应于所述tensorflow图循环的公用中间表示循环;将所述公用中间表示循环存储在所述提取的控制流数据结构中;从所述收集的节点数据结构中移除所述循环条件节点;返回至(a);(iii)响应于确定所述tensorflow图循环谓词和循环体无效:返回至(a)。7.根据权利要求6所述的方法,其特征在于,提取对应的tensorflow图分支包括:通过遍历所述合并节点的输入边缘来识别所述合并节点的输入节点;对所述合并节点的所述输入节点递归地应用跟踪算法直到达到分支退出条件,并输出表示所述tensorflow图分支的两个分支路径。8.根据权利要求7所述的方法,其特征在于,当所述跟踪算法到达进入节点、退出节点、另一合并节点或循环条件节点时,达到所述分支退出条件。9.根据权利要求7所述的方法,其特征在于,递归地应用跟踪算法包括:使用所述合并节点的输入作为所述当前节点;响应于确定所述当前节点不是终端节点,所述当前节点不是遍历的节点,并且不满足所述分支退出条件:将所述当前节点添加到所述遍历的数据结构中,所述遍历的数据结构指示所述当前节点已遍历;响应于确定所述当前节点包含在所述提取的控制流数据结构中的所述多个控制流中的一个控制流中:对包含所述当前节点的所述控制流的输入递归地应用所述跟踪算法;将包含所述当前节点的所述控制流添加到跟踪的数据结构中;响应于确定所述当前节点不包含在所述提取的控制流数据结构中的所述多个控制流中的一个控制流中:对所述当前节点的所述输入递归地应用所述跟踪算法;将所述当前节点添加到所述跟踪的数据结构中;输出所述跟踪的数据结构,其中,所述跟踪的数据结构是包含tensorflow图节点和公用中间表示控制流对象的列表。10.根据权利要求7所述的方法,其特征在于,确定表示所述tensorflow图分支的所述两个分支路径是否有效包括:确定所述两个分支路径满足以下所有条件:所述两个分支路径不包含任何合并节点;所述两个分支路径不包含任何提取的分支,所述提取的分支是tensorflow图循环的一部分;所述跟踪算法输出的所述两个分支路径在同一合并节点处终止,或者至少一个分支路
径在终端节点处终止。11.根据权利要求7所述的方法,其特征在于,所述方法还包括:移除所述两个分支路径中包含的所有转发节点;响应于确定所述两个分支路径中的第一分支路径在所述两个分支路径中的第二分支路径中包含的转换节点处终止:将所述第二分支路径分成第一切片和第二切片,其中,所述第一切片包含所述转换节点和所述转换节点之前的节点,所述第二切片包含所述转换节点之后的节点,并将所述第二分支路径替换为所述第二切片并丢弃所述第一切片;将所述公用中间表示分支存储在所述提取的控制流数据结构中,所述公用中间表示分支包含分支谓词和所述两个分支路径,其中,如果所述第一分支和所述第二分支均在所述转换节点处终止,所述分支谓词是所述转换节点的第一输入。12.根据权利要求6所述的方法,其特征在于,提取对应的tensorflow图循环包括:对所述循环条件节点的输入节点递归地应用跟踪算法直到达到循环退出条件;达到所述循环退出条件时,输出所述tensorflow图循环的循环谓词;对所述循环条件节点的输出节点应用所述递归跟踪算法直到达到所述循环退出条件;达到所述循环退出条件时,输出所述tensorflow图循环的循环体。13.根据权利要求12所述的方法,其特征在于,当所述跟踪算法到达进入节点、退出节点或其它循环条件节点时,达到所述循环退出条件。14.根据权利要求12所述的方法,其特征在于,递归地应用所述跟踪算法包括:使用所述循环条件节点的输入作为所述当前节点;响应于确定所述当前节点不是终端节点,所述当前节点不是遍历的节点,并且不满足所述循环退出条件:将所述当前节点添加到所述遍历的数据结构中,所述遍历的数据结构指示所述当前节点已遍历;响应于确定所述当前节点包含在所述提取的控制流数据结构中的所述多个控制流中的一个控制流中:对包含所述当前节点的所述控制流的输入应用所述跟踪算法;将包含所述当前节点的所述控制流添加到跟踪的数据结构中;响应于确定所述当前节点不包含在所述提取的控制流数据结构中的所述多个控制流中的一个控制流中:对所述当前节点的所述输入应用所述跟踪算法;将所述当前节点添加到所述跟踪的数据结构中;输出所述跟踪的数据结构,其中,所述跟踪的数据结构是包含tensorflow图节点和公用中间表示控制流对象的列表。15.根据权利要求12所述的方法,其特征在于,应用跟踪算法包括:使用所述循环条件节点的输出作为所述当前节点;响应于确定所述当前节点不是终端节点,所述当前节点不是遍历的节点,并且不满足所述循环退出条件:将所述当前节点添加到所述遍历的数据结构中,所述遍历的数据结构指示所述当前节点已遍历;
响应于确定所述当前节点包含在所述提取的控制流数据结构中的所述多个控制流中的一个控制流中:对包含所述当前节点的所述控制流的输入应用所述跟踪算法;将包含所述当前节点的所述控制流添加到跟踪的数据结构中;响应于确定所述当前节点不包含在所述提取的控制流数据结构中的所述多个控制流中的一个控制流中:对所述当前节点的所述输入应用所述跟踪算法;将所述当前节点添加到所述跟踪的数据结构中;输出所述跟踪的数据结构,其中,所述跟踪的数据结构是包含tensorflow图节点和公用中间表示控制流对象的列表。16.根据权利要求6所述的方法,其特征在于,基于所述循环谓词和所述循环体确定所述tensorflow图循环是否有效包括:确定所述循环谓词和所述循环体满足以下所有条件:tensorflow图循环不包含任何循环条件节点;tensorflow图循环不包含tensorflow图分支的合并节点。17.根据权利要求6所述的方法,其特征在于,所述方法还包括:移除所述循环谓词和所述循环体中包含的所有转发节点;对于所述循环谓词和所述循环体中的每个相应的嵌套公用中间表示分支:响应于确定所述相应的嵌套公用中间表示分支具有空分支谓词:将所述公用中间表示分支中的所有节点转移到包含所述分支的所述循环谓词或所述循环体中;从所述循环谓词或所述循环体中移除所述公用中间表示分支;将对应于所述tensorflow图循环的所述公用中间表示循环存储在所述提取的控制流数据结构中,其中,所述公用中间表示循环包含所述循环谓词和所述循环体。18.一种非瞬时性计算机可读介质,其特征在于,所述非瞬时性计算机可读介质存储计算机可读指令,所述计算机可读指令在由处理系统的处理器执行时,使得所述处理系统执行根据权利要求1至17中任一项所述的方法。19.一种计算机程序,其特征在于,所述计算程序包括计算机可读指令,所述计算机可读指令在由处理系统的处理器执行时,使得所述处理系统执行根据权利要求1至17中任一项所述的方法。20.一种处理系统,其特征在于,所述处理系统包括:处理器;存储器,存储计算机可读指令,所述计算机可读指令在由所述处理器执行时,使得所述处理系统执行根据权利要求1至17中任一项所述的方法。
技术总结
提供了一种用于根据TensorFlow图构建公用中间表示的方法和系统,所述公用中间表示可以转换为多个编译器中间表示(intermediate representation,IR),这样能够高效地应用编译器优化。器优化。器优化。
技术研发人员:李杰克 恺婷
受保护的技术使用者:华为技术有限公司
技术研发日:2019.11.22
技术公布日:2022/8/26