【发明授权】使用自下而上方法的并行处理_欧特克公司_201580048668.6 

申请/专利权人:欧特克公司

申请日:2015-09-11

发明/设计人:T·E·埃巴;M·A·福斯特;J·T·柯纳;M·L·马丁;D·M·穆洛纳斯;H·W·史密斯

公开(公告)日:2021-02-19

代理机构:北京纪凯知识产权代理有限公司

公开(公告)号:CN106796615B

代理人:赵志刚;赵蓉民

主分类号:G06F30/00(20200101)

地址:美国加利福尼亚州

分类号:G06F30/00(20200101);G06F9/50(20060101);G06F17/10(20060101)

优先权:["20140915 US 14/486,668"]

专利状态码:有效-授权

法律状态:2021.02.19#授权;2017.09.29#实质审查的生效;2017.05.31#公开

摘要:方法、装置、系统、计算机程序产品以及计算机可读存储介质提供并行处理分层数据的能力。获得分层数据。该分层数据被组织在具有两个或更多个节点由依赖于子节点的母节点组成的关系图中。关系图需要自下而上的处理。在关系图中识别循环。通过遍历图并将所有图节点分配到级别中来级别化关系图。在并行处理后续级别中的节点之前,通过并行处理一个或更多个级别中的第一级别中的节点来处理分层数据。

主权项:1.一种用于并行处理分层数据的计算机实现方法,包括:a获得所述分层数据,其中:i所述分层数据被组织在具有两个或更多个节点的关系图中,其中所述两个或更多个节点包括一个或更多个母节点和一个或更多个子节点,其中所述一个或更多个母节点依赖于所述一个或更多个子节点;以及ii所述关系图需要自下而上的处理,其中在处理所述一个或更多个母节点中的第一母节点之前,处理所述第一母节点的所有从属子节点;b识别所述关系图中的一个或更多个循环,其中所述识别包括:i选择所述两个或更多个节点中的一个节点;ii确定所选节点还未被处理;iii将所述所选节点添加到从当前根节点到所述所选节点的路径;iv保持知识库,其中所述知识库标注何时从所述所选节点到所述子节点的边引起循环,并且一旦引起循环,则在所述关系图的级别化期间跳过所述子节点;v将所述所选节点添加到完全处理的节点的列表中,从所述路径中移除所述所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复步骤i-步骤v;c通过以下方式级别化所述关系图:i遍历所述关系图;以及ii将所述两个或更多个节点中的所有节点分配到一个或更多个级别,其中所述遍历和所述分配包括:A将不具有任何附加子节点的子节点分配到所述一个或更多个级别中的第一级别,并且从未分类节点的集合中移除经过分配的子节点;B将当前级别定义为所述第一级别;以及C通过以下操作分析所述当前级别中的每个子节点的每个母节点:将被分析的母节点从所述当前级别分配到所述一个或更多个级别中的下一级别,以及如果:i所述被分析的母节点还未分配到所述一个或更多个级别中的一个或更多个;ii所述被分析的母节点没有子节点在所述未分类节点的集合中;以及iii所述被分析的母节点没有子节点在所述下一级别中,则从所述未分类节点的集合中移除所述被分析的母节点;以及其中:所述级别化打破所述一个或更多个循环;所述级别化确保所述一个或更多个级别中的第一级别中的每个节点不依赖所述第一级别中或所述第一级别之上的级别中的任何事物;以及d通过在并行处理所述一个或更多个级别中的第二级别中的所述节点之前,并行处理所述一个或更多个级别中的第一级别中的所述节点,来处理所述分层数据,其中i所述第二级别高于所述第一级别;ii所述第一级别中的每个节点能够与所述第一级别中的其他节点被并行处理;iii所述分层数据包括用于实体建模组件的产品设计数据集;iv彼此相关的多个文件形成所述分层数据的层级;v所述处理包括将用于实体建模组件的所述多个文件推到中央储存器或从中央储存器拉下;以及vi所述处理保持所述产品设计数据集的完整性。

