CN103778015B - 在基于图的计算中的计算资源管理 - Google Patents
在基于图的计算中的计算资源管理 Download PDFInfo
- Publication number
- CN103778015B CN103778015B CN201310424248.6A CN201310424248A CN103778015B CN 103778015 B CN103778015 B CN 103778015B CN 201310424248 A CN201310424248 A CN 201310424248A CN 103778015 B CN103778015 B CN 103778015B
- Authority
- CN
- China
- Prior art keywords
- data processing
- processing element
- collection
- annexable
- calculating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Apparatus For Radiation Diagnosis (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
Abstract
一种执行基于图的计算,包括:接受计算图的规范,在所述计算图中,数据处理元素通过链接元素来结合;将数据处理元素划分成集,所述集之中的至少一个集包括多个数据处理元素;对每个集分配不同的计算资源;以及根据所述计算图来处理数据,包括使用所分配的计算资源执行与所述数据处理元素对应的计算。
Description
本申请是申请号为200780017090.3、申请日为2007年05月15日、发明名称为“用于执行基于图的计算的方法和系统”的发明专利申请的分案申请。
技术领域
本发明涉及在基于图的计算中的计算资源管理。
背景技术
通常,通过有向图将复杂计算表示为数据流,其中所述计算的组元(component)与图的顶点以及与对应于图的链路(弧、边)的组元之间的数据流相关联。在美国专利5,966,072-执行以图表示的计算(EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS)中描述了实现这种基于图的计算的系统。执行基于图的计算的一个方式是执行多个处理,每个处理与图的不同顶点相关联,以及根据图的链路在处理之间建立通信路径。例如,通信路径可使用命名渠道、TCP/IP或UNIX域套接字或共享存储器,以在处理之间传送数据。
发明内容
在一个方面中,一般地,本发明的特点在于一种用于执行基于图的计算的方法。该方法包括:接受计算图的规范(specification),在所述计算图中数据处理元素通过链接元素来结合(joined);将数据处理元素划分成集,至少一个集包括多个数据处理元素;对每个集分配不同的计算资源;和根据所述计算图处理数据,包括使用所分配的计算资源执行与所述数据处理元素对应的计算。
在另一个方面中,一般地,本发明的特点在于一种计算机可读介质上存储的用于执行基于图的计算的计算机程序。所述计算机程序包括用于使得计算机系统执行以下步骤的指令:接受计算图的规范,在所述计算图中数据处理元素通过链接元素来结合;将数据处理元素划分成集,至少一个集包括多个数据处理元素;对每个集分配不同的计算资源;和根据所述计算图处理数据,包括使用所分配的计算资源执行与所述数据处理元素对应的计算。
在另一个方面中,一般地,本发明的特点在于一种用于执行基于图的计算的系统。该系统包括:预执行模块,包括用于执行以下步骤的电路:接受计算图的规范,在所述计算图中数据处理元素通过链接元素来结合;和将数据处理元素划分成集,至少一个集包括多个数据处理元素。该系统包括:执行模块,包括用于执行以下步骤的电路:对每个集分配不同的计算资源;和根据所述计算图处理数据,包括使用所分配的计算资源执行与所述数据处理元素对应的计算。
本发明的方面包括一个或多个以下特征。
分配给集的至少一个计算资源包括一处理(process)。
每个所述链接元素与从上行数据处理元素的输出到下行数据处理元素的输入的数据流相关联。
处理数据的步骤包括,对于至少一个集,根据结合到集之中的数据处理元素的链接元素所限定的顺序,执行与所述集之中的数据处理元素对应的计算。
通过调用与下行数据处理元素相关联的函数,由分配给集的计算资源传递工作元素,所述工作元素与从上行数据处理元素的输出到所述下行数据处理元素的输入的数据流相关联,所述下行数据处理元素与所述上行数据处理元素在同一个集之中。
所述函数从这样的存储位置读取所述工作元素,即在其中通过与所述上行数据处理元素相关联的函数写入所述工作元素。
通过同一个处理来调用与所述上行数据处理元素相关联的函数以及与所述下行数据处理元素相关联的函数。
处理数据的步骤还包括,保持用以表征与每个集之中的各个数据处理元素相关联的各个行为的数量(respective quantities of activity)的信息。
所述各个行为的数量包括根据各个数据处理元素处理的数据的数量。
所述各个行为的数量包括通过分配给集的计算资源来执行与各个数据处理元素对应的计算所花费的时间量。
在集之中的数据处理元素形成计算图的连接后(connected)导向子图。
所述子图包括树。
对于具有多个输入的集之中的每个数据处理元素,与该数据处理元素的输入链接的所有上行数据处理元素也在该集之中。
接收对于在子图中不具有上行元素的所述子图中的数据处理元素的控制消息,作为对这种接收的响应,调用与所述子图中的每个其它数据处理元素相关联的函数,以在将控制消息传播至所述子图以外之前,将用于所述子图中的每个数据处理元素的状态信息保存在非易失性存储器中。
将用于所述子图中的每个数据处理元素的状态信息保存在一个文件中。
所述数据处理元素具有特定的并行性程度。
在集之中的每个所述数据处理元素具有相同的并行性程度。
所述计算图的规范指示与每个所述数据处理元素相关联的执行阶段。
在集之中的每个所述数据处理元素与同一个执行阶段相关联。
本发明的各个方面可包括一个或多个以下优点。
将数据处理应用表示成数据流计算图,可在建立应用以及理解和分析相关计算的过程中帮助开发者。在主机操作系统中通过处理而执行所述计算。每个处理与诸如处理时间和存储器等计算资源相关联。考虑到与每个处理相关联的运行费用(overhead),由计算系统使用的总计算资源通常会添加并行运行的处理数目(尽管在某些情况下所有的资源并非都与处理数目成线性比例)。为了减少处理数,可“人为(by hand)”将计算组合成更小数目的处理,但是这样也牺牲了计算图编程的某些优点(例如,易用性、易懂性等)。
在以通信处理实现的数据流计算图中,缓冲可减少处理的运行费用,但是其代价为添加了端对端的延迟。如果没有缓冲,则在使用较大的操作系统资源来移动较少量的数据时,可减少延迟,但是这将添加运行费用。
为了平缓在过多运行费用和过多延迟之间的这种均衡,多个图组元(component)可作为(或“并入”)一个处理(所述处理每次执行一个组元的工作)来运行,从而在不用复制或不必在处理之间移动数据的情况下,传递存储器中的数据。在这种方式中,在单一处理中,是通过组元网络来推进数据的。
例如,在分散(unfolded)执行中,由数据流连接的两个组元使用缓冲器来通信,其中所述的两个组元均在分散的处理中执行。第一组元将其生成的输出(例如,对多个输出工作元素的累加)存储在缓冲器中。第一组元例如使用操作系统调用来将缓冲器传递给第二组元。然后,第二组元处理在该缓冲器中的数据。如果这两个处理一起并入同一个处理中,在“合并后的执行(简称合并执行)”中,则由于合并后的处理(简称合并处理)控制了用以生成和接受工作元素的关联过程,所以合并处理不需要缓冲工作元素。合并处理将与第一组元相关联的过程(procedure)所生成的每个工作元素按其生成时的原样作为输入参数传递至与第二组元相关联的过程:数据流被实现为控制流。
在合并或分散执行中,组元可具有关联的并行性程度。在分散执行中,可创建等同于一组元的并行性程度的处理数目。在合并执行中,可以在相同处理中例示(instantiated)出具有相同并行性程度的连接组元,从而创建等于共有的并行性程度的处理数目。
将多个组元合并到一个处理中,就可以通过减少处理之间的数据移动以及减少启动时间和计算图的系统区间(footprint)(由于在此的处理运行总数更少)来提高性能。避免了过多的前后切换(context switching),而不必缓冲数据和添加延迟。所有这些操作是在不牺牲便捷性(expressibility)、易用性和数据流计算图模型的清晰度的情况下而实现的。
根据以下说明并根据权利要求书,本发明的其它特点和优点将变得清楚。
附图说明
图1是用于执行基于图的计算的系统框图。
图2A和图2B是计算图。
图3A和图3B是并行计算图。
图4是对合并集(folded sets)分配组元的过程(procedure)的流程图。
具体实施方式
1.系统概况
参照图1,用于执行基于图的计算的系统100包括:开发环境104,其耦合至数据存储器102;以及运行环境106,其耦合至数据存储器102。开发者101使用开发环境102建立应用(application)。所述应用与数据存储器102中的数据结构指定的一个或多个计算图相关,可将其作为开发环境的开发者使用的结果写入到数据存储器中。数据结构例如指定计算图的顶点(组元或数据集)和顶点之间的链路(数据流)。数据结构还可包括图的组元、数据集和数据流的各种特征。数据处理应用例如可以与这样的计算图相关联,即通过处理组元的图实现在从一个或多个输入数据集流动到一个或多个输出数据集的数据上执行的计算。
运行环境106可设置在适当的操作系统(例如UNIX操作系统)控制下的一个或多个通用计算机上。例如,运行环境106可包括多节点并行计算环境,包括使用多中央处理单元(CPU)、本地(例如多处理器系统,如SMP系统)或本地分布式(例如,作为群集或MPP耦合的多处理器)、或者远程或远程分布式(例如,经由LAN或WAN网络耦合的多处理器)、或者其任意组合的计算机系统的配置。通过运行环境106访问的输入、输出或中间数据集可以是存储在并行文件系统(例如,数据存储器102,或在通过通信链路而与系统100本地或远程耦合的外部数据存储器)中的并行“多文件”。
图中的多个组元的并行执行(concurrent execution)提供了一种并行性(parallelism)的形式。可通过对不同的计算节点分配图的不同组元来实现附加的并行性。可明确地或暗含地重复图的元素(例如,数据集、组元和流),以向运行环境106中引入附加的并行性。
运行环境106可被配置为接收来自存储的脚本的控制输入或来自用户103的用于执行和配置计算的输入。控制输入可包括使用对应的计算图来处理特定数据集的命令,计算图在所存储的图的数据结构中指定。用户103可例如使用命令行或图界面与运行环境106进行互动。
运行环境106包括预执行模块110,用以读取所存储的图的数据结构,且该数据结构用以指定给定计算图,以及分配和配置诸如用于执行组元的计算的处理(例如,在主机操作系统中执行的处理或线程)等计算资源。在执行计算图时,存在多种对处理分配组元的方式,以下将更详细描述。
预执行模块110还分配组元间通信资源,且该通信资源用于实现组元(例如,命名后的渠道或共享存储器)间的数据流,以及为到达组元的输入端口的工作元素分配存储空间,其中所述组元的处理还没有准备好接受新的工作元素。在组元间的数据流上传递工作元素的资源对所述系统100的处理和存储的运行费用颇有裨益。在一些方法中,如以下所详述,通过函数调用即可实现组元间通信,并减少了这类运行费用。
运行环境106包括执行模块112,用以调度和控制由预执行模块110向计算图分配的处理的执行。执行模块112可以与耦合至系统100的外部计算资源(例如数据库引擎、数据存储器或在与图组元相关联的处理期间访问的其它模块)进行互动。
在执行计算图之后,或者在执行期间的预定时间间隔,报告模块114提供用以表征给定计算的信息,例如与计算图的各个组元相关的统计值。由该报告模块114所报告的某些信息是从计算图生成的输出中获得的。所报告的某些信息是通过监控计算图的执行来获得的。
运行时(runtime)的监控模块(RMM)116,用以监控向计算图分配的一个或多个处理的执行,并向报告模块114提供信息。所述信息例如包括中央处理单元(CPU)用于运行每个组元的时间,或由每个组元处理的数据量。
2.图的执行
参照图2A,计算图200的实例包括输入数据集202,其提供要由计算图200的组元204A-204J处理的一系列工作元素。例如,数据集202可包括与数据库系统相关联的数据记录或与事务(transaction)处理系统相关联的事务。每个组元与总计算图200限定的计算的一部分相关联。工作元素(例如,各个数据记录)进入组元的一个或多个输入端口,输出工作元素(在某些情况下是输入工作元素,或输入工作元素的处理版本)通常自组元的一个或多个输出端口离开。在图200中,将来自组元204E、204G和204J的输出工作元素存储在输出数据集206A-206C中。
在图200中,第一过滤组元204A选择在其输入端口接收的工作元素的子集,以发送到第二过滤组元204B,并向组元204C发送未选择的工作元素,从而馈送组元204D。第二过滤组元204B选择在其输入端口接收的工作元素的子集,以发送到组元204E,从而馈送输出数据集206A。将来自第二过滤组元204B的未选择工作元素发送至复制(replicate)组元204F,其发送每个工作元素的副本至组元204G,从而馈送输出数据集206B,以及发送每个工作元素的副本至接口组元204H。接口组元204H提供触发执行“外部程序”的接口,所述“外部程序”对于运行环境106而言并非完全是本地(native)的。例如,这种外部程序可以是用并非完全集成在运行环境106中的语言所编写的继承性程序(legacy program)。接口组元204H提供用于执行作为计算图200的一部分的外部程序的机制,而不需要使用开发环境的本地语言所记录的外部程序。集合组元204I组合来自接口组元204H和组元204D的数据流,并且发送所组合的工作元素的数据流至组元204J,从而馈送输出数据集206C。
2.1分散处理
在执行计算图的第一种方式中,预执行模块110为每个组元分配分散的(separate)处理。例如,在“每个组元具有一个处理”的方式中,会给每个组元分配一个处理。与组元对应的处理对由该组元限定的数据访问、计算以及数据传送任务进行处理。执行模块112在主机操作系统中发出处理,并且处理与没有被组元处理所执行的与计算图相关联的任务。
当图组元具有相关联的并行性程度(degree)时,预执行模块110为图的组元的不同实例分配在数目上与组元的并行性程度同样多的分散处理。例如,可选地,组元(例如通过开发者101)被指定为N路并行组元。对于N路并行组元,执行组元的N个实例中的每一个,以作为在N个节点之一中的处理(或作为多线程处理器中的线程或轻权重(lightweight)处理的其它形式)。在这些情况下,每一个并行组元的实例都存在一个处理或线程。
参照图3A,并行图300包括输入的多文件302,其连接至一系列三条N路并行组元304A、304B和304C,并连接至输出多文件306。在该实例中,所述输入(输出)的多文件是能够通过N个处理对源(库)N个划分的数据流并行访问的N路并行。或者,使用在输入端302和第一组元304A之间和/或在最终组元304C和输出端306之间的数据流上的重新划分组元,所述输入和输出数据集可以是连续访问的数据文件,或作为具有比多于或少于N个划分的多文件。当使用每个组元实例具有一个处理这种方式来执行图300时,同时运行3N个处理。
上述每个组元具有一个处理(one-process-per-component)或每个实例具有一个处理(one-process-per-instance)的方式使得系统100能够利用渠道(pipeline)的并行性优点,通过允许多个组元同时处理数据来增加计算图的吞吐量。然而,与每个处理相关联的运行费用会限制系统性能。例如,在某些情况下,启动时间是通过启动组元处理所需的时间而指定的。因此,具有更多组元的图需要更长的时间启动。这种图也占用更多的存储器区间,从而限制了可同时运行的计算图的数目。在某些情况下,开发者101可对已经在多个组元中实现的组元进行逻辑固化,以将其合并到一个较为复杂的组元中,从而能够减少图中的组元数目。然而,这种人为的图操作并非总是适宜的或总能符合期望(例如,用以保持组元的易用性、易懂性或可重复使用性)。
2.2组元合并
在执行计算图的第二种方式中,预执行模块110可选地分配一些处理以执行多个组元。例如,在“组元合并”方式中,预执行模块110将图的组元分成一个或多个集,其中的每一个都包含一个或多个组元。对每个集分配不同的处理。因此,对于在相同集之中“合并在一起”的组元,是由同一个处理来执行由这些组元所表示的计算。对于具有多组元的集,执行模块112在主机操作系统中推出“合并处理”。
合并处理对由集(set)中的每个组元所限定的数据访问、计算和数据传送任务进行处理,并且用函数调来实现在集(set)中的组元之间的链路上的通信。合并处理调用compute函数,以通过给定输入来调用第一“根”组元的计算。在根组元计算生成与输出端口相关联的结果之后,合并处理将该结果用作下行组元的输入,调用相连接的下行组元的compute函数。因此,数据就从根组元被推进到子集之中的下行“内区(interior)”组元。在某些情况下,子集可具有向该子集的内区组元提供工作元素的多个根组元。这种组元合并方式除了能减少启动延迟之外,还减少了子集之中的处理和存储运行费用以及与组元间通信相关联的延迟。
例如,每次在单个工作元素上执行重新格式化或过滤的某些组元已经适用于执行中的“推进模型”,在推进组元完成了第一工作元素的处理之后,一旦该推进组元待命于输入端口,即可立刻准备开始处理新的工作元素。在这种推进模式中,上行组元向下行组元推进工作元素,由下行组元执行其计算,然后下行组元再向其下行组元推进结果,以此类推。
其它组元可能在一开始不配置为根据这种推进模式运行,而是以执行中的“拉动模式”来运行。拉动组元的实例是具有多个输入端口的组元,其根据工作元素到达的输入端口来执行计算。因为组元(例如,执行排序运算或结合运算的组元)在第二输入端口等待工作元素,所以其可能没有准备在第一输入端口处理工作元素。其它类型的拉动组元可具有一个输入端口。因此,合并处理不必具有调用compute函数的功能,该compute函数用以对拉动组元进行输入工作元素上的操作。
通过使拉动组元缓冲存储其所有的输入,直到遇到处理顺序的逻辑中断(例如,文件的结束,或在互不关联的工作单元之间标记其边界的某些其它事件)为止,所述拉动组元可被改动为(recast)推进组元。在这种情况下,用于推动组元的compute函数将每个进来的记录插入到缓冲器中,并且在逻辑中断时,继续处理以任意确定的顺序从缓冲器读取的所有输入。
合并处理可使用其它方式调度相关联的合并组元的计算。例如,合并处理可对状态信息进行测试,以确定哪个组元准备运行。
2.2.1合并限制
预执行模块110对图进行分析,以确定应该将哪些组元一起合并到同一个集之中,可选地,应考虑由开发者101或用户103向合并集手动分配组元,或考虑哪些组元将处在同一个或不同的合并集之中的其它限制。预执行模块110可考虑以下的限制,用于确定将哪些组元合并在一起。可选地,通过提供用于合并处理的机制来处理相关的附加处理,某些过程可忽略这些限制中的部分或全部。
第一个限制取决于将组元指定(例如,由开发者101来指定)为“可合并”还是“不可合并”。指定为可合并的组元包括这样的特征,该特征可由合并处理用于调用与该组元对应的计算。例如,可合并组元具有可由在运行环境106中运行的合并处理调用的compute函数,以调用与该组元相关联的计算。运行继承性程序的接口组元可能不兼容这种函数调用,因此可被指定为不可合并。由于,其它的组元可以因为其待执行的计算(例如,该计算中包括与外部环境进行复杂的互动)的特征而被指定为不可合并。
另一个限制取决于对阶段的指派(designation),在所述阶段中执行图的不同部分。例如,选择第一组上行组元在第一阶段运行,在那些组元完成一批工作元素之后,选择第二组下行组元在第二阶段运行该批工作元素。在某些情况下,在给定时间中仅运行那些对给定阶段的组元的处理。在其它情况下,这些阶段可被用于指派组元组,所述组元组运行于给定时间以处理给定批量的工作元素,尽管在不同阶段的处理可以同时运行不同批的工作元素,从而实现渠道并行性。在上面这两者情况下,这种限制都保证了给定阶段的组元应该仅与同一阶段中的组元合并在一起。
另一个限制涉及为组元指派的并行性程度。组元被指定为串行或N路并行。如上所述,对于N路并行组元,在分散的处理中执行组元的N个实例中的每个实例。在组元合并方式中,还剩有可并行运行的N个组元实例,但是这些组元实例也可以与其它组元实例合并在一起。在这种限制下,只有那些具有相同并行性程度的组元可合并在一起。串行组元可以与其它串行组元合并在一起,N路并行组元可以与其它N路并行组元合并在一起。例如,图3B示出图3A中的并行组元是如何合并在一起的。当使用组元合并来执行图300’时,会存在N个同时运行的合并处理。对于组元集312的N个实例中的每个实例,存在一个合并处理。
另一个相关的限制是,合并在一起的组元通过“直型(straight)”数据流来连接,该“直型”数据流不改变由该数据流表示的工作元素的划分。例如,某些数据流可将从N路并行组元流出的工作元素的N个划分重新分成M个划分(其中M≠N,或其中M=N,且工作元素在N个划分中被改组)。在这种限制下,合并在一起的组元具有相同的并行性程度,并且在合并组元之间不存在工作元素的明显或暗含的重新划分。
在准备向合并集分配图的组元时,预执行模块110确定在图中哪些可合并组元可以是根组元而不能是内区组元,哪些可合并的组元可以是根组元或内区组元。例如,某些组元可能不被配置为具有可由合并处理调用的相关联的compute函数。
例如,当开发这些组元时,对作为潜在的根组元和/或潜在的内区组元的排序可以在脱机(off-line)状态下进行。在数据存储器102中存储的与组元(该组元可用于建立图)相关联的数据结构可包括元数据(metadata),该元数据用以指示组元是可合并组元还是不可合并组元,以及组元是否是潜在的根组元和/或内区组元。
2.2.2确定合并集
图4示出由预执行模块110将图组元分配给合并集所时所使用的示例性过程400的流程图。所述过程400基于贪心算法(greedy algorithm)而试图使每个合并集尽可能大。由所述过程400生成的合并集具有一个根组元,用以向图的连接子图的一个或多个内区组元提供数据流。合并集也是非重叠的。预执行模块110例如可以刚好在执行时间之前执行过程400,并将结果存储在数据存储器102中,或者预执行模块110可以刚好在执行模块112执行图之前执行过程400。例如,预执行模块110可以在执行图之前、而当从图中去除条件性组元之后的运行时间中执行过程400,下面将更详细描述。
过程400使用如上述的某些合并限制。如果组元属于以下的情形,则所述组元就满足合并集的限制:该组元为可合并的,具有与集之中的组元相同的并行性程度,与集之中的组元处于同一个阶段,以及通过直型流(straight flow)连接至集之中的一组元。
过程400通过将图中的每个组元标记为“未分配”而开始,如步骤402。过程400基于从上行组元到下行组元的拓扑顺序(例如,以深度优先搜索顺序)来检查图中的组元。过程400开始于连接至输入数据集的组元或没有输入端口的组元,并且将所述组元指定到第一集以作为根组元,如步骤404。该过程确定所述根组元是否是可合并的,如步骤406。如果所述根组元是可合并的,则过程400确定在满足限制条件的当前集之中是否存在直接连接到该集之中的组元的下行之处的任何未分配的可合并组元,如步骤408。如果找到这种组元,则将该组元添加到当前集,如步骤410,并将其标记为“已分配”,如步骤412。该过程继续确定是否仍有未分配的可合并组元能被添加,如步骤408。在某些情况下,分配给集的可合并根组元不与任意其它组元合并在一起,并且将其单独留在单独的集之中,以由该组元的专用处理来执行。
在当前集不能再生长得更大时(例如,与集连接的剩余组元已经被分配或不满足所有的限制条件),过程400确定在图中是否存在任何剩下的未分配组元,如步骤414,如果存在,则从以下组元中分配新的根组元,这些组元包括:连接至输入数据集的未分配组元、或没有输入端口的组元、或连接至已分配组元的组元,如步骤404。
如果根组元是不可合并的,则过程400将该根组元单独留在它自己的集之中,以通过该组元的专用处理来执行,并且如果有任意未分配组元被剩下,则选择新的根组元。当没有未分配的组元剩下时,过程400完成,如步骤416。
图2B示出根据过程400的在图200中标识的三重合并集。过程400选择组元204A作为集210的根组元。过程400以拓扑顺序在图中行进,以对合并集210添加组元204B、204E、204F和204G。由于组元204H不满足合并的限制条件,所以不将其添加到集210中。过程400继续添加组元204C和204D至合并集210。由于没有其它的合并集可被添加到集210,所以过程400选择第二集211以含有不可合并组元204H,以及第三集212来包含剩余组元204I和204J。
在某些计算图中,组元本身被作为计算图来实现。过程400将图中的这种组元展开成图中的子图。因此,组元的合并集可跨越如此插入的子图的边界,以包括这种组元的任意“子组元”。
在某些计算图中,条件性组元机制允许基于参数值和计算的元数据来改变图的结构。图的条件性组元具有在运行时控制该组元是否出现在图中的条件。可通过运行时间参数来直接或间接计算该条件。可使用条件性组元优化或限定图。在2000年7月28日提交的美国专利申请No.09/627,252中对条件性组元有较详细的描述,这里通过引用将其合并于此。
在已经标识了合并集之后,可选地,预执行模块110可修改图,以包括处于合并集之间的元素(例如缓冲器或适配器)。
可使用其它过程来确定合并集,包括具有对合并集之中的组元子图的拓扑结构的限制的过程。例如,在某些实施中,合并集之中的组元的连接子图具有树拓扑,从根组元向下行而具有单个内区组元输入。在某些实施中,可这样执行合并处理,以在合并集之中允许有多输入组件。例如,如果多输入组元处在根组元的下行,则合并处理对用于多输入的数据进行缓冲,并且如果所有的缓冲器都具有可用数据的话,则仅调用多输入函数的compute函数。合并集可具有这样的拓扑结构,即对于集之中的每个多输入组元,与该组元的输入相连接的所有上行组元也在集之中。
2.2.3执行合并处理
执行模块112开始于由预执行模块110识别的合并集对应的合并处理。预执行模块110向执行模块112提供用以识别在每个合并集之中的组元以及与那些组元相连接的数据流的信息。执行模块112生成运行时间数据结构,其包括数据存储器102中的组元对象的指针,该执行模块112还分配存储空间,用于存储将要在合并集之中的组元之间通信的工作元素。由于合并处理可在执行不同组元的计算的同时访问同一个存储空间,所以对组元之间的工作元素数据分配的存储空间的数量及其专用时间可保持为很小。
例如,使用与数据流对应的为存储工作元素而分配的存储空间,合并处理从上行组元向下行组元传递数据。通过读取指向存储空间中的适当位置的数据指针变量,用于组元的compute函数能够访问工作元素。
上行组元的compute函数确保与用于下行组元的数据指针变量对应的存储空间中包含要处理的数据。在某些情况下,这涉及到由上行组元简单地向下行组元将要访问的存储空间中写入数据。然而,对于不改变其输入数据的组元(例如,过滤组元),数据可能已经存储在可被访问的位置中,并且该数据不需要移动,而可通过提供适当的数据指针变量来准备好。
根据连接合并集之中的组元的数据流所限定的顺序,每个合并处理通过重复调用计算函数(compute function)来调用与所述组元对应的计算。上行组元调用下行组元的compute函数。Compute函数执行与所述组元相关的计算。例如,计算可涉及对与组元相关的状态变量进行更新,传送所存储的工作元素,生成新的工作元素,或通过确保将输出数据存储在适当的存储空间中而向下行传递数据。当compute函数返回对合并处理的控制时,认为相关的组元已经处理了与其数据指针变量相关联的数据。
根组元是向合并集提供数据的指针。在许多情况下,这一处理通过从输入流或文件读取数据,或通过从外部系统(例如数据库或串列)提取数据来执行。在某些情况下,通过根组元生成数据。在不返回对合并处理控制的情况下,根组元的compute函数不通过合并集推进任意多数量的数据。例如,根组元的compute函数利用以下代码之一在预定间隔返回对合并处理的控制:
KEEP_GOING:这个代码表示存在多个待提供的数据。合并处理通过再次调用compute函数来予以应答。
ERROR:这个代码表示发生错误。在合并处理可访问的全局性“错误状态”变量中包含详细的错误消息。合并处理例如通过显示错误消息和中止来予以应答。
REACHED_EOF:这个代码表示不存在更多待提供的数据。合并处理通过关闭合并集来予以应答,以下将更详细描述。
GOT_BLIP:这个代码表示接收到控制消息(标志点(blip))(例如,工作元素的连续流中的检测点消息)。在合并处理可访问的全局性“标志点”变量中包含控制消息。合并处理通过处理该控制消息来予以应答,并且一旦已经处理了,就会再次调用compute函数。
当根组元返回REACHED_EOF时,合并处理关闭合并集。这一处理通过按照拓扑排序的顺序从上行组元向下行组元调用与合并集之中的每个组元相关联的shutdown函数来执行。
Shutdown函数可生成向下行推进的数据。例如,用于哈希累计组元(hash rollupcomponent)的compute函数在各个累加器中建立数据,却直到调用shutdown函数时才生成输出数据。
当根组元返回GOT_BLIP时,合并处理向下行传播标志点(blip)。这一处理通过调用与合并集之中的每个组元相关联的process blip函数来执行。相对于shutdown函数,process blip函数可触发进一步的计算。例如,连续流累计组元不向下行推进数据,直到调用其process blip函数时才向下行推进数据。
标志点可对图中的组元进行导向,以检查它们的状态,例如,如美国专利6,584,581所述,其名称为“连续流的检查点数据处理(CONTINUOUS FLOW CHECKPOINTING DATAPROCESSING)”,其内容通过引用合并与此。在这种情况下,process blip函数负责将当前状态信息存储到非易失性存储器的检查点文件。在合并集之中的组元可(例如,为了效率原因)共享该检查点文件。如果采用共享检查点文件,则在将检查点标志点传播至合并集以外的任意组元之前,合并集之中的所有组元完成它们的检查点。这一处理可通过例如按照拓扑排序的顺序从上行组元向下行组元调用组元的process blip函数,或在完成检查点之后,通过向位于单独的路径中的合并集以外的组元传播标志点来执行。
可对执行模型进行扩展,以合并这样的组元,即其compute函数涉及与外部设备(例如包括数据库或网络服务器)进行互动。
通常,与外部设备的互动会需要相对多和/或不限量的时间,从而会显著限制应用的吞吐量。在每个组元具有一个处理的执行中,提高其吞吐量的一个策略是打开集(或共享(pool))对设备的连接,从而在组元接收到输入记录时在可用连接上发出请求。组元异步地捕获它们从设备返回的应答,适当生成输出记录。然而,由于这种组元的compute函数每次只接收一个输入记录,并且在组元返回之前生成与该输入记录对应的输出记录,所以这个方式可能不适合合并执行的某些实施。
为了利用合并执行中的共享化连接和异步结果捕获的优点,将发出这种请求的组元有效地分成2个组元:接受输入记录和发出请求的第一组元,以及接收响应和构建输出记录的第二组元。然后,将第二组元看作合并组元的集的附加“根组元”,并且将来自对应的外部设备的响应看作对第二组元的输入,其中该合并组元的集由单个处理执行。然后,所述的执行合并集的处理再等待来自任意源的输入(对于其原始根组元的输入或者来自外部设备的响应),并调用在适当根组元上的compute函数。
在分散或合并执行中,如果来自与远程设备连接的组元的结果顺序需要对应于输入的顺序,则在将结果继续传递到下行组元之前,可以先累积和记录该结果。
3.监控
RMM116向开发者101和/或用户103提供关于图的执行的信息。即使那些组元在执行期间合并在一起,RMM116仍会提供关于图的各个组元的运行特征信息。因此,可根据图的逻辑结构来分析与图的组元相关联的计算特征,而不需要使执行计算的处理数目与图中的组元数目相匹配。例如,RMM116可提供所执行的图的相似的运行特征,所述图是使用组元合并方式、或使用每个组元具有一个处理的方式来执行的。
对于仅具有一个组元的合并集,且在每个组元具有一个处理的方式中,RMM116基于与组元对应的处理来跟踪诸如CPU时间等特征,并且RMM116基于支持数据流进入或流出组元的数据通信信道来跟踪所处理的数据量。
对于具有多个组元的合并集,RMM116跟踪用于合并处理的CPU时间,以及为合并集处理的数据量,并且基于一个个组元(on a component-by-component basis)来拆分这些总量。这种拆分的一个简单方式是将总量除以合并集之中的组元数目。然而,在许多情况下,期望能对所监控的量进行更精确的拆分。
以与对应的合并集之中呈现的组元和数据流对应的方式,合并处理将跟踪信息写入所存储的变量中。例如,每当读取(或写入)与进入(或流出)组元的数据流对应的数据指针变量时,就增加对应的记录计数(count)和字节计数的跟踪值。
RMM116可使用中断方式来实现CPU时间的更精确拆分。由定时器触发中断,以对合并处理在调用与合并集之中的各个组元相关的函数时所花费的时间的比例进行取样。在调用每个函数时,例如,函数会在全局性变量中写入所对应的组元是“激活的”。当关闭(gooff)定时器时,则触发一中断(interrupt),并且合并处理增加与激活的组元相关的计数值。为了报告用于合并集之中的每个组元的CPU时间,根据这些计数值按比例对用于合并集的总时间进行划分。
用于实现对CPU时间的精确拆分的另一个方式是对每个合并组元的compute和process blip函数的调用进行计时。由于对每个调用都进行计时会导致无法接受的运行费用,所以系统可对一段调用(例如,前100个调用中的每一个,然后将其后的每1000个调用作为一段)进行计时。然后,使用所收集的时间在合并组元中按比例划分用于处理的总CPU时间。
上述组元合并方式可使用在计算机上执行的软件来实现。例如,所述软件会形成一个或多个计算机程序中的步骤,所述计算机程序在一个或多个已编程或可编程计算机系统(该计算机系统可具有诸如分布式、客户端/服务器、或网格等各种架构)上执行,其中每一个所述计算机系统均包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备或端口和至少一个输出设备或端口。软件可形成较大程序的一个或多个模块,以提供例如与计算图的设计和配置相关的其它服务。图的节点和元素可实现为存储在计算机可读介质中的数据结构,或实现为与在数据库中存储的数据模型的相符的其它组织数据。
软件可由通用或专用可编程计算机可读介质(例如CD-ROM)中提供,或通过网络传递(以传播信号编码)到执行该软件的计算机。可以在专用计算机上或使用专用硬件(例如协处理器)执行所有功能。软件可以以分布方式实现,即由软件指定的计算的不同部分通过不同计算机而执行。优选地,将每个这种计算机程序存储或下载到存储介质或设备(例如,固态存储器或介质,或磁介质或光学介质)上,所述介质或设备可通过通用或专用可编程计算机读取,用于当由计算机系统读取存储介质或设备以执行其中所述的过程时,配置和操作计算机。本发明的系统还可认为能够实现为配置有计算机程序的计算机可读存储介质,其中如此配置的存储介质使得计算机系统以特定和预定的方式运行,以执行其中所述的功能。
以上已经描述了本发明的多个实施例。但是,可以理解,可以在不脱离本发明的精神和范围的情况下进行各种修改。例如,上述的某些步骤的顺序可以是独立的,因此可以以不同于上述的顺序来执行。可以理解,以上说明仅是示例性的,而不限制本发明的范围,本发明的范围由所附权利要求的范围定义。其它实施例也落在以下权利要求的范围中。
Claims (36)
1.一种用于使用计算机系统来执行基于图的计算的方法,其中所述计算机系统提供能够被分配给多个数据处理元素并被用于执行多个计算的计算资源,该方法包括:
接受计算图的规范,在所述计算图中多个数据处理元素通过多个链接元素来结合,其中每个所述链接元素与由上行数据处理元素的输出到下行数据处理元素的输入的数据流相关联;
确定每个数据处理元素是可合并的还是不可合并的,其中所有可合并的数据处理元素包括用于调用所述可合并的数据处理元素的相应的多个计算的计算机接口,所有不可合并的数据处理元素不包括用于调用所述不可合并的数据处理元素的相应的多个计算的计算机接口;
将多个所述可合并的数据处理元素划分成一个或多个数据处理元素的集,所述集之中的至少一个集包括多个可合并的数据处理元素;
对每个数据处理元素的集分配所述计算机系统的不同的计算资源;以及
根据所述计算图来处理数据,包括使用所分配的计算资源来执行与所述多个数据处理元素对应的多个计算,其中分配给所述多个数据处理元素的一个集的所述多个计算资源之一通过调用与所述可合并的数据处理元素相关联的函数来传递多个工作元素,所述多个工作元素与从第一可合并的上行数据处理元素的输出到下行可合并的数据处理元素的输入而获得的数据流相关联,其中所述第一上行可合并的数据处理元素与所述下行数据处理元素在所述多个数据处理元素的同一个集之中。
2.如权利要求1所述的方法,还包括确定至少一个数据处理元素是可合并的,以及至少一个数据处理元素是不可合并的。
3.如权利要求1所述的方法,其中分配给集的所述多个计算资源的至少一个包括一个处理。
4.如权利要求1所述的方法,其中处理数据的步骤还包括,保持用以表征与每个集之中的每个数据处理元素相关联的各个行为的数量的信息。
5.如权利要求1所述的方法,其中处理数据的步骤包括,对于所述多个数据处理元素的集之中的至少一个集,根据结合所述集之中的所述多个数据处理元素的所述多个链接元素所限定的顺序,执行与该集之中的多个数据处理元素对应的多个计算。
6.如权利要求1所述的方法,其中与所述下行数据处理元素相关联的函数从存储位置读取所述多个工作元素,在所述存储位置中所述多个工作元素是通过与所述上行数据处理元素相关联的函数写入的。
7.如权利要求6所述的方法,其中通过同一个处理来调用与所述上行数据处理元素相关联的函数以及与所述下行数据处理元素相关联的函数。
8.如权利要求1所述的方法,其中对于具有多个输入的集之中的任一个数据处理元素,与该数据处理元素的所述多个输入链接的所有所述上行数据处理元素也在该集之中。
9.如权利要求1所述的方法,其中所述多个数据处理元素的每一个具有特定的并行性程度。
10.如权利要求9所述的方法,其中在一个集之中的所有所述数据处理元素具有相同的并行性程度。
11.如权利要求1所述的方法,其中所述计算图的规范指示与所述多个数据处理元素的每一个相关联的执行阶段。
12.如权利要求11所述的方法,其中在一个集之中的每个所述数据处理元素与同一个所述执行阶段相关联。
13.一种用于使用计算机系统来执行基于图的计算的系统,其中所述计算机系统提供能够被分配给多个数据处理元素并被用于执行多个计算的计算资源,该系统包括:
接受装置,用于接受计算图的规范,在所述计算图中多个数据处理元素通过多个链接元素来结合,其中每个所述链接元素与由上行数据处理元素的输出到下行数据处理元素的输入的数据流相关联;
确定装置,用于确定每个数据处理元素是可合并的还是不可合并的,其中所有可合并的数据处理元素包括用于调用所述可合并的数据处理元素的相应的多个计算的计算机接口,所有不可合并的数据处理元素不包括用于调用所述不可合并的数据处理元素的相应的多个计算的计算机接口;
划分装置,用于将多个所述可合并的数据处理元素划分成一个或多个数据处理元素的集,所述集之中的至少一个集包括多个可合并的数据处理元素;
分配装置,用于对每个数据处理元素的集分配所述计算机系统的不同的计算资源;以及
处理装置,用于根据所述计算图来处理数据,包括使用所分配的计算资源来执行与所述多个数据处理元素对应的多个计算,其中分配给所述多个数据处理元素的一个集的所述多个计算资源之一通过调用与所述可合并的数据处理元素相关联的函数来传递多个工作元素,所述多个工作元素与从第一可合并的上行数据处理元素的输出到下行可合并的数据处理元素的输入而获得的数据流相关联,其中所述第一上行可合并的数据处理元素与所述下行数据处理元素在所述多个数据处理元素的同一个集之中。
14.如权利要求13所述的系统,还包括一个装置,用于确定至少一个数据处理元素是可合并的,以及至少一个数据处理元素是不可合并的。
15.如权利要求13所述的系统,其中分配给集的所述多个计算资源的至少一个包括一个处理。
16.如权利要求13所述的系统,其中还包括,用于保持用以表征与每个集之中的每个数据处理元素相关联的各个行为的数量的信息的装置。
17.如权利要求13所述的系统,其中处理数据的步骤包括,对于所述多个数据处理元素的集之中的至少一个集,根据用于结合集之中的所述多个数据处理元素的所述多个链接元素所限定的顺序,执行与该集之中的多个数据处理元素对应的多个计算。
18.如权利要求13所述的系统,其中与所述下行数据处理元素相关联的函数从存储位置读取所述多个工作元素,在所述存储位置中所述多个工作元素是通过与所述上行数据处理元素相关联的函数写入的。
19.如权利要求18所述的系统,其中通过同一个处理来调用与所述上行数据处理元素相关联的函数以及与所述下行数据处理元素相关联的函数。
20.如权利要求13所述的系统,其中对于具有多个输入的集之中的任一个数据处理元素,与该数据处理元素的所述多个输入链接的所有所述上行数据处理元素也在该集之中。
21.如权利要求13所述的系统,其中所述多个数据处理元素的每一个具有特定的并行性程度。
22.如权利要求21所述的系统,其中在一个集之中的所有所述数据处理元素具有相同的并行性程度。
23.如权利要求13所述的系统,其中所述计算图的规范指示与所述多个数据处理元素的每一个相关联的执行阶段。
24.如权利要求23所述的系统,其中在一个集之中的每个所述数据处理元素与同一个所述执行阶段相关联。
25.一种用于执行基于图的计算的计算机系统,该计算机系统包括:
输入装置,配置为接收可单独访问的多个数据单元,每个数据单元通过各自的键值来识别;以及
至少一个处理器,配置为处理所述多个数据单元,所述处理所述多个数据单元包括:
接受计算图的规范,在所述计算图中多个数据处理元素通过多个链接元素来结合,其中每个所述链接元素与由上行数据处理元素的输出到下行数据处理元素的输入的数据流相关联;
确定每个数据处理元素是可合并的还是不可合并的,其中所有可合并的数据处理元素包括用于调用所述可合并的数据处理元素的相应的多个计算的计算机接口,所有不可合并的数据处理元素不包括用于调用所述不可合并的数据处理元素的相应的多个计算的计算机接口;
将多个所述可合并的数据处理元素划分成一个或多个数据处理元素的集,所述集之中的至少一个集包括多个可合并的数据处理元素;
对每个数据处理元素的集分配所述计算机系统的不同的计算资源;以及
根据所述计算图来处理数据,包括使用所分配的计算资源来执行与所述多个数据处理元素对应的多个计算,其中分配给所述多个数据处理元素的一个集的所述多个计算资源之一通过调用与所述可合并的数据处理元素相关联的函数来传递多个工作元素,所述多个工作元素与从第一可合并的上行数据处理元素的输出到下行可合并的数据处理元素的输入而获得的数据流相关联,其中所述第一上行可合并的数据处理元素与所述下行数据处理元素在所述多个数据处理元素的同一个集之中。
26.如权利要求25所述的计算机系统,其中所述处理所述多个数据单元还包括,确定至少一个数据处理元素是可合并的,以及至少一个数据处理元素是不可合并的。
27.如权利要求25所述的计算机系统,其中分配给集的所述多个计算资源的至少一个包括一个处理。
28.如权利要求25所述的计算机系统,其中所述处理所述多个数据单元还包括,保持用以表征与每个集之中的每个数据处理元素相关联的各个行为的数量的信息的装置。
29.如权利要求25所述的计算机系统,其中所述处理所述多个数据单元还包括,对于所述多个数据处理元素的集之中的至少一个集,根据用于结合集之中的所述多个数据处理元素的所述多个链接元素所限定的顺序,执行与该集之中的多个数据处理元素对应的多个计算。
30.如权利要求25所述的计算机系统,其中与所述下行数据处理元素相关联的函数从存储位置读取所述多个工作元素,在所述存储位置中所述多个工作元素是通过与所述上行数据处理元素相关联的函数写入的。
31.如权利要求30所述的计算机系统,其中通过同一个处理来调用与所述上行数据处理元素相关联的函数以及与所述下行数据处理元素相关联的函数。
32.如权利要求25所述的计算机系统,其中对于具有多个输入的集之中的任一个数据处理元素,与该数据处理元素的所述多个输入链接的所有所述上行数据处理元素也在该集之中。
33.如权利要求25所述的计算机系统,其中所述多个数据处理元素的每一个具有特定的并行性程度。
34.如权利要求33所述的计算机系统,其中在一个集之中的所有所述数据处理元素具有相同的并行性程度。
35.如权利要求25所述的计算机系统,其中所述计算图的规范指示与所述多个数据处理元素的每一个相关联的执行阶段。
36.如权利要求35所述的计算机系统,其中在一个集之中的每个所述数据处理元素与同一个所述执行阶段相关联。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/434,623 | 2006-05-16 | ||
US11/434,623 US7870556B2 (en) | 2006-05-16 | 2006-05-16 | Managing computing resources in graph-based computations |
CN2007800170903A CN101443733B (zh) | 2006-05-16 | 2007-05-15 | 用于执行基于图的计算的方法和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800170903A Division CN101443733B (zh) | 2006-05-16 | 2007-05-15 | 用于执行基于图的计算的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103778015A CN103778015A (zh) | 2014-05-07 |
CN103778015B true CN103778015B (zh) | 2017-06-09 |
Family
ID=38713244
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800170903A Active CN101443733B (zh) | 2006-05-16 | 2007-05-15 | 用于执行基于图的计算的方法和系统 |
CN201310424248.6A Active CN103778015B (zh) | 2006-05-16 | 2007-05-15 | 在基于图的计算中的计算资源管理 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800170903A Active CN101443733B (zh) | 2006-05-16 | 2007-05-15 | 用于执行基于图的计算的方法和系统 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7870556B2 (zh) |
EP (1) | EP2021920B1 (zh) |
JP (2) | JP2009537908A (zh) |
KR (1) | KR101413049B1 (zh) |
CN (2) | CN101443733B (zh) |
AU (1) | AU2007253862C1 (zh) |
CA (1) | CA2650143C (zh) |
HK (1) | HK1122627A1 (zh) |
WO (1) | WO2007137034A2 (zh) |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877350B2 (en) * | 2005-06-27 | 2011-01-25 | Ab Initio Technology Llc | Managing metadata for graph-based computations |
WO2008021953A2 (en) * | 2006-08-10 | 2008-02-21 | Ab Initio Software Llc | Distributing services in graph-based computations |
US8904391B2 (en) * | 2007-04-23 | 2014-12-02 | International Business Machines Corporation | Policy-based access control approach to staff activities of a business process |
CN101821721B (zh) | 2007-07-26 | 2017-04-12 | 起元技术有限责任公司 | 具有误差处理的事务型基于图的计算 |
JP5453273B2 (ja) * | 2007-09-20 | 2014-03-26 | アビニシオ テクノロジー エルエルシー | グラフベース計算におけるデータフロー管理 |
US8069210B2 (en) * | 2008-10-10 | 2011-11-29 | Microsoft Corporation | Graph based bot-user detection |
KR20150042866A (ko) * | 2008-12-02 | 2015-04-21 | 아브 이니티오 테크놀로지 엘엘시 | 데이터 관리 시스템 내의 데이터 집합의 맵핑 인스턴스 |
KR20150038757A (ko) * | 2009-02-13 | 2015-04-08 | 아브 이니티오 테크놀로지 엘엘시 | 데이터 저장 시스템과의 통신 |
KR101730513B1 (ko) | 2009-02-13 | 2017-04-26 | 아브 이니티오 테크놀로지 엘엘시 | 태스크 실행 관리 |
US8266289B2 (en) * | 2009-04-23 | 2012-09-11 | Microsoft Corporation | Concurrent data processing in a distributed system |
US8205113B2 (en) * | 2009-07-14 | 2012-06-19 | Ab Initio Technology Llc | Fault tolerant batch processing |
KR101660348B1 (ko) * | 2009-09-16 | 2016-09-27 | 아브 이니티오 테크놀로지 엘엘시 | 데이터세트 요소의 매핑 |
US8667329B2 (en) * | 2009-09-25 | 2014-03-04 | Ab Initio Technology Llc | Processing transactions in graph-based applications |
US8832663B2 (en) | 2009-11-23 | 2014-09-09 | International Business Machines Corporation | Thread serialization and disablement tool |
US8549523B2 (en) * | 2009-11-23 | 2013-10-01 | International Business Machines Corporation | Performing runtime analysis and control of folding identified threads by assuming context of another thread and executing in lieu of another thread folding tool |
US10845962B2 (en) | 2009-12-14 | 2020-11-24 | Ab Initio Technology Llc | Specifying user interface elements |
US9665620B2 (en) | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US8555265B2 (en) | 2010-05-04 | 2013-10-08 | Google Inc. | Parallel processing of data |
WO2011159759A1 (en) | 2010-06-15 | 2011-12-22 | Ab Initio Technology Llc | Dynamically loading graph-based computations |
US20110314075A1 (en) * | 2010-06-18 | 2011-12-22 | Nokia Corporation | Method and apparatus for managing distributed computations within a computation space |
EP2609507B1 (en) * | 2010-08-25 | 2019-05-15 | Ab Initio Technology LLC | Evaluating dataflow graph characteristics |
CN103180826B (zh) | 2010-10-25 | 2017-04-05 | 起元技术有限责任公司 | 在代表计算机程序的数据流图中管理数据集对象 |
WO2012097278A1 (en) | 2011-01-14 | 2012-07-19 | Ab Initio Technology Llc | Managing changes to collections of data |
US9021299B2 (en) | 2011-02-18 | 2015-04-28 | Ab Initio Technology Llc | Restarting processes |
US9116759B2 (en) | 2011-02-18 | 2015-08-25 | Ab Initio Technology Llc | Restarting data processing systems |
US8782656B2 (en) * | 2011-02-24 | 2014-07-15 | International Business Machines Corporation | Analysis of operator graph and dynamic reallocation of a resource to improve performance |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
US8606615B2 (en) * | 2011-06-27 | 2013-12-10 | Bank Of America Corporation | System for managing and tracking an inventory of elements |
US9503512B2 (en) | 2012-03-21 | 2016-11-22 | Intertrust Technologies Corporation | Distributed computation systems and methods |
JP6004818B2 (ja) * | 2012-08-07 | 2016-10-12 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 並列化方法、システム、及びプログラム |
US10489360B2 (en) | 2012-10-17 | 2019-11-26 | Ab Initio Technology Llc | Specifying and applying rules to data |
US9507682B2 (en) * | 2012-11-16 | 2016-11-29 | Ab Initio Technology Llc | Dynamic graph performance monitoring |
US10108521B2 (en) | 2012-11-16 | 2018-10-23 | Ab Initio Technology Llc | Dynamic component performance monitoring |
US9274926B2 (en) | 2013-01-03 | 2016-03-01 | Ab Initio Technology Llc | Configurable testing of computer programs |
US9811233B2 (en) | 2013-02-12 | 2017-11-07 | Ab Initio Technology Llc | Building applications for configuring processes |
US11061539B2 (en) * | 2013-03-15 | 2021-07-13 | The Mathworks, Inc. | Reference nodes in a computational graph |
CN105164638B (zh) * | 2013-04-23 | 2019-09-27 | 起元科技有限公司 | 控制由计算系统执行的任务 |
CA2932763C (en) * | 2013-12-05 | 2022-07-12 | Ab Initio Technology Llc | Managing interfaces for dataflow graphs composed of sub-graphs |
AU2014360106B2 (en) | 2013-12-06 | 2019-05-23 | Ab Initio Technology Llc | Source code translation |
CN104954823B (zh) * | 2014-03-31 | 2018-06-15 | 华为技术有限公司 | 一种图计算预处理的装置、方法及系统 |
EP3742284A1 (en) | 2014-07-18 | 2020-11-25 | AB Initio Technology LLC | Managing lineage information |
US9330199B2 (en) * | 2014-07-21 | 2016-05-03 | Facebook, Inc. | Striping of directed graphs and nodes with improved functionality |
US9933918B2 (en) * | 2014-09-02 | 2018-04-03 | Ab Initio Technology Llc | Specifying control and data connections in graph-based programs |
CA2959389A1 (en) * | 2014-09-02 | 2016-03-10 | Ab Initio Technology Llc | Compilation of graph-based program specifications with automated clustering of graph components based on the identification of particular data port connections |
SG11201701605XA (en) * | 2014-09-02 | 2017-03-30 | Ab Initio Technology Llc | Controlling data processing tasks |
US9760406B2 (en) | 2014-09-02 | 2017-09-12 | Ab Initio Technology Llc | Controlling data processing tasks |
DE112015003587T5 (de) * | 2014-09-02 | 2017-05-11 | Ab Initio Technology Llc | Spezifizieren von komponenten in graphbasierten programmen |
CN106687920B (zh) | 2014-09-02 | 2020-07-03 | 起元科技有限公司 | 管理任务的调用 |
AU2015312003B2 (en) * | 2014-09-02 | 2019-08-29 | Ab Initio Technology Llc | Executing graph-based program specifications |
SG11201701651SA (en) | 2014-09-02 | 2017-04-27 | Ab Initio Technology Llc | Managing execution state of components in a graph-based program specification for controlling their associated tasks |
US9626393B2 (en) | 2014-09-10 | 2017-04-18 | Ab Initio Technology Llc | Conditional validation rules |
JP6375201B2 (ja) * | 2014-10-24 | 2018-08-15 | 株式会社野村総合研究所 | データフローの自動並列化システム |
US9880818B2 (en) * | 2014-11-05 | 2018-01-30 | Ab Initio Technology Llc | Application testing |
US10055333B2 (en) | 2014-11-05 | 2018-08-21 | Ab Initio Technology Llc | Debugging a graph |
US10437819B2 (en) | 2014-11-14 | 2019-10-08 | Ab Initio Technology Llc | Processing queries containing a union-type operation |
JP6413789B2 (ja) * | 2015-01-22 | 2018-10-31 | 富士通株式会社 | ジョブ管理プログラム、ジョブ管理方法及びジョブ管理装置 |
US10417281B2 (en) | 2015-02-18 | 2019-09-17 | Ab Initio Technology Llc | Querying a data source on a network |
WO2016154460A1 (en) * | 2015-03-24 | 2016-09-29 | Kyndi, Inc. | Cognitive memory graph indexing, storage and retrieval |
US11144283B2 (en) * | 2015-05-20 | 2021-10-12 | Ab Initio Technology Llc | Visual program specification and compilation of graph-based computation |
US10657134B2 (en) | 2015-08-05 | 2020-05-19 | Ab Initio Technology Llc | Selecting queries for execution on a stream of real-time data |
WO2017027652A1 (en) * | 2015-08-11 | 2017-02-16 | Ab Initio Technology Llc | Data processing graph compilation |
US10425273B2 (en) | 2015-09-03 | 2019-09-24 | Hitachi, Ltd. | Data processing system and data processing method |
EP3353718B1 (en) | 2015-10-28 | 2023-07-19 | Google LLC | Modifying computational graphs |
US11151446B2 (en) * | 2015-10-28 | 2021-10-19 | Google Llc | Stream-based accelerator processing of computational graphs |
US10671669B2 (en) | 2015-12-21 | 2020-06-02 | Ab Initio Technology Llc | Sub-graph interface generation |
JP6698177B2 (ja) * | 2016-05-17 | 2020-05-27 | アビニシオ テクノロジー エルエルシー | 再構成可能な分散処理 |
EP3559868A1 (en) * | 2017-03-24 | 2019-10-30 | Google LLC | Device placement optimization with reinforcement learning |
WO2018183676A1 (en) * | 2017-03-29 | 2018-10-04 | Ab Initio Technology Llc | Systems and methods for performing data processing operations using variable level parallelism |
US10817310B2 (en) | 2017-09-01 | 2020-10-27 | Ab Initio Technology Llc | Executing graph-based program specifications |
US11423083B2 (en) | 2017-10-27 | 2022-08-23 | Ab Initio Technology Llc | Transforming a specification into a persistent computer program |
US11188434B2 (en) | 2017-12-08 | 2021-11-30 | Ab Initio Technology Llc | Systems and methods for monitoring execution of structured query language (SQL) queries |
US10559276B2 (en) * | 2018-02-03 | 2020-02-11 | Facebook Technologies, Llc | Apparatus, system, and method for mitigating motion-to-photon latency in head-mounted displays |
CN110297699B (zh) * | 2018-03-23 | 2021-09-14 | 华为技术有限公司 | 调度方法、调度器、存储介质及系统 |
US10978176B2 (en) | 2018-06-29 | 2021-04-13 | pulseData Inc. | Machine learning systems and methods for predicting risk of renal function decline |
US11093223B2 (en) | 2019-07-18 | 2021-08-17 | Ab Initio Technology Llc | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
WO2022165321A1 (en) | 2021-01-31 | 2022-08-04 | Ab Initio Technology Llc | Data processing system with manipulation of logical dataset groups |
WO2024086674A1 (en) * | 2022-10-18 | 2024-04-25 | The Regents Of The University Of California | Systems and methods for subgraph matching using active learning |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57153359A (en) * | 1981-03-18 | 1982-09-21 | Ibm | Data processing system with common memory |
US4972314A (en) * | 1985-05-20 | 1990-11-20 | Hughes Aircraft Company | Data flow signal processor method and apparatus |
JPH04227589A (ja) * | 1990-08-10 | 1992-08-17 | Sharp Corp | データフロープログラムの割付け装置および割付け方法 |
US5694546A (en) * | 1994-05-31 | 1997-12-02 | Reisman; Richard R. | System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list |
US5768594A (en) * | 1995-07-14 | 1998-06-16 | Lucent Technologies Inc. | Methods and means for scheduling parallel processors |
US5822540A (en) * | 1995-07-19 | 1998-10-13 | Fujitsu Network Communications, Inc. | Method and apparatus for discarding frames in a communications device |
US7028088B1 (en) * | 1996-04-03 | 2006-04-11 | Scientific-Atlanta, Inc. | System and method for providing statistics for flexible billing in a cable environment |
US5966072A (en) * | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
US6330008B1 (en) * | 1997-02-24 | 2001-12-11 | Torrent Systems, Inc. | Apparatuses and methods for monitoring performance of parallel computing |
US6110220A (en) * | 1997-02-24 | 2000-08-29 | Lucent Technologies Inc. | Concurrent hardware-software co-synthesis of hard real-time aperiodic and periodic specifications of embedded system architectures |
US5933640A (en) * | 1997-02-26 | 1999-08-03 | Digital Equipment Corporation | Method for analyzing and presenting test execution flows of programs |
US5999729A (en) * | 1997-03-06 | 1999-12-07 | Continuum Software, Inc. | System and method for developing computer programs for execution on parallel processing systems |
US6088716A (en) * | 1997-04-28 | 2000-07-11 | Ab Initio Software Corporation | Method for preventing buffer deadlock in dataflow computations |
US6437796B2 (en) * | 1998-02-17 | 2002-08-20 | Sun Microsystems, Inc. | Multiple processor visibility search system and method |
US6675189B2 (en) * | 1998-05-28 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | System for learning and applying integrated task and data parallel strategies in dynamic applications |
US6480876B2 (en) * | 1998-05-28 | 2002-11-12 | Compaq Information Technologies Group, L.P. | System for integrating task and data parallelism in dynamic applications |
US6101599A (en) * | 1998-06-29 | 2000-08-08 | Cisco Technology, Inc. | System for context switching between processing elements in a pipeline of processing elements |
SE515820C3 (sv) * | 1998-09-01 | 2001-12-11 | Ericsson Telefon Ab L M | Mobiltelefonapparat och metod för vidarekoppling av samtal |
US6983463B1 (en) * | 1998-10-02 | 2006-01-03 | Microsoft Corporation | Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment |
US6608628B1 (en) * | 1998-11-06 | 2003-08-19 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration (Nasa) | Method and apparatus for virtual interactive medical imaging by multiple remotely-located users |
US6449711B1 (en) * | 1999-02-04 | 2002-09-10 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs |
US6748440B1 (en) * | 1999-05-12 | 2004-06-08 | Microsoft Corporation | Flow of streaming data through multiple processing modules |
US20020129340A1 (en) * | 1999-10-28 | 2002-09-12 | Tuttle Douglas D. | Reconfigurable isomorphic software representations |
US6584581B1 (en) * | 1999-12-06 | 2003-06-24 | Ab Initio Software Corporation | Continuous flow checkpointing data processing |
US6848100B1 (en) * | 2000-03-31 | 2005-01-25 | Intel Corporation | Hierarchical software path profiling |
US6813761B1 (en) * | 2000-06-30 | 2004-11-02 | Microsoft Corporation | Methods for enhancing flow analysis |
GB2376094A (en) * | 2001-05-30 | 2002-12-04 | Ibm | Flexible navigation of a workflow graph in a data processing system |
JP3719509B2 (ja) * | 2002-04-01 | 2005-11-24 | 株式会社ソニー・コンピュータエンタテインメント | シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 |
US7167850B2 (en) * | 2002-10-10 | 2007-01-23 | Ab Initio Software Corporation | Startup and control of graph-based computation |
-
2006
- 2006-05-16 US US11/434,623 patent/US7870556B2/en active Active
-
2007
- 2007-05-15 WO PCT/US2007/068946 patent/WO2007137034A2/en active Application Filing
- 2007-05-15 CN CN2007800170903A patent/CN101443733B/zh active Active
- 2007-05-15 JP JP2009511202A patent/JP2009537908A/ja active Pending
- 2007-05-15 AU AU2007253862A patent/AU2007253862C1/en active Active
- 2007-05-15 CA CA2650143A patent/CA2650143C/en active Active
- 2007-05-15 KR KR1020087030136A patent/KR101413049B1/ko active IP Right Grant
- 2007-05-15 CN CN201310424248.6A patent/CN103778015B/zh active Active
- 2007-05-15 EP EP07783766.4A patent/EP2021920B1/en active Active
-
2009
- 2009-03-27 HK HK09102924.8A patent/HK1122627A1/zh unknown
-
2013
- 2013-09-27 JP JP2013201721A patent/JP5940503B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
KR20090018113A (ko) | 2009-02-19 |
CA2650143A1 (en) | 2007-11-29 |
CN103778015A (zh) | 2014-05-07 |
AU2007253862A1 (en) | 2007-11-29 |
HK1122627A1 (zh) | 2009-05-22 |
US7870556B2 (en) | 2011-01-11 |
US20070271381A1 (en) | 2007-11-22 |
AU2007253862B2 (en) | 2012-07-12 |
EP2021920B1 (en) | 2017-03-01 |
AU2007253862C1 (en) | 2013-03-21 |
JP2014029718A (ja) | 2014-02-13 |
WO2007137034A2 (en) | 2007-11-29 |
CN101443733B (zh) | 2013-10-30 |
EP2021920A4 (en) | 2013-01-23 |
KR101413049B1 (ko) | 2014-06-30 |
CA2650143C (en) | 2017-06-13 |
JP5940503B2 (ja) | 2016-06-29 |
CN101443733A (zh) | 2009-05-27 |
WO2007137034A3 (en) | 2008-10-30 |
EP2021920A2 (en) | 2009-02-11 |
JP2009537908A (ja) | 2009-10-29 |
WO2007137034A9 (en) | 2009-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103778015B (zh) | 在基于图的计算中的计算资源管理 | |
CN105573866B (zh) | 以容错方式处理批量输入数据的方法和系统 | |
Warneke et al. | Nephele: efficient parallel data processing in the cloud | |
CN104520814B (zh) | 用于配置云计算系统的系统和方法 | |
KR101635945B1 (ko) | 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 | |
Böhm et al. | xSim: The extreme-scale simulator | |
Boral et al. | Implementation of the database machine DIRECT | |
Schreiner et al. | Distributed Maple: parallel computer algebra in networked environments | |
Arbab et al. | Coordination of heterogeneous distributed cooperative constraint solving | |
WO2022079406A1 (en) | Methods and apparatus for parallel quantum computing | |
Tardieu et al. | X10 for productivity and performance at scale | |
Traub | An abstract parallel graph reduction machine | |
Guirado et al. | Performance prediction using an application-oriented mapping tool | |
Shen | A CORBA facility for network simulation | |
AU2012241069A1 (en) | Managing computing resources in graph-based computations | |
Gessler | MapReduce to Couple a Bio-mechanical and a Systems-biological Simulation | |
Issman et al. | A parallel multiblock Euler/Navier-Stokes solver on a cluster of workstations using pvm | |
Warda et al. | Hierarchical modeling and distributed simulation with HIT | |
Irani et al. | A study of information in multiple-computer and multiple-console data processing systems | |
CN116302546A (zh) | 流处理系统、状态恢复方法、设备及存储介质 | |
CN116662293A (zh) | 收据数据的存储方法、节点和区块链系统 | |
Narayan et al. | A method to evaluate the performance of a Multiprocessor machine based on Data flow principles | |
Peakall et al. | Strategies for the implementation of the BBS communication tests on the supernode and their implications for efficiency | |
SI25799A (sl) | Sistem za strukturno analizo križno lepljenih lesenih konstrukcij z uporabo vsebnikov | |
Glauert | Parallel Implementation through Object Graph Rewriting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1192782 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1192782 Country of ref document: HK |