基于特定数据端口连接的识别使用图组件的自动聚类的基于图的程序规范的编译制造技术

技术编号:16048874 阅读:29 留言:0更新日期:2017-08-20 08:33
一种基于图的程序规范(628),包括:多个组件,每个组件对应于一处理任务并且包括一个或多个端口,端口包括用于发送或接收单个数据元素的标量数据端口和用于发送或接收多个数据元素的集合的集合数据端口;以及一个或多个链路,每个链路将上游组件的输出端口连接至下游组件的输入端口。生成用于表示多个组件的子集(630,631)的准备好的代码,包括:识别一个或多个子集边界,包括识别将一组件的集合数据端口连接至一组件的标量数据端口的一个或多个链路;基于识别出的子集边界形成子集;针对每个形成的子集生成准备好的代码,当用于被运行时系统执行时,代码使得执行与每个形成的子集中的组件相对应的处理任务。

【技术实现步骤摘要】
【国外来华专利技术】基于特定数据端口连接的识别使用图组件的自动聚类的基于图的程序规范的编译相关申请的交叉引用本申请要求于2014年9月2日提交的美国申请序列号62/044,645以及于2015年5月20日提交的美国申请序列号62/164,175的优先权。
本说明书涉及一种用于编译基于图的程序规范的方法。
技术介绍
一种用于数据流计算的方法利用基于图的表示,其中对应于图的节点(顶点)的计算组件通过与图的链路(有向边)对应的数据流(称为“数据流图”)耦合。通过数据流链路连接到上游组件的下游组件接收输入数据元素的有序流,并且以所接收的顺序处理输入数据元素,可选地生成一个或多个对应的输出数据元素流。用于执行这种基于图的计算的系统描述于专利技术名称为“EXECUTINGCOMPUTATIONSEXPRESSEDASGRAPHS(执行表达为图的计算)”的在先美国专利5,966,072中,其通过引用并入本文。在与该在先专利中描述的方法相关的实现方式中,每个组件被实现为驻留在通常多个计算机服务器之一上的进程。每个计算机服务器可以具有在任何一个时间活动的多个这样的组件进程,并且操作系统(例如,Unix)调度器在该服务器上托管的组件之间共享资源(例如,处理器时间和/或处理器内核)。在这种实现方式中,组件之间的数据流可以使用操作系统的数据通信服务和连接服务器的数据网络(例如,命名管道,TCP/IP会话等)来实现。组件的子集通常用作来自整体计算的数据的源和/或数据宿(或数据接收器,sink),例如,去往和/或来自数据文件、数据库表和外部数据流。然后,在例如通过协调进程建立组件进程和数据流之后,数据流过整个计算系统,该计算系统实现表达为通常由每个组件处的输入数据的可用性控制的图的计算并且为每个组件调度计算资源。因此,至少通过使不同的组件能够由不同的进程(托管在相同或不同的服务器计算机或处理器内核上)并行地执行,可以实现并行性,其中不同组件在通过数据流图的不同路径上并行地执行在本文中被称为组件并行性,并且不同组件通过数据流图在相同路径的不同部分上并行执行在本文中被称为流水线并行性。其他形式的并行性也得到这种方法的支持。例如,输入数据集可以例如根据数据集的记录中字段的值的分区来分割,其中每个部分被发送到处理数据集的记录的组件的单独副本。组件的这种单独的副本(或“实例”)可以在单独的服务器计算机或服务器计算机的单独的处理器内核上执行,从而实现本文所称的数据并行性。可以合并单独组件的结果以再次形成单个数据流或数据集。用于执行组件实例的计算机或处理器内核的数量将由开发人员在开发数据流图时指定。可以使用各种方法来提高这种方法的效率。例如,组件的每个实例不一定必须在其自己的操作系统进程中托管,例如使用一个操作系统进程来实现多个组件(例如,形成更大图的连接子图的组件)。上述方法的至少一些实现方式受到与在底层计算机服务器上所得到的进程的执行效率有关的限制。例如,这些限制可能涉及重新配置图的运行实例以改变数据并行度、改变到托管各种组件的服务器和/或平衡不同计算资源上的负载的困难。现有的基于图的计算系统也具有的缺陷是启动时间慢,这通常是因为太多的进程被不必要地启动,浪费了大的存储量。通常,进程在启动图的执行时开始,并在图的执行完成时结束。已经使用了用于分布计算的其他系统,其中将整体计算划分为更小的部分,并且将这些部分从一个主计算机服务器分发到各个其他(例如,“从属”)计算机服务器,从属计算机服务器各自独立地执行计算并将其结果返回到主服务器。一些这样的方法被称为“网格计算”。然而,除了经由调用那些部分的主计算机服务器之外,这样的方法通常依赖于每个计算的独立性,而不提供用于在计算部分之间传递数据或调度和/或对这些部分的执行进行排序的机制。因此,对于托管涉及多个组件之间的交互的计算,这样的方法没有提供直接有效的解决方案。用于大型数据集的分布式计算的另一种方法使用MapReduce框架,例如,如在Apache系统中体现的。通常,Hadoop具有分布式文件系统,其中分发针对每个命名文件的部分。用户根据两个函数指定计算:以分布式方式在命名输入的所有部分上执行的映射函数,以及在映射函数执行的输出的部分上执行的归约(reduce)函数。映射函数执行的输出被分割并再次存储在分布式文件系统中的中间部分中。然后以分布式方式执行归约函数以处理这些中间部分,从而产生整体计算的结果。尽管可以有效地执行可以在MapReduce框架中表示并且其输入和输出可修改以用于在MapReduce框架的文件系统中存储的计算,但是许多计算不匹配该框架和/或不容易适应于使得它们的所有输入和输出都在分布式文件系统中。总体而言,与组件(或组件的并行执行副本)托管在不同服务器上的上述方法相比,需要提高计算的底层规范是图的计算的计算效率(例如,增加给定计算资源的每单位处理的记录的数量)。此外,期望能够适应变化的计算资源和需求。还需要提供一种计算方法,其允许适应在一个或多个基于图的计算的执行期间可用的计算资源的变化,和/或允许适应例如由于正在处理的数据的特性导致的这样的计算的不同组件的计算负载的变化或者负载的时间变化。还需要提供能够有效地利用具有不同特性的计算资源的计算方法,例如使用具有每个服务器不同数量的处理器、每个处理器不同数量的处理器内核等的服务器,以有效地支持同质和异质环境。还期望使基于图的计算快速启动。提供这种效率和适应性的一个方面是在创建图时(在设计时)开发人员做出的选择、(在编译时)编译器所采取的动作和(在运行时)运行时系统所采取的动作之间提供适当的分离和抽象屏障。
技术实现思路
在一个方面,一般性地,一种用于处理基于图的程序规范的方法,包括:接收所述基于图的程序规范,所述基于图的程序规范包括:多个组件,每个组件对应于一处理任务并且包括一个或多个端口,所述一个或多个端口包括用于发送或接收单个数据元素的标量数据端口和用于发送或接收多个数据元素的集合的集合数据端口;以及一个或多个链路,所述一个或多个链路中的每个链路将所述多个组件中的上游组件的输出端口连接至所述多个组件中的下游组件的输入端口;以及处理所述基于图的程序规范以生成用于表示所述基于图的程序规范中所述多个组件的子集(对应于“执行集”)的准备好的代码。如本文所使用的,“准备好的代码”包括当对基于图的程序规范的解析后的元素进行转换时由编译器或解释器使用的以任何目标语言编写的代码,其可以包括可执行代码或者可以被进一步编译或解释成可执行代码的代码。所述处理包括:识别一个或多个子集边界,包括识别将一组件的集合数据端口连接至一组件的标量数据端口的一个或多个链路;基于识别出的子集边界形成子集;以及针对每个形成的子集生成准备好的代码,当用于被运行时系统执行时,所述准备好的代码使得执行与每个形成的子集中的组件相对应的处理任务。各个方面可以包括以下特征中的一个或多个。所述一个或多个子集边界包括一个或多个子集入口点。识别一个或多个子集边界包括识别一个或多个子集入口点,所述识别一个或多个子集入口点包括识别将一上游组件的集合数据输出端口连接至一下游组件的标量数据输入端口的至少一个链路。所述一个或多个子集边界包括一个或多个子集出口点。识别一个或多个子集边界包括识别一个或多个子集出本文档来自技高网
...
基于特定数据端口连接的识别使用图组件的自动聚类的基于图的程序规范的编译

