[发明专利]循环与库融合有效
申请号: | 201810015644.6 | 申请日: | 2018-01-08 |
公开(公告)号: | CN108345937B | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 埃利·本德斯基;罗伯特·洪特;马克·赫弗南;吴景岳 | 申请(专利权)人: | 谷歌有限责任公司 |
主分类号: | G06N3/063 | 分类号: | G06N3/063;G06N3/08 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 周亚荣;安翔 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 融合运算 优化 编译系统 融合节点 融合 计算机存储介质 计算机程序 编译代码 表示数据 使用模式 优化计算 有效代码 有向边 匹配 运算 替换 转换 申请 分析 | ||
本申请涉及循环与库融合。用于生成有效的编译代码的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。在一个示例方法中,编译系统获得未优化的计算图,未优化的计算图包括表示运算的多个节点和表示数据依赖性的有向边。使用模式匹配来分析未优化的计算图以确定可以被一起融合成单个融合运算的可融合运算。通过用表示单个融合运算的融合节点替换表示未优化的计算图中的可融合运算的节点,将未优化的计算图变换成优化的计算图。编译系统通过将优化计算图的融合节点转换为执行融合运算的调用来产生有效代码。
技术领域
本说明书涉及构建和编译计算图。
背景技术
计算图通过运算类型、被输入到每一运算中并且从其输出的数据以及计算依赖性来定义运算序列。编译器转换运算的计算图以生成编译代码。
发明内容
本说明书一般地描述与计算图系统有关的技术,具体而言,涉及用于将计算表示为能够被转换为高效编译代码的图形运算的系统和方法。
计算图包括节点、连接符有向边和参数有向边。每个节点表示相应运算,每一连接符有向边将相应的第一节点连接到相应的第二节点,该相应的第二节点表示将由相应的第一节点表示的运算的输出接收为输入的运算,并且每一参数有向边连接到相应的节点并且将神经网络的一个或多个参数的流表示为由相应的节点表示的运算的输入。
通常,本说明书中所述的主题的一个创新方面可以由系统体现,该系统包括一个或多个计算机以及一个或多个存储设备,该一个或多个存储设备存储可运算的指令,该指令当由一个或多个计算机执行时,使一个或多个计算机执行实现示例方法的运算。示例方法包括:获得未优化的计算图,所述未优化的计算图包括表示运算的多个节点和表示数据依赖性的有向边;使用模式匹配来分析所述未优化的计算图以确定能够被一起融合成单个融合运算的可融合运算;通过用表示所述单个融合运算的融合节点替换在所述未优化的计算图中表示所述可融合运算的节点,将所述未优化的计算图变换成优化的计算图;以及向编译器提供所述优化计算图的所述融合节点,所述编译器能够将所述融合节点转换为执行所述融合运算以产生有效代码的调用。
该方面的其他实施例包括对应的计算机系统、装置和编码在一个或多个计算机存储设备上的计算机程序,分别被配置为执行方法的动作。对一个或多个计算机的系统被配置为执行特定操作或动作,是指系统已经在其上安装了软件、固件、硬件或它们的组合,其在运算中使系统执行操作或动作。对一个或多个计算机程序被配置为执行特定操作或动作,是指一个或多个程序包括当由数据处理装置执行时,使装置执行操作或动作的指令。
这些和其他实施例可以可选地包括一个或多个下述特征。可以将所述有效代码提供给计算设备以执行。执行可以包括执行所有融合运算的单个融合调用的计算图的运算。使用模式匹配来分析所述未优化的计算图以确定能够被一起融合成单个融合运算的可融合运算包括:将所述未优化的计算图的部分与分别对应于单个融合运算的运算模式比较;确定模式匹配所述未优化的计算图的一部分;以及确定在所述计算图中所述未优化的计算图的匹配部分能够用对应于该匹配模式的单个融合运算替换。所述单个融合运算可以是外部代码库运算。所述单个融合运算可以是循环运算。使用模式匹配来分析所述未优化的计算图以确定能够一起被融合成单个融合运算的可融合运算可以包括:在所述未优化的计算图中搜索需要计算以产生所述输入的输入运算;以及确定在所述计算图中所述输入运算能够用与产生所述输入所需的计算相对应的单个融合运算来替换。所述可融合运算可以是正则运算。所述可融合运算可以是融合成非正则运算的正则运算。使用模式匹配来分析所述未优化的计算图以确定能够一起被融合成单个融合运算的可融合运算可以包括:使用排序算法,在计算图中找出运算序列;以及确定能够使用合成将所述运算序列融合成单个融合运算。
可以在特定实施例中实现本说明书中所述的主题以便实现一个或多个下述优点。示例实施方式通过将运算合并成单个融合运算来产生有效的编译代码,编译器能够将该单个融合运算转换成单个调用例如循环或库调用。为了本说明书的目的,有效的编译代码是指比使用传统编译器编译的代码更快并且可能使用更少内存的代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于谷歌有限责任公司,未经谷歌有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810015644.6/2.html,转载请声明来源钻瓜专利网。