This application involves the integration of circulation and library. Methods, systems, and devices for generating effective compiled code, including computer programs encoded on computer storage media. In one example, the compiler system obtains an unknown diagram, and the not optimized diagram includes the multiple nodes representing the operation and the directed edge representing the data dependence. Pattern matching is used to analyze unoptimized computational graphs to determine the fusion operations that can be fused together into a single fusion operation. By replacing the nodes that represent the fusion operation in an unknown graph with a fusion node representing a single fusion operation, the non optimized graph is transformed into an optimized graph. The compiling system generates effective code by converting the convergated node of the optimized calculation diagram into the call to perform the fusion operation.
【技术实现步骤摘要】
循环与库融合
本说明书涉及构建和编译计算图。
技术介绍
计算图通过运算类型、被输入到每一运算中并且从其输出的数据以及计算依赖性来定义运算序列。编译器转换运算的计算图以生成编译代码。
技术实现思路
本说明书一般地描述与计算图系统有关的技术,具体而言,涉及用于将计算表示为能够被转换为高效编译代码的图形运算的系统和方法。计算图包括节点、连接符有向边和参数有向边。每个节点表示相应运算,每一连接符有向边将相应的第一节点连接到相应的第二节点,该相应的第二节点表示将由相应的第一节点表示的运算的输出接收为输入的运算,并且每一参数有向边连接到相应的节点并且将神经网络的一个或多个参数的流表示为由相应的节点表示的运算的输入。通常,本说明书中所述的主题的一个创新方面可以由系统体现,该系统包括一个或多个计算机以及一个或多个存储设备,该一个或多个存储设备存储可运算的指令,该指令当由一个或多个计算机执行时,使一个或多个计算机执行实现示例方法的运算。示例方法包括:获得未优化的计算图,所述未优化的计算图包括表示运算的多个节点和表示数据依赖性的有向边;使用模式匹配来分析所述未优化的计算图以确定能够被一起融合成单个融合运算的可融合运算;通过用表示所述单个融合运算的融合节点替换在所述未优化的计算图中表示所述可融合运算的节点,将所述未优化的计算图变换成优化的计算图;以及向编译器提供所述优化计算图的所述融合节点,所述编译器能够将所述融合节点转换为执行所述融合运算以产生有效代码的调用。该方面的其他实施例包括对应的计算机系统、装置和编码在一个或多个计算机存储设备上的计算机程序,分别被配置为执行方法的动作。对 ...
【技术保护点】
1.一种方法,包括:获得未优化的计算图,所述未优化的计算图包括表示运算的多个节点和表示数据依赖性的有向边;使用模式匹配来分析所述未优化的计算图以确定能够被一起融合成单个融合运算的可融合运算;通过用表示所述单个融合运算的融合节点替换在所述未优化的计算图中表示所述可融合运算的节点,将所述未优化的计算图变换成优化的计算图;以及向编译器提供所述优化的计算图的所述融合节点,所述编译器能够将所述融合节点转换为执行所述融合运算以产生有效代码的调用。
【技术特征摘要】
2017.01.06 US 15/400,9421.一种方法,包括:获得未优化的计算图,所述未优化的计算图包括表示运算的多个节点和表示数据依赖性的有向边;使用模式匹配来分析所述未优化的计算图以确定能够被一起融合成单个融合运算的可融合运算;通过用表示所述单个融合运算的融合节点替换在所述未优化的计算图中表示所述可融合运算的节点,将所述未优化的计算图变换成优化的计算图;以及向编译器提供所述优化的计算图的所述融合节点,所述编译器能够将所述融合节点转换为执行所述融合运算以产生有效代码的调用。2.如权利要求1所述的方法,进一步包括:将所述有效代码提供给计算设备以执行。3.如权利要求2所述的方法,其中,所述执行包括:执行包括执行所有融合运算的单个融合运算的所述优化的计算图的运算。4.如权利要求1所述的方法,其中,使用模式匹配来分析所述未优化的计算图以确定能够被一起融合成单个融合运算的可融合运算包括:将所述未优化的计算图的部分与分别对应于单个融合运算的运算模式比较;确定一模式匹配所述未优化的计算图的一部分;以及确定在所述优化的计算图中所述未优化的计算图的匹配部分能够用对应于该匹配模式的单个融合运算替换。5.如权利要求1所述的方法,其中,所述单个融合运算是外部代码库运算。6.如权利要求1所述的方法,其中,所述单个融合运算是循环运算。7.如权利要求1所述的方法,其中,使用模式匹配来分析所述未优化的计算图以确定能够一起被融合成单个融合运算的可融合运算包括:在所述未优化的计算图中搜索需要计算以产生所述输入的输入运算;以及确定在所述优化的计算图中所述输入运算能够用与产生所述输入所需的所述计算相对应的单个融合运算来替换。8.如权利要求1所述的方法,其中,所述可融合运算是正则运算。9.如权利要求1所述的方法,其中,所述可融合运算是融合成非正则运算的正则运算。10.根据权利要求1所述的方法,其中,使用模式匹配来分析所述未优化的计算图以确定能够一起被融合成单个融合运算的可融合运算包括:使用排序算法,在计算图中找出运算序列;以及确定能够使用合成将所述运算序列融合成单个融合运算。11.一种系统,包括:一个或多个计算机;以及一个或多个存储设备,所述一个或多个存储设备存储指令,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机施行系统操作,所述系统操作包括:获得未优化的计算图,所述未优化的计算图包括表示运算的多个节点和表示数据依赖性的有向边;使用模式匹配来分析...
【专利技术属性】
技术研发人员:埃利·本德斯基,罗伯特·洪特,马克·赫弗南,吴景岳,
申请(专利权)人:谷歌有限责任公司,
类型:发明
国别省市:美国,US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。