【技术保护点】
一种用于处理基于图的程序规范的方法,所述方法包括:接收所述基于图的程序规范,所述基于图的程序规范包括:多个组件,每个组件对应于一处理任务并且包括一个或多个端口,所述一个或多个端口包括用于发送或接收单个数据元素的标量数据端口和用于发送或接收多个数据元素的集合的集合数据端口;以及一个或多个链路,所述一个或多个链路中的每个链路将所述多个组件中的上游组件的输出端口连接至所述多个组件中的下游组件的输入端口;以及处理所述基于图的程序规范以生成用于表示所述基于图的程序规范中所述多个组件的子集的准备好的代码,所述处理包括:识别一个或多个子集边界,包括识别将一组件的集合数据端口连接至一组件的标量数据端口的一个或多个链路;基于识别出的子集边界形成子集;以及针对每个形成的子集生成准备好的代码,当用于被运行时系统执行时,所述准备好的代码使得执行与每个形成的子集中的组件相对应的处理任务。

【技术特征摘要】
【国外来华专利技术】2014.09.02 US 62/044,645;2015.05.20 US 62/164,1751.一种用于处理基于图的程序规范的方法,所述方法包括:接收所述基于图的程序规范,所述基于图的程序规范包括:多个组件,每个组件对应于一处理任务并且包括一个或多个端口,所述一个或多个端口包括用于发送或接收单个数据元素的标量数据端口和用于发送或接收多个数据元素的集合的集合数据端口;以及一个或多个链路,所述一个或多个链路中的每个链路将所述多个组件中的上游组件的输出端口连接至所述多个组件中的下游组件的输入端口;以及处理所述基于图的程序规范以生成用于表示所述基于图的程序规范中所述多个组件的子集的准备好的代码,所述处理包括:识别一个或多个子集边界,包括识别将一组件的集合数据端口连接至一组件的标量数据端口的一个或多个链路;基于识别出的子集边界形成子集;以及针对每个形成的子集生成准备好的代码,当用于被运行时系统执行时,所述准备好的代码使得执行与每个形成的子集中的组件相对应的处理任务。2.根据权利要求1所述的方法,其中所述一个或多个子集边界包括一个或多个子集入口点。3.根据权利要求2所述的方法,其中识别一个或多个子集边界包括识别一个或多个子集入口点,所述识别一个或多个子集入口点包括识别将一上游组件的集合数据输出端口连接至一下游组件的标量数据输入端口的至少一个链路。4.根据权利要求2或3所述的方法,其中所述一个或多个子集边界包括一个或多个子集出口点。5.根据权利要求4所述的方法,其中识别一个或多个子集边界包括识别一个或多个子集出口点,所述识别一个或多个子集出口点包括识别将一上游组件的标量数据输出端口连接至一下游组件的集合数据输入端口的至少一个链路。6.根据权利要求4或5所述的方法,其中每个形成的子集包括一个或多个组件、不多于一个的子集入口点和一个或多个子集出口点。7.根据权利要求4到6中任一项所述的方法,其中基于识别出的子集边界形成子集包括:基于识别出的子集入口点和识别出的子集出口点形成子集。8.根据权利要求7所述的方法,其中形成子集包括:遍历所述基于图的程序规范的多个组件,同时保持遍历过的子集入口点和子集出口点的记录,并且将所述基于图的程序规范的每个组件与根据所述遍历过的子集入口点和子集出口点的记录确定的单个子集标识符相关联。9.根据权利要求8所述的方法,其中与多个组件的识别出的子集相关联的每个子集标识符是唯一的。10.根据权利要求8或9所述的方法,其中所述遍历过的子集入口点和子集出口点的记录被维持为标识符值的路径。11.根据权利要求10所述的方法,其中所述...

【专利技术属性】
技术研发人员:C·W·斯坦菲尔R·夏皮罗S·A·库克利希
申请(专利权)人:起元科技有限公司
类型:发明
国别省市:美国,US

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

1