循环与库融合制造技术

技术编号:18576601 阅读:29 留言:0更新日期:2018-08-01 11:41
本申请涉及循环与库融合。用于生成有效的编译代码的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。在一个示例方法中,编译系统获得未优化的计算图,未优化的计算图包括表示运算的多个节点和表示数据依赖性的有向边。使用模式匹配来分析未优化的计算图以确定可以被一起融合成单个融合运算的可融合运算。通过用表示单个融合运算的融合节点替换表示未优化的计算图中的可融合运算的节点,将未优化的计算图变换成优化的计算图。编译系统通过将优化计算图的融合节点转换为执行融合运算的调用来产生有效代码。

Cycle and library fusion

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示出了示例编译系统。图2是用于从计算图内的计算生成有效代码的示例过程的流程图。图3表示两个正则一元运算的图形链。图4表示可以融合在一起的非一元运算的运算。图5a示出表示转置和点运算的计算图的子图。图5b示出了图5a中所示的子图的优化版本。图6a示出表示反向滤波器卷积的模式。图6b示出表示反向输入卷积的模式。不同图中相似的参考数字和名称表示相似的元件。具体实施方式本说明书一般地描述编译由计算图表示的运算的编译系统。特别地,本说明书描述了用于通过将计算融合在一起来从计算图内的计算生成有效代码的技术。计算数据流图表示例如机器学习模型的计算,其中,节点表示运算,而有向边表示运算之间的数据依赖性。到节点的输入边表示到节点的输入流,即,由节点表示的运算的输入自变量。如果运算所需的所有自变量都可用于运算节点,则该节点被使能并且可以被执行。来自节点的输出边表示将被用作由另一节点表示的运算的输入的由该节点表示的运算的输出流。因此,将图中的第一节点连接到图中的第二节点的有向边指示由第一节点所表示的运算所生成的输出被用作由第二节点所表示的运算的输入。在一些实施方式中,在计算图中表示的运算是线性代数运算,例如矩阵乘法、神经网络运算或用于不同种类的机器学习模型的运算。神经网络是采用一层或多层非线性单元来预测接收输入的输出的机器学习模型。一些神经网络是深度神经网络,其除了输出层之外,还包括一个或多个隐藏层。每一隐藏层的输出层被用作网络中另一层即另一隐藏层、输出层或两者的输入。网络的一些层根据相应参数集的当前值,从接收的输入生成输出,而网络的其他层可以不具有参数。由计算图表示的运算可以是神经网络计算推理即通过神经网络层处理输入以针对输入生成神经网络输出所需的运算。附加或替选地,由计算图表示的运算可以是通过执行神经网络训练过程来调整神经网络的参数的值来训练神经网络、例如用于使用反向传播来从参数的初始值确定参数的训练值所必需的运算。在一些情况下,例如在训练神经网络期间,由计算图表示的运算可以包括由神经网络的多个副本执行的运算。举例说明,从前一层接收输入的神经网络层可以使用参数矩阵来执行参数矩阵和输入之间的矩阵乘法。在一些情况下,矩阵乘法可以表示为计算图中的多个节点。例如,矩阵乘法可以被分成多个乘法和加法运算,以及每个运算可以由计算图中的不同节点表示。每个节点表示的运算可以生成相应的输出,其在有向边上流向后续节点。在由最终节点表示的运算产生矩阵乘法的结果之后,结果在有向边上流向另一节点。结果等同于执行矩阵乘法的神经网络层的输出。在一些其他情况下,矩阵乘法被表示为图中的一个节点。节点表示的运算可以将第一有向边上的输入张量和第二有向边上的权重张量例如参数矩阵接收为输入。节点可以处理输入张量和加权张量,例如执行输入张量和加权张量的矩阵乘法,以在第三有向边上输出等效于神经网络层的输出的输出张量。可以由计算图中的节点表示的其他神经网络运算包括其他数学运算,例如减法、除法和梯度计算;数组运算,例如连结、拼接、拆分或秩;以及神经网络构建块运算,例如SoftMax、Sigmoid、整流线性单本文档来自技高网...

【技术保护点】
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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1