全文数据:使用自下而上方法的并行处理技术领域[0001]本发明通常涉及数据处理,并且具体地,涉及用于处理需要自下而上处理的设计集合中的大量分层数据的方法、装置以及制品。背景技术[0002]当使用大量的分层数据时,在多个节点上并行执行操作主要是为了提高性能可能很有用。具体地,当在数据管理中工作时,通常设计集合组件具有彼此依赖的大量数据例如,彼此相关的多个文件)。期望快速并有效地处理此类设计集合,同时保持数据的完整性。为了保持数据集的完整性,在某些情况下,重要的是使用“自下而上”的方法处理数据,使得节点不能被处理,直到所有节点的依赖即,子节点被处理。例如,对于组件数据集,需要确保在组件检入之前将所有组件的子项检入。同样地,在检入子项之前,也必须首先检入子项的子项。如果不符合此自下而上的方法,则所得到的数据集可能是不完整的和或损坏的。进一步地,首先处理依赖的需要使得除了最简单的结构之外,以并行方式处理节点极其困难。[0003]为了更好地理解现有技术的问题,各种图分层结构的描述可能是有用的。[0004]图1示出本文所使用的图术语。第一顶点或节点102例如,文件与第二顶点或节点104具有有向边例如,关系)。如图所示,顶点102依赖于顶点104。换言之,顶点104是顶点102的子项。[0005]图2A和图2B示出具有循环的简单图。在图2A中,节点A依赖于节点B,反之亦然(创建循环依赖)。类似地,在图2B中,节点A依赖于节点B,节点B依赖于节点C,节点C依赖于节点A〇[0006]图3示出具有循环的表示数据集的复杂图。作为示例,图3中的每个方框可以表示设计集中的文件。更具体地,如果设计桌子,则方框A1可以表示桌子组件本身,方框B1可以表示桌面,方框C1可以表示托架,并且其他方框可以表示螺钉、桌腿等。每个方框还可以具有子组件例如,限定桌腿。[0007]当处理组件时(例如,当推到中央储存器或从储存器拉下时),必须以自下而上的方式执行处理。在自下而上的现有技术系统中,首先分析图表,然后确定处理顺序。因此,可以首先添加处理上传D1、D2以及E1。此后,现有技术系统可以连续地处理每个母节点。在需要自下而上方法的系统中,现有技术系统经常多次“行走”或遍历图表结构。期望确定如何一次处理上传一个以上文件例如,为了提高性能)。现有技术系统不能提供用于分析且并行处理这种复杂图的可靠且有效的系统。发明内容[0008]本发明的实施例将数据分类到以并行方式处理的组中。该分类保证了节点的所有依赖将在节点本身之前被处理,只要这些组被完整地且以正确的顺序处理。更具体地,能够并行处理组中的所有节点,因为包含在单个组中的节点不依赖于该组内的任何事物。因此,组内的顺序是个和十的。附图说明[0009]现在参考附图,其中相同的参考标号始终表示相应的部分:[0010]图1示出图术语;[0011]图2A和图2B示出具有循环的简单图;[0012]图3示出具有循环的表示数据集的复杂图;[0013]图4是,于实巧本发明的一个或更多个实施例的示例性硬件和软件环境;[0014]图5是不意性不出根据本发明的一个或更多个实施例的使用网络将客户端计算机连接到服务器计算机的典型分布式计算机系统;[0015]图6示出根据本发明的一个或更多个实施例的用于级别化(level具有循环的图的高级流程;[0016]图7示出根据本发明的一个或更多个实施例的用于识别每个给定根顶点“V”的循环的过程;[0017]图8示出根据本发明的一个或更多个实施例的一旦识别出循环则级别化图(g卩,图6的阶段604的细节的逻辑流程;以及[0018]图9A-图9G以及图10A-图10F示出根据本发明的一个或更多个实施例的在图3的图上执行的示例性级别化处理。具体实施方式[0019]在下面的描述中,参考形成本发明的一部分的附图,并且通过图示的方式示出本发明的几个实施例。应当理解,在不脱离本发明的范围的情况下,可以利用其他实施例并且可以进行结构改变。[0020]概述[0021]本发明的实施例提供并行处理包含循环引用的大的分层设计数据集的能力。以允许并行处理整个组的方式执行后处理分类。进一步地,分类方法以仍允许并行处理所有部件的方式管理循环依赖包括循环引用中所涉及的)。此外,该方法在分类过程期间以有效的方式寻找识别循环引用。[0022]硬件环境[0023]图4是用于实施本发明的一个或更多个实施例的示例性硬件和软件环境400。硬件和软件环境包括计算机402,并且可以包括外围设备。计算机402可以是用户客户端计算机、服务器计算机,或者可以是数据库计算机。计算机402包括通用硬件处理器404A和或专用硬件处理器404B在下文中替代性地统称为处理器404和存储器406,诸如随机存取存储器RAM。计算机402可以耦合到其他设备和或与其集成,其他设备包括输入输出(IO设备,诸如键盘414、光标控制设备416例如,鼠标、指示设备、笔和写字板、触摸屏、多点触摸设备等)以及打印机428。在一个或更多个实施例中,计算机402可以耦合到或者可以包括便携式或媒体观看收听设备432例如,MP3播放器、iP〇d™、N〇〇kTM、便携式数字视频播放器、蜂窝设备、个人数字助理等)。在又一个实施例中,计算机402可以包括在各种平台和操作系统上执行的多点触摸设备、移动电话、游戏系统、可支持互联网型电视、电视机顶盒或其他可支持互联网的设备。[0024]在一个实施例中,计算机402通过通用处理器404A在操作系统408的控制下执行由计算机程序410定义的指令来进行操作。计算机程序410和或操作系统408可以存储在存储器406中,并且可以与用户和或其他设备接合以接受输入和命令,并且基于这样的输入和命令以及由计算机程序410和操作系统408定义的指令来提供输出和结果。[0025]输出结果可以呈现在显示器422上或提供给另一个设备用于呈现或进一步处理或动作。在一个实施例中,显示器422包括具有多个可单独寻址的液晶的液晶显示器LCD。替代性地,显示器422可包括发光二极管LED显示器,发光二极管LED显示器具有一起驱动以形成全色像素的红色、绿色和蓝色二极管簇。响应于处理器404从计算机程序410和或操作系统408的指令的应用到输入和命令,所产生的数据或信息,显示器422的每个液晶或像素变为不透明或半透明状态,以在显示器上形成图像的一部分。可以通过图形用户界面GUI模块418提供图像。尽管GUI模块418被描绘为单独的模块,但是执行GUI功能的指令能够停留或分布在操作系统408、计算机程序410中,或者使用专用存储器和处理器来实现。[0026]在一个或更多个实施例中,显示器422与计算机402集成集成在其中,并且包括具有触摸感测表面例如,追踪数据中心产品trackpod或触摸屏的多点触摸设备,其具有利用表面识别两个或更多个接触点的存在的能力。多点触摸设备的示例包括移动设备例如,iPhone™、NexusSTM、Droid™设备等)、平板计算机(例如iPad™、HPTouchpad™、便携式手持式游戏音乐视频播放器控制台设备例如,iPodTouch™、MP3播放器、Nintendo3DS™、PlayStationPortable™等)、触摸桌和壁例如,其中通过丙烯酸和或玻璃投影图像,然后用LED对图像进行背光)。[0027]由计算机402根据计算机程序410指令执行的操作中的一些或全部可以在专用处理器404B中实施。在该实施例中,计算机程序410指令中的一些或全部可以经由固件指令来实施,固件指令存储在专用处理器404B内或存储器406中的只读存储器ROM、可编程只读存储器PROM或闪存中。专用处理器404B也可以通过电路设计硬连线,来执行操作中的一些或全部以实施本发明。进一步地,专用处理器404B可以是混合处理器,其包括用于执行功能的子集的专用电路以及用于执行诸如响应计算机程序410指令的更通用功能的其他电路。在一个实施例中,专用处理器404B是专用集成电路ASIC。[0028]计算机402还可以实施编译器412,编译器412允许以诸如C0B0L、Pascal、C++、FORTRAN或其他语言的编程语言编写的应用程序或计算机程序410被译成处理器404可读代码。替代性地,编译器412可以是解释器,该解释器直接执行指令源代码,将源代码译成被执行或执行所存储的预编译代码的中间表示。这种源代码可以以诸如Java™、PerlTM、Basic™等各种编程语言编写。在完成之后,应用程序或计算机程序410使用由编译器412生成的关系和逻辑,访问并操纵从IO设备接受并存储在计算机402的存储器406中的数据。[0029]计算机402还可选地包括外部通信设备,诸如调制解调器、卫星链路、以太网卡或用于从其他计算机402接受输入并向其提供输出的其他设备。[0030]在一个实施例中,实施操作系统408、计算机程序410和编译器412的指令有形地体现在非暂时性计算机可读介质中,例如数据存储设备420,其可以包括一个或更多个固定或可移动的数据存储设备,诸如zip驱动器、软盘驱动器424、硬盘驱动器、CD-ROM驱动器、磁带驱动器等。进一步地,操作系统408和计算机程序410包括计算机程序410指令,当由计算机402访问、读取并执行时,计算机程序410指令使计算机402执行实施和或使用本发明或将指令的程序加载到存储器406中所必需的步骤,从而创建专用数据结构,使得计算机4〇2作为执行本文所述的方法步骤的专门编程的计算机进行操作。计算机程序410和或操作指令还可以有形地体现在存储器406和或数据通信设备430中,从而制造根据本发明的计算机程序产品或制品。因此,本文所使用的术语“制品”、“程序存储设备”和“计算机程序产品”旨在包括可从任何计算机可读设备或介质访问的计算机程序。[0031]当然,本领域的技术人员将认识到上述组件或任何数量的不同组件、外围设备以及其他设备的任何组合可以与计算机402—起使用。[0032]图5示意性地示出使用网络504将客户端计算机502连接到服务器计算机506的典型分布式计算机系统500。资源的典型组合可以包括网络504、客户端502以及服务器506,其中网络504包括因特网、LAN局域网)、WAN广域网)、SNA系统网络架构)网络等,客户端5〇2是个人计算机或工作站如图4所述),服务器506是个人计算机、工作站、小型计算机或大型机如图4所述)。然而,可以注意到,不同的网络诸如蜂窝网络例如,GSM[全球移动通信系统]或其他)、基于卫星的网络或任何其他类型的网络,可以根据本发明的实施例用于连接客户端502和服务器506。[0033]诸如因特网的网络504将客户端502连接到服务器计算机506。网络504可以利用以太网、同轴电缆、无线通信、射频RF等来连接并提供客户端502和服务器506之间的通信。客户端502可以执行客户端应用或web浏览器并与执行web服务器510的服务器计算机506通信。这种web浏览器通常是诸如MICROSOFTINTERNETEXPLORER™、MOZILLAFIREFOX™、0PERA™、APPLESAFARI™、G00GLECHROME™等的程序。进一步地,在客户端502上执行的软件可以从服务器计算机506下载到客户端计算机502,并作为web浏览器的插件或ACTIVEX™控制来安装。因此,客户端502可以利用ACTIVEX™组件组件对象模型(COM或分布式COMDCOM组件来在客户端502的显示器上提供用户界面。web服务器510通常是诸如微软公司的因特网信息服务器Microsoft’sinternetinformationserver™的程序。[0034]web服务器510可以托管可以执行脚本的活动服务器页面ASP或因特网服务器应用编程接口(ISAPI应用512。脚本调用执行业务逻辑的对象称为业务对象)。然后,业务对象通过数据库管理系统DBMS514操纵数据库516中的数据。替代性地,数据库516可以是客户端502的一部分或直接连接到客户端502,而不是通过网络504从数据库516交流获得信息。当开发者将业务功能封装到对象中时,该系统可以被称为部件对象模型COM系统。因此,在web服务器510和或应用512上执行的脚本调用实施业务逻辑的⑶M对象。进一步地,服务器506可以利用MICR0S0FT’S™事务服务器MTS来经由诸如AD0活动数据对象)、OLEDB对象链接和嵌入数据库或ODBC开放数据库连接的接口访问存储在数据库516中的所需数据。[0035]通常,这些部件500-516全部包括从设备、介质、信号或载体例如数据存储设备、数据通信设备、远程计算机或经由网络或经由另一数据通信设备等耦合到计算机的设备)中实现可检索的逻辑和或数据。此外,当读取、执行和或解释时,该逻辑和或数据导致实施和或使用正在执行的本发明所需的步骤。[0036]虽然本文引用了术语“用户计算机”、“客户端计算机”和或“服务器计算机”,但是应当理解,此类计算机5〇2和5〇6可以是可互换的,并且可以进一步包括具有有限或全部处理能力的瘦客户%也备、便携式设备诸如蜂窝电话、笔记本计算机、袖珍计算机、多点触摸设备和或具有合适的处理、通信以及输入输出能力的任何其它设备)。[0037]当然,本领域的技术人员将认识到上述部件或任何数量的不同部件、外围设备和其他设备的任何组合可以与计算机502和506—起使用。[0038]软件实施例概述[0039]本发明的实施例被实施为客户端502或服务器计算机506上的软件应用。进一步地,如上所述,客户端502或服务器计算机506可以包括瘦客户端设备或具有基于多点触摸的显示器的便携式设备。[0040]为了克服现有技术的不足并有效地并行处理分层数据,而获得分层数据。这种分层数据被组织在具有两个或更多个节点包括依赖于一个或更多个子节点的一个或更多个母节点)的关系图中,其中需要图的自下而上处理(例如,在处理第一母节点之前,处理必须处理第一母节点的所有从属子节点)。如本文所述,分层数据能够是包括诸如实体建模组件的产品设计数据集的任何分层数据具有依赖关系)。[0041]图6示出根据本发明的一个或更多个实施例的用于级别化具有循环的图的高级流程。存在识别循环阶段602和级别化图阶段604这两个阶段。在识别循环阶段602中,方法遍历图以注释识别任何循环。执行每个顶点一个操作。一旦在阶段602中己经识别所有循环即,循环依赖),则在级别化图阶段604中将结果图的顶点置于有序的“叶级”级别。因此,在阶段604中,图的顶点节点被放入不同的级别组。阶段604在可执行的操作的数量方面更加可变。可以并行处理级别组中的节点中的每个。[0042]关于在识别循环阶段602中执行的过程的细节在图7中阐述。在这点上,图7示出用于识别每个给定根顶点节点“V”的循环的过程。换言之,根顶点在本文中也称为节点被识别,并且图7示出用于识别每个根顶点的循环的过程。可以注意到,根顶点不是仅限于图的逻辑根节点。[0043]当已经分析顶点及其所有子项并且已经标注到任何循环时,如本文所使用的节点顶点被“完全处理”。“路径”是指从当前根顶点到当前顶点的路径。如果顶点在路径中,则它无法被完全处理。[0044]该过程开始于702,在702处做出关于顶点V是否己被处理的确定。如果根顶点是先前管理的根顶点的子节点,则顶点可能已经在根顶点的情况下被处理例如,参考图3,如果按照给定根A1、A2和B2的顺序,则B2在被管理时已经被处理)。如果顶点V已经被完全处理,则当没有更多的递归级别要检查时在步骤718,每个给定根顶点的循环的识别完成。如果V还未被处理,则将V添加到路径(即,从当前根顶点到当前顶点),并且在704确定V是否具有任何子项。如果V具有子项,则对每个子项执行步骤706-步骤7128卩,对于每个子顶点迭代步骤706-步骤712。[0045]在步骤706处,做出关于子项是否已被处理的确定。如果不是,则在步骤708处确定子项是否在V的路径中。如果子项不在V的路径中,则过程在步骤7〇2处递归,其中子项成为顶点V。如果子项在V的路径中,则存在循环并且在步骤710处从V到子项的边被标记为引起循环,并且在级别化过程即,图6的步骤604的持续时间中被跳过。一旦子项已经被处理,则在步骤712处做出关于是否存在V的更多子项的确定,并且如果存在,则过程返回到步骤706。因此,步骤712使得能够对V的子顶点中的每个进行迭代。如果没有更多的子项存在,则将V添加到“完全处理”列表并从路径从当前根顶点到当前顶点)中移除。[0046]在步骤716处执行优化。在这点上,如果V没有子项跳过循环边)(即V是叶节点),则将V添加到第一级别组。因此,步骤716创建由所有叶节点组成的第一级别组。在步骤718处,V已被完全处理,并且当没有更多递归级别时该过程完成。如果存在更多递归级别,则该过程向上移动递归堆栈并且返回到步骤712。[0047]鉴于上述,图7的步骤提供:选择节点;确定所选节点还未被处理;将所选节点添加到路径从当前根节点到所选节点);对于所选节点的每个子节点,如果子节点在路径中,则标注从所选节点到子节点的边产生循环,并且在图的级别化期间跳过子节点;以及将所选节点添加到完全处理的节点的列表,从路径中移除所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复上述步骤。此外,如果所选节点不具有任何子节点,则将所选节点添加到第一级别。[0048]图8示出根据本发明的一个或更多个实施例的用于一旦识别出循环则级别化图即,图6的阶段604的细节)的逻辑流程。如本文所使用的“未分类的顶点”是还不处于级别中的顶点(所有顶点开始于未分类)。“当前级别”是最新完成的级别。“下一级别”是当处理当前级别时将顶点添加到的级别(即,“当前级别+1”)。作为概述,通过遍历图并将所有节点分配为级别(用于并行处理来对图进行级别化。[0049]该过程开始于步骤802。当识别循环时创建第一级别(S卩,级别1g卩,在图7的步骤7ie处)。在步骤8〇2处,从未分类的顶点集合中移除第一级别中的顶点。一旦步骤802完成,贝1J“当前级别”为1即,级别1。在步骤804处做出关于在当前级别中是否存在任何顶点的确定。如果不是,则在步骤806处完成该过程。如果在当前级别存在还未处理迭代的顶点,则对于当前级别中的每个顶点的母项迭代步骤808-步骤816。[0050]在步骤808处,做出关于是否存在顶点的另一个母项的确定。如果不存在更多的母项,则递增“当前级别”,并且过程返回到步骤804。如果在当前级别处存在顶点的另一个母项,则在步骤810处确定母项是否已经处于级别中(g卩,其是否已经被分配分组到级别中)。如果母项已经置于级别组中,则在步骤808处继续处理下一母项。如果母项还未被分配为级别,则在步骤812处检索母项的子项。[0051]在步骤814处,确定检索的子项中的任何一个是否未分类(g卩,还未被分配到级别)。如果存在一些未分类的子项,则不能处理该顶点(S卩,还未处理顶点的所有子项),并且在步骤808处该过程继续该级别中的下一母项。如果没有未分类的子项(g卩,母项的所有子项已被分配到级别),则在步骤816处,进行关于子项中的至少一个是否处于下一级别的确定。如果在下一级别中存在至少一个子项,则过程在步骤8〇8处继续下一母项。因此,步骤816规定,如果子项已经存在于该级别中,则母项不能置于下一级别中。在这方面,如果允许母项和子项共存于同一级别,则可以同时并行处理母项和子项,这与自下而上的处理要求不一致。[0052]如果在下一级别没有子项,则在步骤818处将母项添加到“下一级别”,并且从未分类的顶点列表中移除。此后,在步骤8〇8处,该过程继续执行列表中的下一母项。[0053]鉴于上述,为了级别化图:将没有任何附加子节点的子节点分配到第一级别,并且从未分类节点的列表中移除;将当前级别定义为第一级别;通过将所述分析的母节点分配到下一级别从当前级别并从未分类的节点集合中移除所述分析的母节点,来分析当前级别中的每个子节点的每个母节点,如果(i所述分析的母节点还未分配到级别,(ii所述分析的母节点的子项不在未分类的节点集合中,以及iii所述分析的母节点的子节点不在下一级别中。然后,在递增当前级别之后重复此步骤。[0054]因此,图7和图8打破循环图情况,接着将图中的每个顶点节点分类为适当的级别,使得级别中的每个顶点节点可以与相同级别的其他顶点节点并行执行处理。因此,符合自下而上的方法,同时允许多个节点的并行处理。[0055]示例性工作流程处理[0056]图9A-图9G和10A-图10F示出根据本发明的一个或更多个实施例的在图3的图上执行的示例性级别化处理。[0057]图9A示出将在级别化示例中使用的初始图。在级别化处理的执行中,将A1和A2指定为根顶点(由星号表示)。[0058]参考图9B,一旦图被构建,则下一步骤是识别引起循环的边(即,图7中所述的每个逻辑流程)。鉴于根顶点,确定引起循环的从B2到C2的边(由图册中的虚线表示)(S卩,图7的步骤710。随着这被标注,过程能够将图级别化,就好像它没有循环。作为优化即,图7的步骤716,在识别循环的同时,分配到第一级别的叶顶点的集合被标注识别分配。因此,在该阶段,可以将D1、D2、C3以及E1都分配到第一级别。[0059]参考图9C,一旦第一级别己被分配,则能够级别化剩余的顶点(同时保持关于循环边和已经在一级别中的顶点的知识库)。下一级别的候选是前一级别中顶点的母项。因此,现在能够确定C1和B2是有效的叶顶点没有未被级别化的子项),并且因此可以置于第二级别中。[0060]继续到图9D,根据上述相同的准则,能够确定D3和A2是接下来的叶顶点。可以注意至IJ,A2被添加到该级别(即,级别3,即使它是根顶点。任何顶点都适用于一个级别,一旦它的所有子项都被处理为更早的级别。[0061]然后,参考图9E,C2可以置于级别(即,级别4。[0062]参考图9F,将B1分配给级别(即,级别5。[0063]参考图9G,将A1分配给级别(即,级别6。在这一点上,包含循环的图已经被有效地级别化,其中已经标注循环边。[0064]图10A-图10F示出当不同的顶点被识别为根顶点的集合时用于级别化图的替代方式。如图10A所示,B2、A1以及A2已经被识别为根顶点(由星号表示)。[0065]参考图10B,第一步骤是识别引起循环的边(即,按照图7的步骤710。在这种情况下,从D3到B2的边将被认为是循环的边,并且将被标注例如,在图l〇B中被描绘为虚线)。相同的优化(即,图7的步骤716在边去除期间将再次确定D1、D2、C3以及E1是叶顶点并且将被分配给第一级别。[0066]参考图10C,基于图7的逻辑流程,CI和D3将被添加分配给第二级别。[0067]如图10D所示,C2是分配给第三级别的唯一顶点。[0068]图10E示出第四级别将包含B1和B2。[0069]图10F示出最终级别将包含A1和A2。注意,在图10A-图10F的示例中,该方法确定仅需要五个级别而不是六个级别。这表明不同的根顶点集合能够在同一图上产生不同的级别集合,其中方法的两种执行同样有效。[0070]结论[0071]这完成了对本发明的优选实施例的描述。以下描述用于实现本发明的一些替代实施例。例如,本发明可以使用任何类型的计算机诸如大型机、小型计算机或个人计算机或计算机配置诸如分时大型机、局域网或独立的个人计算机。[0072]为了说明和描述的目的,已经呈现本发明的优选实施例的以上描述。其并不旨在详尽本发明或将本发明限于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。本发明的范围不旨在由该详细描述限制,而是由所附权利要求限制。

权利要求:1.一种用于并行处理分层数据的计算机实现方法,包括:⑸获得所述分层数据,其中:1所述分层数据被组织在具有两个或更多个节点的关系图中,其中所述两个或更多个节点包括一个或更多个母节点和一个或更多个子节点,其中所述一个或更多个母节点依赖于所述一个或更多个子节点;以及2所述关系图需要自下而上的处理,其中在处理所述一个或更多个母节点中的第一母节点之前,处理所述第一母节点的所有从属子节点;⑹识别所述关系图中的一个或更多个循环;c通过以下方式级别化所述关系图:1遍历所述关系图;以及2将所述两个或更多个节点中的所有节点分配到一个或更多个级别;以及d通过在并行处理所述一个或更多个级别中的第二级别中的所述节点之前,并行处理所述一个或更多个级别中的第一级别中的所述节点,来处理所述分层数据。2.根据权利要求1所述的计算机实现方法,其中所述分层数据包括产品设计数据集。3.根据权利要求1所述的计算机实现方法,其中所述分层数据包括实体建模组件。4.根据权利要求1所述的计算机实现方法,其中所述识别包括:a选择所述两个或更多个节点中的一个节点;⑹确定所选节点还未被处理;c将所述所选节点添加到从当前根节点到所述所选节点的路径;d对于所述所选节点的每个子节点:1如果所述子节点在所述路径中,则标注从所述所选节点到所述子节点的边引起循环,并且在所述关系图的所述级别化期间跳过所述子节点;以及e将所述所选节点添加到完全处理的节点的列表中,从所述路径中移除所述所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复步骤a-步骤e。5.根据权利要求4所述的计算机实现方法,其进一步包括:确定所述所选节点不具有子节点;以及将所述所选节点添加到所述一个或更多个级别中的第一级别。6.根据权利要求4所述的计算机实现方法,其进一步包括:从所述两个或更多个节点识别当前根节点;以及将所述当前根节点用作所述所选节点。7.根据权利要求1所述的计算机实现方法,其中所述级别化所述关系图包括:a将不具有任何附加子节点的子节点分配到所述一个或更多个级别中的所述第一级别,并且从未分类节点的集合中移除经过分配的子节点;〇3将当前级别定义为所述第一级别;以及c分析所述当前级别中的每个子节点的每个母节点,其包括:1将被分析的母节点从所述当前级别分配到所述一个或更多个级别中的下一级别,并且从所述未分类节点的集合中移除所述被分析的母节点,如果:⑴所述被分析的母节点还未分配到所述一个或更多个级别中的一个或更多个;ii所述被分析的母节点没有子节点在所述未分类节点的集合中;以及’iii所述被分析的母节点没有子节点在所述下一级别中。8.根据权利要求7所述的计算机实现方法,其进一步包括:d递增所述当前级别并重复步骤c。9.一种用于并行处理计算机系统中的分层数据的装置,其包括:a计算机,其具有存储器;⑹应用程序,其在所述计算机上执行,其中所述应用程序经配置:1获得所述分层数据,其中:i所述分层数据被组织在具有两个或更多个节点的关系图中,其中所述两个或更多个节点包括一个或更多个母节点和一个或更多个子节点,其中所述一个或更多个母节点依赖于所述一个或更多个子节点;以及ii所述关系图需要自下而上处理,其中在处理所述一个或更多个母节点中的第一母节点之前,处理所述第一母节点的所有从属子节点;⑵在所述关系图中识别一个或更多个循环;⑶通过以下方式级别化所述关系图:i遍历所述关系图;以及ii将所有所述两个或更多个节点分配到一个或更多个级别;以及4通过在并行处理所述一个或更多个级别中的第二级别中的所述节点之前,并行处理所述一个或更多个级别中的第一级别中的所述节点,来处理所述分层数据。10.根据权利要求9所述的装置,其中所述分层数据包括产品设计数据集。11.根据权利要求9所述的装置,其中所述分层数据包括实体建模组件。12.根据权利要求9所述装置,其中所述应用程序经配置通过以下方式识别:a选择所述两个或更多个节点中的一个节点;b确定所选节点还未被处理;c将所述所选节点添加到从当前根节点到所述所选节点的路径;d对于所述所选节点的每个子节点:1如果所述子节点在所述路径中,则标注从所述所选节点到所述子节点的边引起循环,并且在所述关系图的所述级别化期间跳过所述子节点;以及e将所述所选节点添加到完全处理的节点的列表中,从所述路径中移除所述所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复步骤a-步骤e。13.根据权利要求12所述的装置,其中所述装置进一步经配置:确定所述所选节点不具有子节点;以及将所述所选节点添加到所述一个或更多个级别中的第一级别。14.根据权利要求12所述的装置,所述应用程序进一步经配置:从所述两个或多个节点中识别所述当前根节点;以及将所述当前根节点用作所述所选节点。15.根据权利要求9所述的装置,其中所述应用程序经配置通过以下方式级别化所述关系图;a将不具有任何附加子节点的子节点分配到所述一个或更多个级别中的所述第一级另IJ,并且从未分类节点的集合中移除经过分配的子节点;0将当前级别定义为所述第一级别;以及C分析所述当前级别中的每个子节点的每个母节点,其包括:1将被分析的母节点从所述当前级别分配到所述一个或更多个级别中的下一级别,并且从所述未分类节点的集合中移除所述被分析的母节点,如果:i所述被分析的母节点还未分配到所述一个或更多个级别中的一个或更多个;ii所述被分析的母节点没有子节点在所述未分类节点的集合中;以及iii所述被分析的母节点没有子节点在所述下一级别中。16.根据权利要求15所述的装置,所述应用程序进一步经配置:d递增所述当前级别并且重复步骤c。17.—种编码有计算机程序指令的计算机可读存储介质,当由计算机访问时,所述计算机程序指令使得所述计算机将所述程序指令加载到其中的存储器,从而创建专用数据结构,使得所述计算机作为执行并行处理分层数据的方法的专门编程的计算机进行操作,所述方法包括:a在所述专门编程的计算机中,获得所述分层数据,其中:1所述分层数据被组织在具有两个或更多个节点的关系图中,其中所述两个或更多个节点包括一个或更多个母节点和一个或更多个子节点,其中所述一个或更多个母节点依赖于所述一个或更多个子节点;以及2所述关系图需要自下而上的处理,其中在处理所述一个或更多个母节点中的第一母节点之前,处理所述第一母节点的所有从属子节点;⑹在所述专门编程的计算机中,识别所述关系图中的一个或更多个循环;c在所述专门编程的计算机中,通过以下方式级别化所述关系图:1遍历所述关系图;以及⑵将所有所述两个或更多个节点分配到一个或更多个级别;以及d在所述专门编程的计算机中,通过在并行处理所述一个或更多个级别中的第二级别中的所述节点之前,并行处理所述一个或更多个级别中的第一级别中的所述节点,来处理所述分层数据。18.根据权利要求17所述的计算机可读存储介质,其中所述分层数据包括产品设计数据集。19.根据权利要求I7所述的计算机可读存储介质,其中所述分层数据包括实体建模组件。20.根据权利要求I7所述的计算机可读存储介质,其中所述识别包括:a选择所述两个或更多个节点中的一个节点;⑹确定所选节点还未被处理;c将所述所选节点添加到从当前根节点到所述所选节点的路径;d对于所述所选节点的每个子节点:1如果所述子节点在所述路径中,则标注从所述所选节点到所述子节点的边引起循环,并且在所述关系图的所述级别化期间跳过所述子节点;以及e将所述所选节点添加到完全处理的节点的列表中,从所述路径中移除所述所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复步骤a-步骤e。21.根据权利要求2〇所述的计算机可读存储介质,其中所述方法进一步包括:确定所述所选节点不具有子节点;以及将所述所选节点添加到所述一个或更多个级别中的第一级别。22.根据权利要求20所述的计算机可读存储介质,其中臟方法进—步包括:从所述两个或更多个节点中识别所述当前根节占.以及将所述当前根节点用作所述所选节点。23.根据权利要求I7所述的计算机可读存储介质,其中所述关系睡所述级别化包括:a将不具有任何附加子节点的子节点分配到所述一个或更多个级别中的所述第一级别,并且从未分类节点的集合中移除经过分配的子节点;⑹将当前级别定义为所述第一级别;以及c分析所述当前级别中的每个子节点的每个母节点,其包括:1将被分析的母节点从所述当前级别分配到所述一个或更多个级别中的下一级别,并且从所述未分类节点的集合中移除所述被分析的母节点,如果:i所述被分析的母节点还未分配到所述一个或更多个级别中的一个或更多个;ii所述被分析的母节点没有子节点在所述未分类节点的集合中;以及,iii所述被分析的母节点没有子节点在所述下一级别中。24.根据权利要求23所述的计算机可读存储介质,其中所述方法进一步包括.d递增所述当前级别并且重复步骤c。

百度查询: 欧特克公司 使用自下而上方法的并行处理