在基于图的计算中的计算资源管理的制作方法

文档序号:6454780阅读:235来源:国知局
专利名称:在基于图的计算中的计算资源管理的制作方法
技术领域
本发明涉及在基于图的计算中的计算资源管理。
背景技术
通常,通过有向图将复杂计算表示为数据流,其中所述计算的组元
(component)与图的顶点以及与对应于图的链路(弧、边)的组元之间的 数据流相关联。在美国专利5,966,072 -执行以图表示的计算(EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS )中描述了实现这种基于图的计 算的系统。执行基于图的计算的一个方式是执行多个处理,每个处理与图的 不同顶点相关联,以及根据图的链路在处理之间建立通信路径。例如,通信 路径可使用命名渠道、TCP/IP或UNIX域套接字或共享存储器,以在处理之 间传送数据。

发明内容
在一个方面中, 一般地,本发明的特点在于一种用于执行基于图的计算 的方法。该方法包括接受计算图的规范(specification),在所述计算图中 数据处理元素通过链接元素来结合(joined);将数据处理元素划分成集, 至少一个集包括多个数据处理元素;对每个集分配不同的计算资源;和根据 所述计算图处理数据,包括使用所分配的计算资源执行与所述数据处理元素 对应的计算。
在另一个方面中, 一般地,本发明的特点在于一种计算机可读介质上存 储的用于执行基于图的计算的计算机程序。所述计算机程序包括用于使得计 算机系统执行以下步骤的指令接受计算图的规范,在所述计算图中数据处 理元素通过链接元素来结合;将数据处理元素划分成集,至少一个集包括多 个数据处理元素;对每个集分配不同的计算资源;和根据所述计算图处理数 据,包括使用所分配的计算资源执行与所述数据处理元素对应的计算。
6在另一个方面中, 一般地,本发明的特点在于一种用于执行基于图的计 算的系统。该系统包括预执行模块,包括用于执行以下步骤的电路接受 计算图的规范,在所述计算图中数据处理元素通过链接元素来结合;和将数 据处理元素划分成集,至少一个集包括多个数据处理元素。该系统包括执 行模块,包括用于执行以下步骤的电路对每个集分配不同的计算资源;和 根据所述计算图处理数据,包括使用所分配的计算资源执行与所述数据处理 元素对应的计算。
本发明的方面包括一个或多个以下特征。 分配给集的至少一个计算资源包括一处理(process)。 每个所述链接元素与从上行数据处理元素的输出到下行数据处理元素 的输入的数据流相关联。
处理数据的步骤包括,对于至少一个集,根据结合到集之中的数据处理 元素的链接元素所限定的顺序,执行与所述集之中的数据处理元素对应的计 算。
通过调用与下行数据处理元素相关联的函数,由分配给集的计算资源传 递工作元素,所述工作元素与从上行数据处理元素的输出到所述下行数据处 理元素的输入的数据流相关联,所述下行数据处理元素与所述上行数据处理 元素在同一个集之中。
所述函数从这样的存储位置读取所述工作元素,即在其中通过与所述上 行数据处理元素相关联的函数写入所述工作元素。
通过同一个处理来调用与所述上行数据处理元素相关联的函数以及与 所述下行数据处理元素相关联的函数。
处理数据的步骤还包括,保持用以表征与每个集之中的各个数据处理元 素相关联的各个行为的数量(respective quantities of activity)的信息。
所述各个行为的数量包括根据各个数据处理元素处理的数据的数量。
所述各个行为的数量包括通过分配给集的计算资源来执行与各个数据 处理元素对应的计算所花费的时间量。
在集之中的数据处理元素形成计算图的连接后(connected)导向子图。
所述子图包括树。
对于具有多个输入的集之中的每个数据处理元素,与该数据处理元素的输入链接的所有上行数据处理元素也在该集之中。
接收对于在子图中不具有上行元素的所述子图中的数据处理元素的控 制消息,作为对这种接收的响应,调用与所述子图中的每个其它数据处理元 素相关联的函数,以在将控制消息传播至所述子图以外之前,将用于所述子 图中的每个数据处理元素的状态信息保存在非易失性存储器中。
将用于所述子图中的每个数据处理元素的状态信息保存在一个文件中。
所述数据处理元素具有特定的并行性程度。
在集之中的每个所述数据处理元素具有相同的并行性程度。 所述计算图的规范指示与每个所述数据处理元素相关联的执行阶段。 在集之中的每个所述数据处理元素与同一个执行阶段相关联。 本发明的各个方面可包括一个或多个以下优点。
将数据处理应用表示成数据流计算图,可在建立应用以及理解和分析相 关计算的过程中帮助开发者。在主机操作系统中通过处理而执行所述计算。 每个处理与诸如处理时间和存储器等计算资源相关联。考虑到与每个处理相
关联的运行费用(overhead),由计算系统使用的总计算资源通常会添加并 行运行的处理数目(尽管在某些情况下所有的资源并非都与处理数目成线性 比例)。为了减少处理数,可"人为(byhand)"将计算组合成更小数目的 处理,但是这样也牺牲了计算图编程的某些优点(例如,易用性、易懂性等)。
在以通信处理实现的数据流计算图中,缓冲可减少处理的运行费用,但 是其代价为添加了端对端的延迟。如果没有缓冲,则在使用较大的操作系统 资源来移动较少量的数据时,可减少延迟,但是这将添加运行费用。
为了平缓在过多运行费用和过多延迟之间的这种均衡,多个图组元 (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,或在通过通信 链路而与系统IOO本地或远程耦合的外部数据存储器)中的并行"多文件"。
图中的多个组元的并行执行(concurrent execution)提供了一种并行性 (parallelism)的形式。可通过对不同的计算节点分配图的不同组元来实现 附加的并行性。可明确地或暗含地重复图的元素(例如,数据集、组元和流), 以向运行环境106中引入附加的并行性。
运行环境106可被配置为接收来自存储的脚本的控制输入或来自用户 103的用于执行和配置计算的输入。控制输入可包括使用对应的计算图来处 理特定数据集的命令,计算图在所存储的图的数据结构中指定。用户103可 例如使用命令行或图界面与运行环境106进行互动。
运行环境106包括预执行模块110,用以读取所存储的图的数据结构, 且该数据结构用以指定给定计算图,以及分配和配置诸如用于执行组元的计 算的处理(例如,在主机操作系统中执行的处理或线程)等计算资源。在执 行计算图时,存在多种对处理分配组元的方式,以下将更详细描述。
预执行模块110还分配组元间通信资源,且该通信资源用于实现组元(例 如,命名后的渠道或共享存储器)间的数据流,以及为到达组元的输入端口 的工作元素分配存储空间,其中所述组元的处理还没有准备好接受新的工作 元素。在组元间的数据流上传递工作元素的资源对所述系统100的处理和存 储的运行费用颇有裨益。在一些方法中,如以下所详述,通过函数调用即可实现组元间通信,并减少了这类运行费用。
运行环境106包括执行模块112,用以调度和控制由预执行模块110向 计算图分配的处理的执行。执行模块112可以与耦合至系统100的外部计算 资源(例如数据库引擎、数据存储器或在与图组元相关联的处理期间访问的 其它模块)进行互动。
在执行计算图之后,或者在执行期间的预定时间间隔,报告模块U4提 供用以表征给定计算的信息,例如与计算图的各个组元相关的统计值。由该 报告模块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为图 的组元的不同实例分配在数目上与组元的并行性程度同样多的分散处理。例 如,可选地,组元(例如通过开发者IOI)被指定为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)中的组元之间的链路上的 通信。合并处理调用wm/7"^函数,以通过给定输入来调用第一 "根"组元 的计算。在根组元计算生成与输出端口相关联的结果之后,合并处理将该结 果用作下行组元的输入,调用相连接的下行组元的com;^fe函数。因此,数 据就从根组元被推进到子集之中的下行"内区(interior)"组元。在某些情 况下,子集可具有向该子集的内区组元提供工作元素的多个根组元。这种组 元合并方式除了能减少启动延迟之外,还减少了子集之中的处理和存储运行 费用以及与组元间通信相关联的延迟。
例如,每次在单个工作元素上执行重新格式化或过滤的某些组元已经适 用于执行中的"推进模型",在推进组元完成了第一工作元素的处理之后, 一旦该推进组元待命于输入端口,即可立刻准备开始处理新的工作元素。在 这种推进模式中,上行组元向下行组元推进工作元素,由下行组元执行其计 算,然后下行组元再向其下行组元推进结果,以此类推。
其它组元可能在一开始不配置为根据这种推进模式运行,而是以执行中 的"拉动模式"来运行。拉动组元的实例是具有多个输入端口的组元,其根 据工作元素到达的输入端口来执行计算。因为组元(例如,执行排序运算或 结合运算的组元)在第二输入端口等待工作元素,所以其可能没有准备在第
13一输入端口处理工作元素。其它类型的拉动组元可具有一个输入端口。因此,
合并处理不必具有调用cow;w/e函数的功能,该cww/wte函数用以对拉动组 元进行输入工作元素上的操作。
通过使拉动组元缓冲存储其所有的输入,直到遇到处理顺序的逻辑中断 (例如,文件的结束,或在互不关联的工作单元之间标记其边界的某些其它 事件)为止,所述拉动组元可被改动为(recast)推进组元。在这种情况下, 用于推动组元的CW7^Wfe函数将每个进来的记录插入到缓冲器中,并且在逻 辑中断时,继续处理以任意确定的顺序从缓冲器读取的所有输入。
合并处理可使用其它方式调度相关联的合并组元的计算。例如,合并处 理可对状态信息进行测试,以确定哪个组元准备运行。
2.2.1合并限制
预执行模块U0对图进行分析,以确定应该将哪些组元一起合并到同一 个集之中,可选地,应考虑由开发者101或用户103向合并集手动分配组元, 或考虑哪些组元将处在同一个或不同的合并集之中的其它限制。预执行模块 110可考虑以下的限制,用于确定将哪些组元合并在一起。可选地,通过提 供用于合并处理的机制来处理相关的附加处理,某些过程可忽略这些限制中 的部分或全部。
第一个限制取决于将组元指定(例如,由开发者101来指定)为"可合 并"还是"不可合并"。指定为可合并的组元包括这样的特征,该特征可由 合并处理用于调用与该组元对应的计算。例如,可合并组元具有可由在运行 环境106中运行的合并处理调用的函数,以调用与该组元相关联的 计算。运行继承性程序的接口组元可能不兼容这种函数调用,因此可被指定 为不可合并。由于,其它的组元可以因为其待执行的计算(例如,该计算中 包括与外部环境进行复杂的互动)的特征而被指定为不可合并。
另一个限制取决于对阶段的指派(designation),在所述阶段中执行图 的不同部分。例如,选择第一组上行组元在第一阶段运行,在那些组元完成 一批工作元素之后,选择第二组下行组元在第二阶段运行该批工作元素。在 某些情况下,在给定时间中仅运行那些对给定阶段的组元的处理。在其它情 况下,这些阶段可被用于指派组元组,所述组元组运行于给定时间以处理给 定批量的工作元素,尽管在不同阶段的处理可以同时运行不同批的工作元素,从而实现渠道并行性。在上面这两者情况下,这种限制都保证了给定阶 段的组元应该仅与同一阶段中的组元合并在一起。
另一个限制涉及为组元指派的并行性程度。组元被指定为串行或N路并
行。如上所述,对于N路并行组元,在分散的处理中执行组元的N个实例 中的每个实例。在组元合并方式中,还剩有可并行运行的N个组元实例,但 是这些组元实例也可以与其它组元实例合并在一起。在这种限制下,只有那 些具有相同并行性程度的组元可合并在一起。串行组元可以与其它串行组元 合并在一起,N路并行组元可以与其它N路并行组元合并在一起。例如,图 3B示出图3A中的并行组元是如何合并在一起的。当使用组元合并来执行图 300'时,会存在N个同时运行的合并处理。对于组元集312的N个实例中的 每个实例,存在一个合并处理。
另一个相关的限制是,合并在一起的组元通过"直型(straight)"数据 流来连接,该"直型"数据流不改变由该数据流表示的工作元素的划分。例 如,某些数据流可将从N路并行组元流出的工作元素的N个划分重新分成 M个划分(其中M^N,或其中M二N,且工作元素在N个划分中被改组)。 在这种限制下,合并在一起的组元具有相同的并行性程度,并且在合并组元 之间不存在工作元素的明显或暗含的重新划分。
在准备向合并集分配图的组元时,预执行模块110确定在图中哪些可合 并组元可以是根组元而不能是内区组元,哪些可合并的组元可以是根组元或 内区组元。例如,某些组元可能不被配置为具有可由合并处理调用的相关联 的co附p她函数。
例如,当开发这些组元时,对作为潜在的根组元和/或潜在的内区组元的 排序可以在脱机(off-line)状态下进行。在数据存储器102中存储的与组元 (该组元可用于建立图)相关联的数据结构可包括元数据(metadata),该 元数据用以指示组元是可合并组元还是不可合并组元,以及组元是否是潜在 的根组元和/或内区组元。
2.2.2确定合并集
图4示出由预执行模块110将图组元分配给合并集所时所使用的示例性 过程400的流程图。所述过程400基于贪心算法(greedy algorithm)而试图 使每个合并集尽可能大。由所述过程400生成的合并集具有一个根组元,用以向图的连接子图的一个或多个内区组元提供数据流。合并集也是非重叠
的。预执行模块110例如可以刚好在执行时间之前执行过程400,并将结果 存储在数据存储器102中,或者预执行模块110可以刚好在执行模块112执 行图之前执行过程400。例如,预执行模块IIO可以在执行图之前、而当从 图中去除条件性组元之后的运行时间中执行过程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来包含剩余 组元2041和204J。
在某些计算图中,组元本身被作为计算图来实现。过程400将图中的这 种组元展开成图中的子图。因此,组元的合并集可跨越如此插入的子图的边 界,以包括这种组元的任意"子组元"。
在某些计算图中,条件性组元机制允许基于参数值和计算的元数据来改 变图的结构。图的条件性组元具有在运行时控制该组元是否出现在图中的条 件。可通过运行时间参数来直接或间接计算该条件。可使用条件性组元优化 或限定图。在2000年7月28日提交的美国专利申请No.09/627,252中对条 件性组元有较详细的描述,这里通过引用将其合并于此。
在已经标识了合并集之后,可选地,预执行模块110可修改图,以包括 处于合并集之间的元素(例如缓冲器或适配器)。
可使用其它过程来确定合并集,包括具有对合并集之中的组元子图的拓 扑结构的限制的过程。例如,在某些实施中,合并集之中的组元的连接子图 具有树拓扑,从根组元向下行而具有单个内区组元输入。在某些实施中,可 这样执行合并处理,以在合并集之中允许有多输入组件。例如,如果多输入 组元处在根组元的下行,则合并处理对用于多输入的数据进行缓冲,并且如 果所有的缓冲器都具有可用数据的话,则仅调用多输入函数的com/^fe函数。 合并集可具有这样的拓扑结构,即对于集之中的每个多输入组元,与该组元 的输入相连接的所有上行组元也在集之中。
2.2.3执行合并处理
执行模块112开始于由预执行模块110识别的合并集对应的合并处理。 预执行模块110向执行模块112提供用以识别在每个合并集之中的组元以及 与那些组元相连接的数据流的信息。执行模块112生成运行时间数据结构, 其包括数据存储器102中的组元对象的指针,该执行模块112还分配存储空 间,用于存储将要在合并集之中的组元之间通信的工作元素。由于合并处理
17可在执行不同组元的计算的同时访问同一个存储空间,所以对组元之间的工 作元素数据分配的存储空间的数量及其专用时间可保持为很小。
例如,使用与数据流对应的为存储工作元素而分配的存储空间,合并处 理从上行组元向下行组元传递数据。通过读取指向存储空间中的适当位置的
数据指针变量,用于组元的函数能够访问工作元素。
上行组元的函数确保与用于下行组元的数据指针变量对应的存 储空间中包含要处理的数据。在某些情况下,这涉及到由上行组元简单地向 下行组元将要访问的存储空间中写入数据。然而,对于不改变其输入数据的 组元(例如,过滤组元),数据可能己经存储在可被访问的位置中,并且该 数据不需要移动,而可通过提供适当的数据指针变量来准备好。
根据连接合并集之中的组元的数据流所限定的顺序,每个合并处理通过 重复调用计算函数(compute function)来调用与所述组元对应的计算。上行 组元调用下行组元的cowj^fe函数。Compwfe函数执行与所述组元相关的计 算。例如,计算可涉及对与组元相关的状态变量进行更新,传送所存储的工 作元素,生成新的工作元素,或通过确保将输出数据存储在适当的存储空间 中而向下行传递数据。当com/ w^函数返回对合并处理的控制时,认为相关 的组元已经处理了与其数据指针变量相关联的数据。
根组元是向合并集提供数据的指针。在许多情况下,这一处理通过从输 入^;或文件读取数据,或通过从外部系统(例如数据库或串列)提取数据来 执行。在某些情况下,通过根组元生成数据。在不返回对合并处理控制的情 况下,根组元的comj^te函数不通过合并集推进任意多数量的数据。例如, 根组元的comp^e函数利用以下代码之一在预定间隔返回对合并处理的控 制
KEEP—GOING:这个代码表示存在多个待提供的数据。合并处理通过再 次调用com;wfe函数来予以应答。
ERROR:这个代码表示发生错误。在合并处理可访问的全局性"错误状 态"变量中包含详细的错误消息。合并处理例如通过显示错误消息和中止来 予以应答。
REACHED—EOF:这个代码表示不存在更多待提供的数据。合并处理通 过关闭合并集来予以应答,以下将更详细描述。GOT—BLIP:这个代码表示接收到控制消息(标志点(blip))(例如, 工作元素的连续流中的检测点消息)。在合并处理可访问的全局性"标志点" 变量中包含控制消息。合并处理通过处理该控制消息来予以应答,并且一旦 己经处理了,就会再次调用com; wte函数。
当根组元返回REACHED_EOF时,合并处理关闭合并集。这一处理通 过按照拓扑排序的顺序从上行组元向下行组元调用与合并集之中的每个组 元相关联的Wz^/ow"函数来执行。
5Tn^/ovv"函数可生成向下行推进的数据。例如,用于哈希累计组元(hash rollup component)的cowpwfe函数在各个累加器中建立数据,却直到调用 Ww^ow"函数时才生成输出数据。
当根组元返回GOT—BLIP时,合并处理向下行传播标志点(blip)。这 一处理通过调用与合并集之中的每个组元相关联的函数来执行。 相对于s/m^ow"函数,pracaw 函数可触发进一步的计算。例如,连续 流累计组元不向下行推进数据,直到调用其; ra"^ 6/*函数时才向下行推进 数据。
标志点可对图中的组元进行导向,以检查它们的状态,例如,如美国专 利6,584,581所述,其名称为"连续流的检查点数据处理(CONTINUOUS FLOW CHECKPOINTING DATA PROCESSING)",其内容通过引用合并 与此。在这种情况下,/7racawW^函数负责将当前状态信息存储到非易失性 存储器的检查点文件。在合并集之中的组元可(例如,为了效率原因)共享 该检查点文件。如果采用共享检查点文件,则在将检査点标志点传播至合并 集以外的任意组元之前,合并集之中的所有组元完成它们的检查点。这一处 理可通过例如按照拓扑排序的顺序从上行组元向下行组元调用组元的 prac"W印函数,或在完成检查点之后,通过向位于单独的路径中的合并集 以外的组元传播标志点来执行。
可对执行模型进行扩展,以合并这样的组元,即其函数涉及与 外部设备(例如包括数据库或网络服务器)进行互动。
通常,与外部设备的互动会需要相对多和/或不限量的时间,从而会显著 限制应用的吞吐量。在每个组元具有一个处理的执行中,提高其吞吐量的一 个策略是打开集(或共享(pool))对设备的连接,从而在组元接收到输入记录时在可用连接上发出请求。组元异步地捕获它们从设备返回的应答,适
当生成输出记录。然而,由于这种组元的com;wte函数每次只接收一个输入 记录,并且在组元返回之前生成与该输入记录对应的输出记录,所以这个方 式可能不适合合并执行的某些实施。
为了利用合并执行中的共享化连接和异步结果捕获的优点,将发出这种 请求的组元有效地分成2个组元接受输入记录和发出请求的第一组元,以 及接收响应和构建输出记录的第二组元。然后,将第二组元看作合并组元的 集的附加"根组元",并且将来自对应的外部设备的响应看作对第二组元的
输入,其中该合并组元的集由单个处理执行。然后,所述的执行合并集的处 理再等待来自任意源的输入(对于其原始根组元的输入或者来自外部设备的
响应),并调用在适当根组元上的cow/wte函数。
在分散或合并执行中,如果来自与远程设备连接的组元的结果顺序需要 对应于输入的顺序,则在将结果继续传递到下行组元之前,可以先累积和记 录该结果。
3.监控
RMM 116向开发者101和/或用户103提供关于图的执行的信息。即使 那些组元在执行期间合并在一起,RMM 116仍会提供关于图的各个组元的 运行特征信息。因此,可根据图的逻辑结构来分析与图的组元相关联的计算 特征,而不需要使执行计算的处理数目与图中的组元数目相匹配。例如, RMM 116可提供所执行的图的相似的运行特征,所述图是使用组元合并方 式、或使用每个组元具有一个处理的方式来执行的。
对于仅具有一个组元的合并集,且在每个组元具有一个处理的方式中, RMM 116基于与组元对应的处理来跟踪诸如CPU时间等特征,并且RMM 116基于支持数据流进入或流出组元的数据通信信道来跟踪所处理的数据
对于具有多个组元的合并集,RMM 116跟踪用于合并处理的CPU时间, 以及为合并集处理的数据量,并且基于一个个组元(on a component-by-component basis)来拆分这些总量。这种拆分的一个简单方式 是将总量除以合并集之中的组元数目。然而,在许多情况下,期望能对所监 控的量进行更精确的拆分。以与对应的合并集之中呈现的组元和数据流对应的方式,合并处理将跟 踪信息写入所存储的变量中。例如,每当读取(或写入)与进入(或流出)
组元的数据流对应的数据指针变量时,就增加对应的记录计数(count)和字 节计数的跟踪值。
RMM 116可使用中断方式来实现CPU时间的更精确拆分。由定时器触 发中断,以对合并处理在调用与合并集之中的各个组元相关的函数时所花费 的时间的比例进行取样。在调用每个函数时,例如,函数会在全局性变量中 写入所对应的组元是"激活的"。当关闭(go off)定时器时,则触发一中 断(interrupt),并且合并处理增加与激活的组元相关的计数值。为了报告 用于合并集之中的每个组元的CPU时间,根据这些计数值按比例对用于合 并集的总时间进行划分。
用于实现对CPU时间的精确拆分的另一个方式是对每个合并组元的 和proc^w 函数的调用进行计时。由于对每个调用都进行计时会 导致无法接受的运行费用,所以系统可对一段调用(例如,前100个调用中 的每一个,然后将其后的每1000个调用作为一段)进行计时。然后,使用 所收集的时间在合并组元中按比例划分用于处理的总CPU时间。
上述组元合并方式可使用在计算机上执行的软件来实现。例如,所述软 件会形成一个或多个计算机程序中的步骤,所述计算机程序在一个或多个已 编程或可编程计算机系统(该计算机系统可具有诸如分布式、客户端/服务器、 或网格等各种架构)上执行,其中每一个所述计算机系统均包括至少一个处 理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元 件)、至少一个输入设备或端口和至少一个输出设备或端口。软件可形成较 大程序的一个或多个模块,以提供例如与计算图的设计和配置相关的其它服 务。图的节点和元素可实现为存储在计算机可读介质中的数据结构,或实现 为与在数据库中存储的数据模型的相符的其它组织数据。
软件可由通用或专用可编程计算机可读介质(例如CD-ROM)中提供, 或通过网络传递(以传播信号编码)到执行该软件的计算机。可以在专用计 算机上或使用专用硬件(例如协处理器)执行所有功能。软件可以以分布方 式实现,即由软件指定的计算的不同部分通过不同计算机而执行。优选地, 将每个这种计算机程序存储或下载到存储介质或设备(例如,固态存储器或介质,或磁介质或光学介质)上,所述介质或设备可通过通用或专用可编程 计算机读取,用于当由计算机系统读取存储介质或设备以执行其中所述的过 程时,配置和操作计算机。本发明的系统还可认为能够实现为配置有计算机 程序的计算机可读存储介质,其中如此配置的存储介质使得计算机系统以特 定和预定的方式运行,以执行其中所述的功能。
以上己经描述了本发明的多个实施例。但是,可以理解,可以在不脱离 本发明的精神和范围的情况下进行各种修改。例如,上述的某些步骤的顺序 可以是独立的,因此可以以不同于上述的顺序来执行。可以理解,以上说明 仅是示例性的,而不限制本发明的范围,本发明的范围由所附权利要求的范 围定义。其它实施例也落在以下权利要求的范围中。
权利要求
1. 一种用于执行基于图的计算的方法,该方法包括接受计算图的规范,在所述计算图中数据处理元素通过链接元素来结合;将数据处理元素划分成集,所述集之中的至少一个集包括多个数据处理元素;对每个集分配不同的计算资源;以及根据所述计算图来处理数据,包括使用所分配的计算资源来执行与所述数据处理元素对应的计算。
2. 如权利要求1所述的方法,其中分配给集的至少一个计算资源包括 一处理。
3. 如权利要求l所述的方法,其中每个所述链接元素与由上行数据处 理元素的输出到下行数据处理元素的输入的数据流相关联。
4. 如权利要求3所述的方法,其中处理数据的步骤包括,对于所述集 之中的至少一个集,根据结合到所述集之中的数据处理元素中的链接元素所 限定的顺序,执行与所述集之中的数据处理元素对应的计算。
5. 如权利要求4所述的方法,其中通过调用与下行数据处理元素相关 联的函数,分配给集的计算资源传递工作元素,所述工作元素与从上行数据 处理元素的输出到所述下行数据处理元素的输入的数据流相关联,所述下行 数据处理元素与所述上行数据处理元素在同一个集之中。
6. 如权利要求5所述的方法,其中所述函数从存储位置读取所述工作 元素,在所述存储位置中所述工作元素是通过与所述上行数据处理元素相关 联的函数写入的。
7. 如权利要求6所述的方法,其中通过同一个处理来调用与所述上行 数据处理元素相关联的函数以及与所述下行数据处理元素相关联的函数。
8. 如权利要求l所述的方法,其中处理数据的步骤还包括保持用以表 征与每个集之中的各个数据处理元素相关联的各个行为的数量的信息。
9. 如权利要求8所述的方法,其中所述各个行为的数量包括根据各个 所述数据处理元素所处理的数据的数量。
10. 如权利要求8所述的方法,其中所述各个行为的数量包括通过分配 给集的计算资源来执行与各个所述数据处理元素对应的计算所花费的时间
11. 如权利要求1所述的方法,其中在集之中的所述数据处理元素形成 所述计算图的连接后导向子图。
12. 如权利要求ll所述的方法,其中所述子图包括树。
13. 如权利要求11所述的方法,其中对于具有多个输入的集之中的每 个数据处理元素,与该数据处理元素的输入链接的所有所述上行数据处理元 素也在该集之中。
14. 如权利要求ll所述的方法,还包括接收对于子图中不具有上行 元素的所述子图中的数据处理元素的控制消息,作为这种接收的响应,调用 与所述子图中的每个其它的所述数据处理元素相关联的函数,以在将该控制 消息传播至所述子图以外之前,将用于所述子图中的每个数据处理元素的状 态信息保存在非易失性存储器中。
15. 如权利要求14所述的方法,其中将用于所述子图中的每个所述数 据处理元素的所述状态信息保存在单个文件中。
16. 如权利要求1所述的方法,其中所述数据处理元素具有特定的并行 性程度。
17. 如权利要求16所述的方法,其中在集之中的每个所述数据处理元 素具有相同的并行性程度。
18. 如权利要求1所述的方法,其中所述计算图的规范指示与每个所述 数据处理元素相关联的执行阶段。
19. 如权利要求18所述的方法,其中在集之中的每个所述数据处理元 素与同一个所述执行阶段相关联。
20. —种计算机程序,存储于计算机可读介质上并用于执行基于图的计 算所述计算机程序包括用于使得计算机系统进行以下步骤的指令接受计算图的规范,在所述计算图中数据处理元素通过链接元素来结合.将数据处理元素划分成集,所述集之中的至少一个集包括多个数据处理 元素;对每个集分配不同的计算资源;以及根据所述计算图来处理数据,包括使用所分配的计算资源来执行与所述 数据处理元素对应的计算。
21. 如权利要求20所述的计算机程序,其中分配给集的至少一个计算 资源包括一处理。
22. 如权利要求20所述的计算机程序,其中处理数据的步骤还包括保 持用以表征与每个集之中的各个所述数据处理元素相关联的各个行为的数 量的信息。
23. —种用于执行基于图的计算的系统,该系统包括 预执行模块,包括用于执行以下步骤的电路接受计算图的规范,在所述计算图中数据处理元素通过链接元素来 结合;以及将数据处理元素划分成集,所述集之中的至少一个集包括多个数据 处理元素;以及执行模块,包括用于执行以下步骤的电路 对每个集分配不同的计算资源;以及根据所述计算图来处理数据,包括使用所分配的计算资源来执行与 所述数据处理元素对应的计算。
24. 如权利要求23所述的系统,其中分配给集的至少一个计算资源包 括一处理。
25. 如权利要求23所述的系统,还包括运行时的监控模块,该运行时的监控模块包括用于执行以下步骤的电路保持用以表征与每个集之中的各个数据处理元素相关联的各个行为的数量的信息。
26. —种用于执行基于图的计算的系统,该系统包括接受计算图的规范的装置,在所述计算图中数据处理元素通过链接元素来结合;将数据处理元素划分成集的装置,所述集之中的至少一个集包括多个数 据处理元素;对每个集分配不同的计算资源的装置;以及根据所述计算图来处理数据的装置,包括使用所分配的计算资源来执行与所述数据处理元素对应的计算。
27. 如权利要求26所述的系统,分配给集的至少一个计算资源包括一 处理。
28. 如权利要求26所述的系统,还包括保持用以表征与每个集之中 的各个数据处理元素相关联的各个行为的数量的信息的装置。
全文摘要
一种执行基于图的计算,包括接受计算图的规范,在所述计算图中,数据处理元素通过链接元素来结合;将数据处理元素划分成集,所述集之中的至少一个集包括多个数据处理元素;对每个集分配不同的计算资源;以及根据所述计算图来处理数据,包括使用所分配的计算资源执行与所述数据处理元素对应的计算。
文档编号G06F9/46GK101443733SQ200780017090
公开日2009年5月27日 申请日期2007年5月15日 优先权日2006年5月16日
发明者伊佛雷姆·梅里韦瑟·维什尼亚奇, 伊戈尔·舍尔布, 约瑟夫·斯凯芬顿·沃莱三世 申请人:起元软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1