CN105389324A - 用于图形数据的分布式计算的系统和方法 - Google Patents
用于图形数据的分布式计算的系统和方法 Download PDFInfo
- Publication number
- CN105389324A CN105389324A CN201510548289.5A CN201510548289A CN105389324A CN 105389324 A CN105389324 A CN 105389324A CN 201510548289 A CN201510548289 A CN 201510548289A CN 105389324 A CN105389324 A CN 105389324A
- Authority
- CN
- China
- Prior art keywords
- limit
- summit
- data
- message
- source
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Generation (AREA)
Abstract
用于图形数据的分布式计算的方法和系统允许边收集和顶点收集,每一种收集都在多个计算单元之间进行分割。在一个实施例中,这些方法采用两阶段计算周期,重复两阶段计算周期直至计算完成。在第一阶段中,多个处理单元通过进行以下步骤来处理每一个活动边和活动顶点:读取它们的当前属性值、执行编程计算函数、更新多个边属性并且向顶点发送数据消息。在第二阶段中,每一个顶点更新处理器通过进行以下步骤来处理其多个活动顶点中的每一个活动顶点:读取其多个当前属性值以及所接收到的多条数据消息、执行编程计算函数、并且更新该顶点的多个属性值。
Description
相关申请的交叉引用
本申请要求2014年8月29日所提交的美国临时专利申请序列号62/043,849的优先权。明确地要求该临时申请的优先权,并且该临时申请的披露通过引用以其全部内容并且出于所有目的结合在此。
技术领域
本披露总体上涉及基于图形的关系,并且更具体地(但不排他地)涉及对图形数据的允许边收集和顶点收集的分布式计算。
背景技术
对大数据集的许多类型的数据分析要求面向图形的分析、或将得益于面向图形的分析。图形是包括被称为顶点的数据对象的集合以及被称为边的顶点到顶点连接的集合的数据结构。以图形格式自然地对其中对象具有与其他对象的关系的数据进行分析。
在常规的面向图形的分析中,计算遵循迭代且传播的过程。常规的计算以活动顶点和活动边的初始集开始。每一次迭代都包括对顶点和边的子集所进行的选择——这些顶点和边与活动集相邻——以成为下一次迭代的活动集。从而,计算在概念上行进通过该图形,从顶点一步步走到相邻顶点。
在许多应用中,常规图形数据计算的缺点是非常大量的计算步骤。典型的计算需要考虑从源顶点至一个或多个目的顶点的每一条可能的路径。随着路径长度的增加或顶点总数量的增加,路径的数量以更快的速率增加。由于在处理大数据集时考虑高数量路径,常规的图形数据计算系统可能过慢。
鉴于前述内容,为了克服常规面向图形的分析系统的上述障碍和缺陷,需要一种用于图形数据的分布式计算的改善的系统。
附图说明
图1是展示分布式图形计算系统的实施例的示例性顶层框图;
图2是展示用于使用图1的分布式图形计算系统进行两阶段图形计算的方法的一个实施例的示例性流程图;
图3是展示用于使用图2的两阶段图形计算方法来处理图形数据的一个实施例的示例性流程图;
图4是展示具有边和顶点的样本图形的实施例的示例性图;
图5是展示可以被存储在图1的分布式图形计算系统的顶点表(VertexTable)中的顶点数据结构的实施例的示例性图;
图6是展示图5的顶点数据结构的另一个实施例的示例性图;
图7是展示可以被存储在图1的分布式图形计算系统的边表(EdgeTable)中的边数据结构的实施例的示例性图;
图8A是展示图5的顶点数据结构的又另一个实施例的示例性图;
图8B是展示图7的边数据结构的又另一个实施例的示例性图;
图9是展示使用图2的两阶段图形计算方法的用于顶点的状态机的一个实施例的示例性图;
图10是示例性图,展示了通过图2的两阶段图形计算方法的阶段的示例性图形的状态的一个实施例;
图11是示例性图,展示了通过图2的两阶段图形计算方法的阶段的示例性图形的状态的另一个实施例;
应注意的是,附图不是按比例绘制的,并且出于展示的目的,贯穿这些附图,具有相似结构或功能的元件总体上用类似的参考号表示。还应注意的是,附图仅旨在帮助对优选实施例的描述。附图并不展示所描述的实施例的每个方面并且不限制本披露的范围。
具体实施方式
由于当前可用的图形计算系统因为它们要求非常大量的计算步骤而存在缺陷,提供减小的计算周期的用于图形数据的分布式计算的系统可以证明是令人期望的并且为各种各样的图形计算应用提供了基础,如寻找最佳行进路线或分析消费者和产品的图形以作出有效的推荐。根据在此所披露的一个实施例,可以通过图1中所展示的用于分布式图形计算的系统150来实现此结果。
图形是包括顶点的集合以及被称为边的顶点到顶点连接的集合的数据结构。定义一条边的两个顶点中的每一个顶点被称为该边的端点顶点之一。有向边指定一个端点顶点为源顶点并且指定另一个端点顶点为目标顶点。每一个顶点和每一条边都具有多个描述性属性,可以在分布式图形计算期间对这些描述性属性的值进行读取和更新。在某些实施例中,用于分布式图形计算的系统150允许边收集和顶点收集,每一种收集都在多个计算单元之间进行分割。
具体而言,参照图1,系统150包括用于协调一个或多个边处理单元(或EPU)101以及一个或多个顶点处理单元(或VPU)102的操作的主(Master)100。这些EPU101和这些VPU102通过数据传输网络103来访问图形存储单元(或GSU)104。GSU104可以包括一个或多个电子数据存储装置。例如,如在图1中所展示的,GSU104包括顶点表(VertexTable)106和边表(EdgeTable)105。合起来,存储在顶点表106和边表105中的这些值(例如,分别为顶点数据和边数据)表示图形数据。
常规分布式数据处理和并行数据处理的关键挑战是对在多个处理器之间的写操作和读操作进行排序和同步。写操作改变某个数据项的值。因为此改变,写操作的时机(例如,在读操作之前或之后)可能影响计算结果。在某些实施例中,用于图形数据的分布式计算的方法采用两阶段计算周期,重复该两阶段计算周期直至计算完成。该两个阶段有利地将读与写分开,以简化对这些处理器之间的操作的同步。
现在转到图2,示出了可以与系统150一起使用的两阶段图形计算方法2000的一个实施例。计算方法2000包括两个阶段:计算阶段201和更新阶段202。该两个阶段在顺序上被统称为计算-更新序列。在计算阶段201期间,系统150读取边属性值和顶点属性值并且执行计算,但是可能不修改任何边属性值或顶点属性值。计算阶段201之后是更新阶段202,在该更新阶段中,系统150基于计算阶段201中的这些计算来更新活动顶点的属性值。重复该计算-更新序列,直至满足停止决策203的条件。可以基于两阶段图形计算方法2000的应用来对满足停止决策203所需要的条件进行编程。例如,在进行预定数量的计算-更新序列迭代之后,某些应用停止。在其他应用中,当属性值达到预定目标值时,停止决策203的条件被满足。在某些实施例中,计算-更新序列的这些迭代之前可以是设置步骤200并且之后可以是完成步骤204。
在某些实施例中,更新阶段202直到计算阶段201中的所有操作都已经完成之后才开始。此类实施例的优点是系统150可以轻易地避免在顶点表105中的若干个顶点的更新之间的竞态情况。竞态情况是不令人期望的情况,在这种情况下,结果取决于两个或更多个更新动作中哪一个完成的更快。在其他实施例中,如果更新阶段202的有选择性的部分所修改的数据属性将对正在进行中的计算阶段201操作没有影响,此类部分可以在计算阶段201仍然正在进行时开始。此类实施例要求对数据属性之间的相关性的认识。相反地,如果计算阶段201的所有操作都必须在更新阶段202开始之前完成,那么系统150确保已经解决了所有的相关性;不需要对相关性进行详细的检查。
参照图3,两阶段图形计算方法2000可以用于执行对任何图形数据的分布式计算,如在过程3000中所示出的那样。设置步骤200包括两个子步骤:分割步骤300和初始化步骤301。类似地,计算阶段201包括四个子步骤:边计算步骤302、顶点计算步骤303、消息传递步骤304、以及同步步骤305。更新阶段202包括顶点更新步骤306。
为了更好地展示过程3000,还参照图4描述了示例图形400和示例计算应用。现在转到图4,图形400包括六个顶点V1-V6和六个有向的、加权的边E1-E6。图形400可以表示任何数量的实际应用,如,例如,与两个人都喜欢的电影相关的数据。例如,顶点V1-V6可以表示人顶点V1和V2以及电影顶点V3-V6。这些人-电影边E1-E6中的每一个的权重属性都可以表示特定的人(例如,V1或V2)对特定电影的兴趣水平。权重1可以表示最低兴趣水平,并且较高的值可以表示较高的兴趣。给定此样本图形,过程3000可以用于返回人V1和V2已经表达彼此兴趣的电影列表。另外,对于每一个返回的电影V3-V6,过程3000可以返回该两个兴趣值中的较小者(因为较不感兴趣的人具有最终发言权)。使用过程3000的此样本计算只要求单次迭代。
分割步骤300:在某些实施例中,过程3000在主100划分边表105时开始,从而使得该图形数据的每一条边E1-E6被分配给一个EPU101。同样,主100在这些VPU102之间分割这些顶点。以另一种方式来说,分割步骤300用于在多个处理器(例如,多个EPU101和多个VPU102)之间划分工作负荷。在某些实施例中,方法2000的最终结果有利地独立于如何分割这些边和顶点。
初始化步骤301:在某些实施例中,过程3000在主100初始化系统150时开始或继续。初始化步骤301可以包括选择哪些边E1-E6和顶点V1-V6初始地处于活动状态下。处于活动状态下的边或顶点参与计算阶段201的当前迭代;相应地,不活动(即,不处于活动状态下)的边和顶点并不参与。初始化步骤301还可以包括:针对计算-更新序列的第一次迭代设置边和顶点属性为初始值(例如,针对平均兴趣(average_Interest)设置电影顶点属性为0)、针对每一个EPU101和VPU102对计算阶段201的函数进行编程、针对每一个VPU102对更新阶段202的函数进行编程、针对停止决策203的停止条件进行编程、并且对完成步骤204的多个完成函数进行编程。
使用上文的电影推荐示例,为了确定哪个电影顶点V3-V6直接连接到人顶点V1和V2两者,主100将顶点V1和V2初始化为活动的。任何具有顶点V1或V2作为源顶点的边是用于此次迭代的活动边。主100将每一个EPU101编程为具有计算函数(用于计算阶段201),该计算函数使EPU101的每一个活动边向其目标顶点发送数据消息。该数据消息可以包括活动边的源顶点的ID代码以及该活动边的兴趣值。主100还将每一个VPU102编程为具有更新函数(用于更新阶段202),该更新函数使VPU102的每一个顶点对该顶点接收自EPU101的数据消息进行收集和检查。用于每一个VPU102的更新函数还向VPU102指示如果任何一个顶点接收自EPU101的数据消息集包括用于人顶点V1和人顶点V2两者的ID代码,那么VPU102向主100发送包含接收顶点的ID和两个兴趣值中的较小者的数据消息。用于此示例的停止条件是在第一次迭代之后无条件地停止。将在对过程3000的接下来的步骤的描述过程中给出针对图形400所发送和接收的特定消息。
边计算步骤302:在初始化步骤301之后,过程3000同时开始边计算步骤302与顶点计算步骤303。在边计算步骤302中,每一个EPU101根据在初始化步骤301期间由主100设置的计算函数来对其活动边执行计算。针对每一条活动边,负责的EPU101可以更新该活动边自身的属性。此外,EPU101可以在消息传递步骤304期间将计算函数结果中的某些计算函数结果作为数据消息发送至该活动边的端点顶点中的一个或两个。
在示例图形400中,每一条边都是活动的,因为每一条边的源顶点或者是顶点V1或者是顶点V2。边计算函数向其目标顶点发送包含该边的源顶点ID和该边的兴趣的数据消息。例如,边E1向顶点V3发送数据消息(V1,2)。同样,边E2向顶点V4发送数据消息(V1,4),边E3向顶点V5发送数据消息(V1,5),边E4向顶点V3发送数据消息(V2,3),边E5向顶点V5发送数据消息(V2,3),并且边E6向顶点V6发送数据消息(V2,6)。
顶点计算步骤303:过程3000的某些实施例可能发现它有利地包括顶点计算步骤303。在顶点计算步骤303中,每一个VPU102根据在初始化步骤301期间由主100设置的计算函数来对其活动顶点执行计算。顶点计算步骤303考虑每一个活动顶点的属性值,并且针对该顶点计算新的属性值。在某些实施例中,VPU102可以计算有待在消息传递步骤304期间作为数据消息发送至除了活动顶点之外的顶点的多个数据值。在使用上文的图形400的电影示例中,没有顶点计算函数,所以顶点属性值不发生改变。
消息传递步骤304:这些VPU102和这些EPU101传递在边计算步骤302和顶点计算步骤303期间所构造的数据消息。例如,将在上文的边计算步骤302中所描述的针对图形400的示例的该六个数据消息传递至它们对应的目的顶点。
同步步骤305:在某些实施例中,当消息传递步骤304开始时,同步步骤305开始。主100对这些EPU101、VPU102、以及数据传输网络103的活动进行监控以确定顶点计算和边计算是否完成。当所有的EPU101和VPU102都已经完成了边计算步骤302、顶点计算步骤303、以及消息传递步骤304时,主100允许这些VPU102开始顶点更新步骤306。在上文的电影示例中,主100在执行顶点更新步骤306之前将等待直至顶点V3接收到两条数据消息、顶点V4接收到一条数据消息、顶点V5接收到两条数据消息、并且顶点V6接收到一条数据消息。
顶点更新步骤306:在顶点更新步骤306中,每一个VPU102根据在初始化步骤301期间由主100所设置的更新函数来对接收数据消息的那些顶点进行处理。对于每一个接收顶点,VPU102为指定的属性计算新值并且更新该接收顶点的这些属性。此外,这些VPU102更新其顶点中的每一个顶点的状态;只有接收到消息的那些顶点将在下一次迭代中是活动的。最后,这些VPU102可以向主100发送顶点的数据属性。
在电影示例中,这些VPU102对顶点V3-V6进行检索以标识从顶点V1和V2均接收到数据消息的那些顶点。当找到这种接收顶点时,VPU102为主100构造包括接收方顶点的ID和来自这些数据消息的两个兴趣值中的较小者的数据消息。例如,顶点V3和V5满足这些要求。顶点V3接收到数据消息[(V1,2),(V2,3)],所以其VPU102向主100发送数据消息(V3,2)。顶点V5接收到数据消息[(V1,5),(V2,3)],所以其VPU102向主100发送数据消息(V5,3)。
停止决策203:在顶点更新步骤306之后,主100应用在初始化步骤301期间所设置的停止条件以确定接下来做什么。如果满足了停止条件,主100进行至完成步骤204。如果未满足停止条件,主100再次开始计算-更新序列,以同时的边计算步骤302和顶点计算步骤303开始。使用该电影示例,停止条件是在一次迭代之后停止,所以过程3000进行至完成步骤204。
完成步骤204:在完成步骤204中,主100进行如在初始化步骤301期间所设置的完成函数中所指定的任何最终后迭代计算。在该电影示例中,没有完成函数。主100将接收两个消息(V3,2)和(V5,3),并且这是最终的结果。实际上,该结果可以表示由人顶点V1和V2所表示的该两个人均对由电影顶点V3所表示的电影感兴趣(具有最小兴趣水平2),并且还对由电影顶点V5所表示的电影感兴趣(具有最小兴趣水平3)。在扩展示例中,完成函数可以选择具有最高兴趣水平的所推荐的电影。对于图形400而言,所选择的电影将由顶点V5表示,因为其相互兴趣水平3大于顶点V3的相互兴趣水平2。
有利地,过程3000通过在允许写更新时对责任和限制进行分离来避免竞态情况。每一个边只有一个EPU101,并且每一个顶点只有一个被授权改变其属性值的VPU102。另外,通过将计算阶段201与更新阶段202分离开来,当需要将边属性值和顶点属性值作为用于边计算步骤302和顶点计算步骤303的输入值时,它们是稳定的。同步步骤305确保在允许这些顶点值在顶点更新步骤306期间改变之前边计算步骤302和顶点计算步骤303已经完成。
由于只有一个EPU101具有对给定边进行读和写的授权,对于更新边值的时机,过程3000具有比对更新顶点值的时机更大的自由。在优选实施例中,一旦每一个EPU101已经计算出新的值,该EPU101在边计算步骤302期间对其活动边中的每一个活动边的值进行更新。在替代性实施例中,边属性更新与顶点更新步骤306并行发生。
参照过程3000所描述的操作仅仅用于说明而并不旨在是穷尽的。附加的操作和组件可以包括在所示出的这些操作之间或与这些操作并行。
图形表的结构和组织
现在参照图5,示出了可以存储在顶点表106中的样本顶点数据结构500。在一个实施例中,如具体应用所需要的,每一个顶点数据结构500均包含对顶点进行描述的顶点标识值(VID)501、指示顶点是在活动状态还是不活动状态下的状态502、以及附加顶点属性503(例如,较弱的兴趣)。在顶点数据结构500中所示出的样本条目包括图形400的顶点的属性(处于在初始化步骤301中它们的状态下)。根据上文的电影示例,图5中所示出的附加顶点属性503被设置为表示较弱的兴趣水平(例如,对电影的联合兴趣的水平)。如果电影具有联合兴趣,那么较弱的兴趣是该两个感兴趣的人的兴趣水平中的较小者。
顶点表106整体上可以是任何合适的计算机数据结构,如数据或哈希表。顶点表106可以被分割为共同表示顶点表106的多个片段。可能有顶点表106的多于一个的副本。在优选实施例中,这些VID501值是连续的整数,每一个顶点使用相等量的存储器,并且根据VID501的值将顶点表106存储为阵列,其中,以排列顺序来存储顶点。本实施例允许对每一个顶点的物理位置进行快速的确定。
现在参照图6,样本顶点数据结构500的替代性实施例被示出为样本顶点数据结构600。样本顶点数据结构600类似于样本顶点数据结构500并且进一步包括顶点类型(VType)601。VType601可以用于存储每一个顶点的类型或类别。这种使用使得在处理过程中能够容易地对顶点进行过滤。在顶点数据结构600中所示出的样本条目包括图形400的顶点(处于在电影推荐计算的顶点更新步骤306之后它们的状态下)。VType601的样本值表明顶点V1和V2是人类型,而其他的顶点是电影类型。现在,顶点的状态502不同于初始化步骤301处,并且联合兴趣水平(例如,较弱的兴趣)被记录在附加顶点属性503中。
现在参照图7,示出了可以存储在边表105中的样本边数据结构700。在一个实施例中,如具体应用所需要的,每一个边数据结构700均包含进一步对边进行描述的源顶点ID701、目标顶点ID702、边类型(EType)703、以及附加边属性704(例如,兴趣)。在边数据结构700中所示出的样本条目包括图形400的边E1-E6的属性。如在图7中所示出的这些附加边属性704被设置为表示兴趣水平(例如,由源顶点ID701所表示的人对由目标顶点ID702所表示的电影的兴趣水平)。
有利地,类似于VID501,不需要附加边ID属性,因为每一条边都已经由源顶点ID701、目标顶点ID702和边类型703唯一地标识。边表105整体上可以是任何合适的计算机数据结构,如数据或哈希表。边表105可以被分割为共同表示该表的多个片段。可能有边表105的多于一个的副本。
如所示出的,通过在顶点表106中所定义的VID号码来对边的源顶点和目标顶点进行标识。然而,在某些优选实施例中,通过存储器地址来对源顶点和目标顶点进行标识。这些优选实施例有利地使得能够快速地访问顶点的数据,无需任何附加的存储器查找。
通过以一定顺序来存储边,某些实施例可以移除样本边数据结构700的一列,由此减少存储图形所需要的总体存储器。例如,现在参照图8A,示出了减小的边表800,该边表是样本边数据结构700的另一个实施例,在该样本边数据结构700中,所有共享同一个源顶点的边都被存储在相邻的存储器位置中。在减小的边表800中所示出的样本条目包括图形400的边。如所示出的,源顶点ID701不包括在减小的边表800中,因为存储器地址811可以被替换以便定位单独的边。虽然示出了用于存储器地址811的一个可能的地址集合,存储器地址811可以不包括在减小的边表800的内容中。
现在转到图8B,作为对从减小的边表800中移除源顶点ID701的交换,扩展顶点表810包括额外的字段,边地址801。在顶点表810中所示出的样本条目包括图形400的扩展顶点(处于在顶点更新步骤306之后它们的状态下)。每一个顶点使用边地址801来存储源顶点是此顶点的一条边的存储器地址。在这种实施例中,系统150的组件(例如,EPU101)可以通过进行以下过程来对边进行定位:首先,找到作为扩展顶点表810中的VID501的边的源顶点、转到那个顶点的边地址801中所记录的地址、并且然后对存储在多个相邻的位置中的边的块进行扫描直至找到具有所期望的目标顶点值的边。
例如,为找到有向边(V1,V5):在扩展顶点表810中查找顶点V1、转到用于顶点V1的边地址801(即,地址1000)、并且对存储在地址1000附近的边数据结构进行扫描直至找到顶点V5。在地址1100(地址1000处的边之后两条边)处找到顶点V5。
虽然作为对从边表105中移除一个属性(例如,源顶点ID701)的交换而向顶点表106添加了属性(例如,边地址801),存在净存储器节省,因为连接图形经常具有至少与顶点一样多的边。
图形存储单元104可以包括能够承载顶点表106和边表105并且能够向EPU101和VPU102发送数据并从中接收数据的任何一个或多个电子数据存储装置。这包括但不限于永久存储装置(如,磁性硬盘和固态存储器驱动器)以及非永久存储装置(如DRAM)。
处理单元
每一个EPU101都是可被分配多条边并且可以针对为其分配的边在过程3000中执行EPU101任务的可编程计算装置。这些EPU101任务包括但不限于边计算步骤302。每一个EPU101独立地处理为其分配的边中的每一条边。对于所分配的每一条边,EPU101通过以下过程来操作:读取其端点顶点的边数据结构700和顶点数据结构500、在该数据上进行边计算步骤302、可选地更新其自身的边属性、并且通过数据传输网络103来发送被定址到顶点的多条数据消息。
每一个VPU102都是可被分配多个图形顶点并且可以针对为其分配的顶点在过程3000中执行VPU102任务的可编程计算装置。这些VPU102任务包括但不限于顶点计算步骤303和顶点更新步骤306。在某些实施例中,有两种VPU102:执行顶点计算步骤303的那些以及执行顶点更新步骤306的那些。在某些实施例中,有一种被编程为执行顶点计算步骤303和顶点更新步骤306两者的VPU102。
VPU102独立地处理为其分配的顶点中的每一个顶点。在某些实施例中,执行顶点更新步骤306的每一个VPU102都包含能够保持多条到来的数据消息的数据结构。在某些实施例中,执行顶点更新步骤306的每一个VPU102都可执行可以将多条到来的消息组合为单条消息的组合函数。
每一个EPU101和每一个VPU102都可以是物理上不同的计算单元(如,计算机或微处理器),或者每一个EPU101和每一个VPU102都可以是软件构造。在某些实施例中,多个软件EPU101和软件VPU102被包含在同一个物理计算机中。
对于具体的计算应用,用于边计算步骤302的函数可以为空,或者用于顶点计算步骤303的函数可以为空。例如,在早先所呈现的电影推荐应用中,没有用于顶点计算步骤303的函数。
数据传输网络
数据传输网络103是用于在EPU101、VPU102与图形存储单元104之间的数据传输的任何介质和协议。例如,数据传输网络103可以是但不限于计算机内的内部数据总线、局域网(像以太网)、以及全球范围的网络(包括例如互联网和万维网)。在某些实施例中,数据传输网络103是允许对多条数据消息进行同时传输的多个独立的数据网络。
数据消息
作为边计算步骤302和顶点计算步骤303的一部分,这些EPU101和/或VPU102生成多条数据消息,这些数据消息被定址到具体的顶点以及其对应的VPU102。数据消息包括一个或多个数据值。对于某些实施例,该数据消息的数据值源自发送方的属性值的子集。也就是说,发送方边或顶点使用数据消息来告知接收方顶点关于发送方的状态的一些事情。对这些数据值进行计算和结构化的具体方式取决于用于边计算步骤302或顶点计算步骤303的具体编程函数。例如,对于先前所描述的电影推荐应用,数据消息的本体是发送边的源顶点ID701和兴趣704。在其他计算中,消息是值阵列或列表。在某些其他的计算中,这些消息包含多个片段,每一个片段或者是单个值或者是值阵列。
某些实施例发现数据消息包括用于接收方顶点和接收方顶点的VPU102的标识符(类似于邮寄信如何承载邮寄地址)是方便的。然而,没有对消息包含此定址信息的任何明确的要求,只要系统150能够将每一条数据消息传递到预期的接收方(例如,目标VPU102)。例如,当这些VPU102执行顶点计算步骤303时,这些VPU102中的某些可以构造被定址到其自身的数据消息,这些数据消息有待在顶点更新步骤306期间发送。对于这种数据消息,这些VPU102仅需要在本地存储这些数据消息的数据值,直至顶点更新步骤306。这种数据消息并不需要地址信息,这种数据消息也不需要使用数据传输网络103。
对活动边和活动顶点的管理
系统150和两阶段图形计算方法2000可以对活动边和活动顶点的演进状态进行管理和控制,以便最小化活动边和活动顶点的数量。主100、EPU101、和VPU102在活动状态的管理中都起到了作用。保持活动边和活动顶点的数量至最小值有助于时间和能量效率。
现在参照图9,示出了用于在图形(例如,图形400)中的多个顶点的状态过渡图9000的一个实施例。边的状态由顶点的状态管理:当且仅当边的源顶点为活动的时该边才是活动的。当顶点表106仅需要记录用于状态502两个可能值(例如,活动的或不活动的)以理解状态过渡时,将活动状态作为三个子状态之和进行考虑是有指导性的。从这个角度看,有四种可能的顶点状态:不活动状态900、活动-更新状态901、活动-计算状态902、以及活动-恢复状态903。以另一种方式来说,状态是每一个单独的顶点或边的特性,而参照两阶段图形计算方法2000和过程3000所描述的阶段是系统150整体上的特性。然而,状态过渡发生在阶段变化发生时,如下文所描述的。
当系统150不在使用中时,所有的顶点都在不活动状态900下。在设置步骤200期间,主100选择某些顶点为用于计算的起始点。所选择的这些顶点满足从不活动状态900移动到活动-计算状态902的条件911。一般而言,过渡发生在系统150或者正在进入计算阶段201或者正在进入更新阶段202时。
在计算阶段201期间,每一个顶点都或者在不活动状态900或在活动状态902下。活动顶点将经历顶点计算步骤303,并且带有活动端点顶点的边将经历边计算步骤302。活动边可以向顶点发送数据消息。当计算阶段201结束而更新阶段202开始时,每一个顶点过渡至另一个状态。如果顶点处于不活动状态900下但是接收到数据消息(条件912),顶点将进入活动-更新状态901中。如果不活动顶点没有接收到任何消息(条件910),顶点将保持不活动。如果活动顶点接收到消息(条件913),顶点将移动到活动-更新状态901。如果顶点是活动的但是没有接收到消息(条件916),那么该顶点过渡至活动-恢复状态903。
在更新阶段202中,在活动-更新状态901下的任何顶点都将经历顶点更新步骤306。当更新阶段202结束时,现在处于活动-更新状态901的顶点将过渡至或者不活动状态900或者活动-计算状态902。如果顶点的属性值之一在顶点更新步骤306期间被修改,那么该顶点保持活动,转到活动-计算状态902(条件915)。如果顶点的属性未曾发生改变,那么该顶点目前没有更多的工作可做;该顶点移动到不活动状态900(条件914)。现在处于活动-恢复状态903下的顶点将在计算阶段201开始时(条件917)转到不活动状态900。在某些实施例和某些编程计算中,处于活动-恢复状态903下的顶点没有任何职责,所以活动-恢复状态903在行为上相当于不活动状态900。
在某些实施例中,主100可以无视通常的状态过渡并且锁定某些顶点和某些边贯穿计算过程为或者活动的或者不活动的。例如,假设过程3000用于计算哪些电影在人P的朋友之间具有最高的平均兴趣,但是恐怖类型片中的电影被排除在外。主100可以通过将恐怖类型片中的所有电影顶点锁定在不活动状态来完成该排除。
示例计算1:从开始顶点V11出发的最短路径。
现在参照图10,示出了在示例计算的过程中在六个时间点处(快照)示例图形(包括顶点V11-V15和边E11-E15)的状态。快照1001示出了在用于第一次迭代的计算阶段201开始时的示例图形。该示例计算对从顶点V11至每一个其他顶点的最短路径的长度进行计算。路径长度是路径中的边的数量。在某些应用中,每一条边具有权重属性,并且路径长度是沿着路径的各个边权重值之和。未加权的情况相当于每一条边具有权重=1。此示例使用未加权的边的情况。
在此示例计算中,每一个顶点都具有一个被称为距离的属性。主100将顶点V11初始化为具有距离=0并且将顶点V11设置为活动的。主100将其他顶点初始化为具有距离=∞,但是这些其他顶点保持为不活动的。用于边计算步骤302的编程计算函数如下:其源顶点的距离值在前一个迭代向其目标顶点发送数据消息之后发生变化的每一条活动边,数据消息内容为源顶点的距离值+1。此计算不需要顶点计算步骤303。用于顶点更新步骤306的编程更新函数如下:顶点的距离属性被更新为其当前值和该顶点在此次迭代中所接收的数据消息中的值中的最小值。
示例图形具有五个顶点(V11至V51)和五条边(E11至E15)。对于此较小的图形,只有两个EPU101和两个VPU102。在图10的左半部分中,围绕边E11、边E12、和边E15的虚线1010表明那些边被分配给EPU1,所以,所有的剩余边都被分配给EPU2。类似地,在图10的右半部分中,围绕顶点V11、顶点V13、和顶点V15的虚线1011表明那些顶点属于VPU1;剩余的顶点属于VPU2。
为开始此次计算,在初始化步骤301中,主100将顶点V11设置为活动的。因为顶点V11是针对边E11和边E12的源顶点,那两条边同样自动为活动的。因此,EPU1是活动的,因为EPU1对活动边负责,而EPU2则不。
现在再次参照图10,在迭代1的计算阶段201(快照1001)中,EPU1处于活动-计算状态902。EPU1对活动边E11和活动边E12执行边计算步骤302。顶点V11的距离值为0,所以,边E11向边E11的目标顶点V12发送包含“1”的数据消息1007,并且边E12向边E12的目标顶点V13发送具有相同的距离值“1”的数据消息。
在迭代1的更新阶段202(快照1002)中,顶点V12和V13现在处于活动-更新状态901下,因为顶点V12和V13接收到了消息。顶点V12和V13分别在VPU1和VPU2中,所以VPU1和VPU2两者都是活动的。因为顶点V11没有接收到数据消息,顶点V11从活动-计算状态902过渡至活动-恢复状态903。根据用于顶点更新步骤306的编程函数,顶点V12和V13各自设置它们的距离属性为它们的当前值以及它们所接收的数据消息中的值之间的最小值。由于顶点V12和V13各自接收到值“1”,并且1小于∞,顶点V12和V13将它们的距离属性更新为“1”。
当迭代2开始计算阶段201(快照1003),顶点V12和V13是活动的。边E13、E14、和E15也是活动的,因为它们的源顶点或者是顶点V12或者顶点V13。注意,EPU1和EPU2两者均是活动的。在边计算步骤302中,活动边发送包含它们的距离值+1的数据消息。相应地,边E13、E14、和E15分别向顶点V13、V14、和V15发送包含“2”的数据消息。因此,在迭代2的更新阶段202(快照1004)中,顶点V13、V14、和V15处于活动-更新状态901下。因为顶点V12没有接收到数据消息,顶点V12过渡至活动-恢复状态903。顶点V14和V15将它们的距离属性从“∞”更新至“2”。另一方面,根据此次具体计算的规则,顶点V13不改变其距离值,因为其当前值“1”小于来自顶点V12的所接收的数据消息中的“2”。
在迭代3的计算阶段201(快照1005)开始时,顶点V14和V15是活动的。因为顶点V13的属性值在前一次迭代中没有发生变化,顶点V13现在是不活动的。顶点V14和V15没有任何出边,所以,不发生数据消息。在更新阶段202(快照1006)中,没有接收到数据消息。顶点V14和V15过渡到活动-恢复状态903。所有的顶点和边在迭代4中都将是不活动的,并且计算将结束。
在某些实施例中,这些VPU102将识别出顶点V14和V15没有任何出边,并且因此顶点V14和V15在迭代3开始时将过渡至不活动状态900而不是活动-计算状态902。
图11描绘了从不同角度看的同一个示例。图11示出了相同的三个迭代,描绘了每一个EPU101和VPU102的数据结构内容。例如,在迭代1的计算阶段201(快照1101)期间,顶点V11是活动的。VPU1负责顶点V11、V13、和V15。EPU1负责活动边E11和E12以及不活动边E15。VPU2中的顶点以及EPU2中的边是不活动的。这些活动边通过数据传输网络103发送它们的消息1007。还示出了该计算的其他阶段(快照1102、1103、1104、1105、和1106)。
示例计算2:k-邻域子图形提取
另一个常见的计算任务是对k-邻域子图形进行标识。也就是说,给定图形G、起始顶点V、以及正整数k,对距离起始顶点V不远于距离k的所有顶点以及它们的连接边(包括子图形S)进行标识。参数k在某些社会学环境中被称为分离度。这种计算在社会网络分析、产品推荐、医疗和生物科学、以及犯罪学中具有许多有用的应用。
用于此计算的过程可以被视为对广度优先搜索(还形成最短距离计算的基础的常用图形计算)的修改。每一个顶点都具有距离属性。在初始化步骤301期间,主100在顶点V中设置距离=0并且在所有其他顶点中设置距离=∞。在第一次迭代开始时,顶点V是仅有的活动顶点。在计算阶段201期间,每一个活动边都向该活动边的目标顶点发送数据消息(源距离(Source_distance)+E长度(E_length))。源距离是源顶点的距离属性值。E长度是边的长度属性,如果边具有这种属性的话。如果边是未加权的,那么E长度=1。在此示例中,所有的边长度都是正的并且有限的。
在更新阶段202期间,对接收到数据消息的每一个顶点U进行如下处理:负责顶点U的VPU102对在当前迭代中所接收的被定址到顶点U的所有距离值进行比较。如果(源距离+E长度)的所接收的最小值小于自身的当前距离值并且还小于k,那么VPU102将顶点U的距离更新为那个较小值。在第一次迭代中,由于所有的初始距离值都是无限大的,所有的消息都包含较小的距离。因此,在第一次迭代中,接收到消息的每一个顶点都将得到更新。如果每一个VPU102的顶点之一更新了顶点的距离值,那么该VPU102进入活动-更新状态901。所以,在当前迭代中降低它们的距离的顶点将在下一次迭代中发出消息(以通知其他顶点它们的新距离值)。
最终,不远于k的每一个顶点都将接收到数据消息。停止条件是在当前迭代不生成任何数据消息发送时。
示例计算3:网页排名
网页排名是常用的图形测量,其针对有向图形中的每一个顶点确定分值。该分值可以被解释为权限,其中,如果顶点被自身具有高权限的若干个邻近顶点引用,那么该顶点具有高权限。网页排名本身是有用的,用于标识重要顶点。网页排名也是在许多更复杂的计算中的构建块,这些计算希望得到对这些顶点的相对排名。有多种用于计算网页排名分值的方法。这里描述了良好地适用于系统150和两阶段图形计算方法3000的简单迭代过程。每一次迭代产生渐进地接近稳态值的一组排名。迭代网页排名计算要求两个参数。一个是具有0与1之间的值的阻尼因子B。阻尼因子B的典型值是0.85。另一个参数控制何时停止计算。为了简明,此示例指定固定数量T的迭代。
为初始化计算,主100为每一个顶点分配初始排名值R(V)=1/N,其中N是图形中的顶点数量。每一个顶点都是活动的。令D(V)为顶点(V)的出度,即,从顶点V向外前进的边的数量。在边计算步骤302中,每一条边向其目标顶点发送具有值R(S)/D(S)的数据消息,其中,S是边的源顶点。在顶点更新步骤306中,每一个顶点根据以下方程更新其排名值:
R(V)=B*(此次迭代中所接收的消息中的值之和)+(1-B)
重复计算-更新序列T次。
附加图形计算的列表
示例计算4:系统150和两阶段图形计算方法3000不仅对已经从图形角度构思的计算来说是有用的并且高效的,而且对在常规的关系数据库设置中的将要求加入大表格的计算来说也是有用的并且有效的。这些计算包括以下:
示例计算5:找到相隔特定距离的多个实体,如找到好友(距离=2)的好友。在此示例中,我们假设所有的好友关系都是由两条边所表示的双向关系,一条边在一个方向上行进。在设置步骤200中,主100将所期望的起始顶点设置为活动-计算状态902。例如,如果使用者想要知道顶点V1和顶点V3的好友的好友,那么主100将顶点V1和V3设置为活动-计算状态。在计算阶段201的第一次迭代中,每一条活动边都向其目标顶点发送其源顶点ID。在更新阶段202的第一次迭代中,接收到消息的每一个顶点将所接收的这些ID集中到单个好友集中。
在计算阶段201的第二次迭代中,每一条活动边都向其目标顶点发送其好友集。在更新阶段202的第二次迭代中,每一个顶点将其所接收到的多个好友集组合到单个好友的好友集。
示例计算6:找到两个特定顶点所共享的邻居。这些邻居不一定是与初始顶点相同类型的对象。例如,这些初始顶点可以是购物者,并且邻居可以是购物者们已经购买的产品。此计算仅要求一次迭代。在设置步骤200中,主100将感兴趣的两个顶点(“根”顶点)设置为活动-计算状态902。在计算阶段201期间,每一条活动边都向其目标顶点发送其源顶点ID。在更新阶段202期间,从两个根顶点都接收消息的任何顶点是共同邻居。这些共同邻居将包含它们自身的ID值的消息发送至主100。
示例计算7:找到具有高数量或高百分比邻居是共同的多个顶点对。此计算考虑所有可能的顶点对,并因此是对仅考虑一对的之前的示例的扩展。此计算需要两次迭代。在此示例中,假设5是什么被认为是高数量共同邻居的阈值。在设置步骤200中,主100将所有的顶点设置为活动-计算状态902并且用参数许多邻居(ManyNeighbors)=5来对这些VPU102进行编程。在计算阶段201的第一次迭代中,每一条边都向其目标顶点发送其源顶点ID。为减少消息的数量,每一个EPU101都可以将其多条消息捆绑到每一个目标VPU102一个分组中,而不是每一个目标顶点。在更新阶段202的第一次迭代中,每一个VPU102针对每一个顶点建立所有发送方的集合。例如,如果顶点V1、V3、和V4向顶点V8发送消息,那么顶点V8的发送方集合是{V1,V3,V4}。
在计算阶段201的第二次迭代中,每一条边都将一个两部分消息发送回每一个发送方。第一部分是源顶点ID。第二部分是返回至每一个发送方的发送方集合减去发送方自身。继续之前的示例,发自顶点V8的边发送消息{V8:V1,V3}至顶点V4、发送消息{V8:V1,V4}至顶点V3、并且发送消息{V8:V3,V4}至顶点V1。在更新阶段202的第二次迭代中,每一个顶点对每一个顶点ID在所接收的消息的发送方集合中发生了多少次进行计数。例如,当顶点V4接收到消息{V8:V1,V3}时,顶点V4向其针对“V1”的计数加1并且向其针对“V3”的计数加1。任选地,顶点V4可以跟踪到顶点V8是发送方。当已经对所有的消息进行接收和计数时,至少与许多邻居=5一样大的计数指示具有高数量邻居是共同的顶点。
示例计算8:找到起始顶点与结束顶点之间的净信任或影响,其中,每一条边具有对应于信任度或影响度的权重。计算机科学学术文献描述了可以在图形结构中迭代地计算出的信任或影响的若干种度量。
示例计算9:测量多个顶点的向心性或中间性。向心性和中间性是社会网络分析中的众所周知的概念并且可以在图形结构中迭代地进行计算。
存储器内处理
在某些实施例中,这些EPU101和这些VPU102伴随着快速本地存储器(如计算机中的DRAM主存储器)。在某些此类实施例中,每一个EPU101将边表105的为其分配的部分的全部或一部分复制到该EPU101的本地存储器中,避免每次迭代都需要通过数据传输网络103来访问边表105。类似地,每一个VPU102将顶点表106的为其分配的部分的全部或一部分复制到VPU102的本地存储器。每一个EPU101和每一个VPU102有利地执行计算并且对其表格的存储器内副本进行更新,这比用存储于硬盘上的表格进行工作要快得多。在一个计算-更新序列期间,由于边和顶点的属性值被修改,该计算不一定需要这些EPU101或这些VPU102立即将这些变化写回图形存储单元104。系统150和过程3000被结构化为独立于其他边对每一条边进行处理。边和顶点通过数据消息来互相通知属性值的变化。当计算结束时,然后可以将数据的本地副本写回到图形存储单元104。
基于边的处理的效率
在许多图形中,尤其是在人类社会网络中有一定基础的那些图形,这些边没有均匀地分布在这些顶点中。经常,一些顶点是中枢,意味着它们充当至高数量边的端点顶点,而大多数其他顶点连接至小数量的边。在常规的基于顶点的图形计算系统中,负责中枢顶点的多个处理器比负责具有低连接性的顶点的那些处理器花费更久来执行它们的计算功能。这造成了工作负荷不平衡,其中,大多数处理器将等待该一些中枢处理器完成它们的操作。
在所披露的系统中,这些EPU101在计算阶段201中的存在和使用有利地允许简单和有效的负载均衡。在优选实施例中,主100向每一个EPU101分配几乎相等数量的边。每一条边具有相同的连接程度,一个源顶点和一个目标顶点,所以中枢边的处理时间可能与非中枢边的处理时间没有什么不同。因此,期望每一个EPU101以大约相同的时间完成其操作。
高效的消息传递和顶点访问
在某些实施例中,执行边计算步骤302的这些EPU101不在处理每个单独的边之后发送单独的数据消息。相反,这些EPU101等待并且将被定址到同一个顶点以及到同一个VPU的数据消息捆绑到一起。在某些实施例和计算应用中,所组合的消息的本体是消息的简单连结。在某些其他实施例和计算应用中,执行附加的计算以将若干单独的消息本体组合为单个消息本体。这些EPU101在处理所有的活动边之后的边计算步骤302结束时发送它们的捆绑数据消息。
在某些实施例中,这些顶点有利地将协作编号和存储布局方案用于高度高效的消息定址和传递。在这种实施例中,这些顶点ID是连续的整数,以计算上方便的基数(如0)开始。例如,如果总共有五个顶点,它们的ID是0、1、2、3、和4。每一个顶点数据结构被分配以相等量的存储存储器,并且顶点表106作为阵列被存储。因此,可以通过阵列标引方案来访问顶点。此外,主100为每一个VPU102分配连续编号的顶点的块。
在某些实施例中,第一顶点被编号为0,并且分配给每一个VPU102的顶点数量是2的幂次方,除了这些VPU102中最后一个之外。例如,如果在这些VPU102中有30个顶点和四个单元,
VPU[0]被分配以顶点0至7,
VPU[1]被分配以顶点8至15,
VPU[2]被分配以顶点16至23,并且
VPU[3]被分配以顶点24至29。
在这种实施例中,这些VPU102中任何一个的地址可以以简单的划分操作来进行计算:
VPU地址(VPU_address)=顶点地址(vertex_address)/(VPU数量(number_of_VPUs)),向下取整至整数值。在优选实施例中,如果VPU的数量是2的幂次方,那么对顶点地址的划分(表示为二进制整数)可以通过对顶点地址的二进制位的进行简单移位来完成。
停止条件的实施例
有若干个可用于停止迭代的计算-更新序列迭代的可能条件。在某些实施例中,当系统已经重复计算-更新序列预定最大次数时满足停止条件。在某些实施例中,当在此次迭代中顶点属性值或边属性值没有变化时满足停止条件。在某些实施例中,当顶点值变化或边值变化的大小小于某个限制是满足停止条件。在某些实施例中,主100可以由于除了图形数据值之外的条件而生成或接收停止请求。可能的非图形条件包括人类使用者取消图形计算或在组件中检测到错误。
在某些具有固定数量的迭代的实施例中,主100在全局维护控制并停止系统150。然而,如果没有向所有的EPU101和VPU102发送全局停止消息的高效方式,这可能不是令人期望的。在替代性实施例中,数据消息包含用于对迭代数量进行计数的数值变量。每一个EPU101和VPU102随着每一次迭代将其计数变量的副本加一,并且将在其计数值到达目标值时知道停止。在某些实施例中,这些计数变量被初始设置为目标迭代数量,并且这些值随着每一次迭代而减一。在这种情况下,这些EPU101和这些VPU102在计数值达到0时停止。
有向图形和传播的活动状态的实施例
在某些实施例中,每一条边都是有向的,具有经设计的源顶点和目标顶点。在某些此类实施例中,处理的流程遵循这些边的方向性。例如,假设有一条边E1=(V1,V2),意味着顶点V1是源顶点而顶点V2是目标顶点。进一步,假设在迭代N开始时,顶点V1是活动的并且顶点V2是不活动的。因为顶点V1是活动的并且是对于边E1的源顶点,边E1也是活动的。
作为边计算步骤302的一部分,有向边可以向其目标顶点发送数据消息。假设边E1向顶点V2发送数据消息。当针对E1的边计算步骤302结束时,除非顶点V1接收到数据消息,顶点V1将过渡至活动-恢复状态903。在顶点更新步骤306中,可以更新顶点V2。在下一次迭代开始时,顶点V1将是不活动的而顶点V2将是活动的。活动顶点已经沿着边的方向从迭代N中的顶点V1移位至迭代N+1中的顶点V2。上述实施例作为说明性示例提供,而不旨在描述有向图形计算方法的所有可能的实施例。
针对顶点的可访问性的替代性实施例
在主要实施例中,顶点无法访问任何其他顶点的ID,并且边具有仅用于其两个端点顶点的ID值。在没有ID信息的情况下,消息不能被定址,所以图形内的处理流程可能仅仅从活动边的源顶点移动至其目标顶点。在替代性实施例中,处理单元可以访问其他ID并且能够向其他顶点发送消息。举例来说,某些具体顶点可能具有全局兴趣。在一个实施例中,此类顶点的身份被存储在顶点表106的全局可访问的部分中。在另一个实施例中,将此类顶点的ID作为数据消息的一部分从活动顶点传递至其他顶点。
所描述的这些实施例易于经历各种修改和替代形式,并且其具体示例已经通过在这些附图中进行举例来示出并且在此详细地描述。然而,应当理解,所描述的这些实施例并不旨在限制于所披露的具体形式或方法,而相反地,本披露旨在覆盖所有的修改、等效方案和替换方案。
Claims (20)
1.一种用于对具有一条或多条边的图形进行分布式计算的计算机实现的方法,该一条或多条边中的每一条边连接一个源顶点和一个端点顶点,该方法包括:
读取该一条或多条边的属性值以及该一条或多条边的这些源顶点的属性值;
对所读取的这些属性值执行计算;以及
基于所执行的这些计算来更新该一条或多条边的和该一条或多条边的这些端点顶点的这些属性值,
其中,所述执行没有修改所读取的这些属性值中的任何一个属性值。
2.如权利要求1所述的计算机实现的方法,进一步包括维护所读取的属性值之间的一个相关性列表。
3.如权利要求2所述的计算机实现的方法,其中,所述更新这些属性值基于所维护的该相关性列表而发生,从而使得在所述执行计算期间没有冲突。
4.如权利要求1所述的计算机实现的方法,进一步包括将该一条或多条边分割为一个或多个边处理单元并且将这些源顶点和这些端点顶点分割为一个或多个顶点处理单元。
5.如权利要求4所述的计算机实现的方法,其中,该一个或多个边处理单元相互独立地工作并且该一个或多个顶点处理单元相互独立地工作。
6.如权利要求1所述的计算机实现的方法,进一步包括将一个数据消息从所选择的一条边传输至所选择的该边的端点顶点,
其中,该数据消息包括所选择的该边的源顶点的一个标识码和所选择的该边的属性值中的至少一项。
7.如权利要求6所述的计算机实现的方法,其中,所述更新这些端点顶点的属性值也是基于所传输的数据消息进行的。
8.如权利要求1所述的计算机实现的方法,其中,该一个或多个边各自是活动的或不活动的之一,并且所述读取、执行和更新不针对不活动边执行。
9.如权利要求1所述的计算机实现的方法,其中,每一个源顶点和每一个端点顶点是活动的或不活动的之一,并且所述读取、执行和更新不针对不活动顶点执行。
10.如权利要求1所述的计算机实现的方法,其中,该一条或多条边的属性值进一步被存储在一个边数据结构中,该边数据结构包括以下各项中的至少一项:该边的源顶点的标识、该边的源顶点的存储器地址、该边的端点顶点的标识、以及该边的边类型。
11.一种用于对具有一条或多条边的图形进行分布式计算的系统,该一条或多条边中的每一条边连接一个源顶点和一个端点顶点,该系统包括:
用于读取该一条或多条边的属性值的一个或多个边处理单元;
用于读取该一条或多条边的源顶点的属性值的一个或多个顶点处理单元;以及
用于维护该一条或多条边的端点顶点的属性值的一个图形存储单元,
其中,所述一个或多个边处理单元进一步执行计算,这些计算并不修改该一条或多条边的所读取的这些属性值中的任何属性值并且基于所执行的这些计算来对该一条或多条边的和该一条或多条边的这些端点顶点的这些属性值进行更新,并且所述一个或多个顶点处理单元进一步对这些端点顶点的所读取的属性值执行计算。
12.如权利要求11所述的系统,进一步包括用于维护所读取的属性值之间的一个相关性列表的一个主处理器。
13.如权利要求12所述的系统,其中,所述一个或多个边处理单元进一步基于所维护的该相关性列表来更新这些属性值,从而使得在该执行计算期间没有冲突。
14.如权利要求12所述的系统,其中,所述主处理器进一步将该一条或多条边分割为所述一个或多个边处理单元并且将这些源顶点和这些端点顶点分割为所述一个或多个顶点处理单元。
15.如权利要求14所述的系统,其中,该一个或多个边处理单元相互独立地工作并且该一个或多个顶点处理单元相互独立地工作。
16.如权利要求11所述的系统,其中,所述一个或多个边处理单元进一步将一个数据消息从所选定的一条边传输至所选定的该边的端点顶点,并且
该数据消息包括所选择的该边的源顶点的一个标识码和所选择的该边的属性值中的至少一项。
17.如权利要求16所述的系统,其中,所述一个或多个顶点处理单元基于所传输的该数据消息来更新这些端点顶点的这些属性值。
18.如权利要求11所述的系统,其中,该一个或多个边各自是活动的或不活动的之一,并且所述读取、执行和更新不针对不活动边执行。
19.如权利要求11所述的系统,其中,每一个源顶点和每一个端点顶点是活动的或不活动的之一,并且所述读取、执行和更新不针对不活动顶点执行。
20.如权利要求11所述的系统,进一步包括用于维护该一条或多条边的这些属性值的一个边数据结构,该边数据结构包括以下各项中的至少一项:该边的源顶点的标识、该边的源顶点的存储器地址、该边的端点顶点的标识、以及该边的边类型。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462043849P | 2014-08-29 | 2014-08-29 | |
US62/043,849 | 2014-08-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389324A true CN105389324A (zh) | 2016-03-09 |
CN105389324B CN105389324B (zh) | 2019-08-27 |
Family
ID=55402771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510548289.5A Active CN105389324B (zh) | 2014-08-29 | 2015-08-31 | 用于图形数据的分布式计算的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10120956B2 (zh) |
CN (1) | CN105389324B (zh) |
HK (1) | HK1221293A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250563A (zh) * | 2016-08-30 | 2016-12-21 | 江苏名通信息科技有限公司 | 基于GPS平台的k‑bisimulation计算算法 |
CN109344295A (zh) * | 2018-08-24 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 分布式图嵌入方法、装置、设备及系统 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10120956B2 (en) * | 2014-08-29 | 2018-11-06 | GraphSQL, Inc. | Methods and systems for distributed computation of graph data |
EP3268870A4 (en) * | 2015-03-11 | 2018-12-05 | Ayasdi, Inc. | Systems and methods for predicting outcomes using a prediction learning model |
US10275287B2 (en) | 2016-06-07 | 2019-04-30 | Oracle International Corporation | Concurrent distributed graph processing system with self-balance |
US10235474B2 (en) | 2017-02-27 | 2019-03-19 | Oracle International Corporation | In-memory graph analytics system that allows memory and performance trade-off between graph mutation and graph traversal |
US10546022B2 (en) * | 2017-06-20 | 2020-01-28 | Cisco Technology, Inc. | Temporal graph system to facilitate network data flow analytics |
US10776371B2 (en) * | 2018-04-05 | 2020-09-15 | Sap Se | Extended path finding operations on graph data |
US11120082B2 (en) | 2018-04-18 | 2021-09-14 | Oracle International Corporation | Efficient, in-memory, relational representation for heterogeneous graphs |
US10990595B2 (en) | 2018-05-18 | 2021-04-27 | Oracle International Corporation | Fast distributed graph query engine |
US20200265090A1 (en) * | 2019-02-20 | 2020-08-20 | Oracle International Corporation | Efficient graph query execution engine supporting graphs with multiple vertex and edge types |
US11222018B2 (en) | 2019-09-09 | 2022-01-11 | Oracle International Corporation | Cache conscious techniques for generation of quasi-dense grouping codes of compressed columnar data in relational database systems |
CN111124675B (zh) * | 2019-12-11 | 2023-06-20 | 华中科技大学 | 一种面向图计算的异构存内计算设备及其运行方法 |
US11093459B2 (en) | 2020-01-21 | 2021-08-17 | Oracle International Corporation | Parallel and efficient technique for building and maintaining a main memory, CSR-based graph index in an RDBMS |
US11675785B2 (en) | 2020-01-31 | 2023-06-13 | Oracle International Corporation | Dynamic asynchronous traversals for distributed graph queries |
CN111309976B (zh) * | 2020-02-24 | 2021-06-25 | 北京工业大学 | 一种面向收敛型图应用的GraphX数据缓存方法 |
US11537579B2 (en) | 2020-03-12 | 2022-12-27 | Oracle International Corporation | Fast in-memory technique to build a reverse CSR graph index in an RDBMS |
EP4162369A1 (en) * | 2020-06-09 | 2023-04-12 | LiveRamp, Inc. | Graph data structure edge profiling in mapreduce computational framework |
US11500868B2 (en) | 2021-01-29 | 2022-11-15 | Oracle International Corporation | Efficient identification of vertices and edges for graph indexes in an RDBMS |
CN113656411B (zh) * | 2021-08-20 | 2022-08-05 | 北京中经惠众科技有限公司 | 用于图数据入库的方法及其装置 |
US11921785B2 (en) | 2022-01-25 | 2024-03-05 | Oracle International Corporation | Inline graph algorithm execution with a relational SQL engine |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816825B1 (en) * | 1999-06-18 | 2004-11-09 | Nec Corporation | Simulation vector generation from HDL descriptions for observability-enhanced statement coverage |
CN102279738A (zh) * | 2010-06-10 | 2011-12-14 | 微软公司 | 标识强连通分量的入口和出口的技术 |
CN102754103A (zh) * | 2010-02-16 | 2012-10-24 | 西门子产品生命周期管理软件公司 | 用于边界表示的面和边连通性的压缩的方法和系统 |
CN102999558A (zh) * | 2011-10-24 | 2013-03-27 | 斯凯普公司 | 使用数据结构处理搜索查询 |
US20140137130A1 (en) * | 2012-11-13 | 2014-05-15 | International Business Machines Corporation | Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system |
US8793283B1 (en) * | 2011-04-20 | 2014-07-29 | Google Inc. | Label propagation in a distributed system |
CN105096297A (zh) * | 2014-05-05 | 2015-11-25 | 中兴通讯股份有限公司 | 一种图数据分割的方法及装置 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276783A (en) * | 1989-11-21 | 1994-01-04 | International Business Machines Corporation | Tessellating complex polygons in modeling coordinates |
US6628281B1 (en) * | 2000-02-24 | 2003-09-30 | International Business Machines Corporation | Method and system for computing the intersection of a bounding volume and screen-aligned plane |
GB0406619D0 (en) * | 2004-03-24 | 2004-04-28 | British Telecomm | Induction of grammar rules |
CA2581219A1 (en) * | 2004-10-01 | 2006-04-13 | Turbo Data Laboratories Inc. | Arrangement generation method and arrangement generation program |
US7450121B2 (en) * | 2004-10-19 | 2008-11-11 | Canon Kabushiki Kaisha | Dynamic bit depth rendering |
US8316060B1 (en) * | 2005-01-26 | 2012-11-20 | 21st Century Technologies | Segment matching search system and method |
JP2008052494A (ja) * | 2006-08-24 | 2008-03-06 | Sony Corp | ネットワーク分析支援装置および方法、プログラム並びに記録媒体 |
JP2008052524A (ja) * | 2006-08-25 | 2008-03-06 | Sony Corp | ネットワーク分析支援装置および方法、プログラム並びに記録媒体 |
US8095507B2 (en) * | 2008-08-08 | 2012-01-10 | Oracle International Corporation | Automated topology-based statistics monitoring and performance analysis |
US8462161B1 (en) * | 2009-01-20 | 2013-06-11 | Kount Inc. | System and method for fast component enumeration in graphs with implicit edges |
US8689172B2 (en) * | 2009-03-24 | 2014-04-01 | International Business Machines Corporation | Mining sequential patterns in weighted directed graphs |
US8819206B2 (en) * | 2010-10-05 | 2014-08-26 | Infinera Corporation | Graph based flexible service discovery and management system and method |
US8736612B1 (en) * | 2011-07-12 | 2014-05-27 | Relationship Science LLC | Altering weights of edges in a social graph |
US9159077B2 (en) * | 2011-09-08 | 2015-10-13 | Alcatel Lucent | Method and apparatus for deriving composite tie metric for edge between nodes of a telecommunication call graph |
US20130117261A1 (en) * | 2011-11-09 | 2013-05-09 | Yahoo! Inc. | Context Sensitive Transient Connections |
US8660975B2 (en) * | 2011-12-07 | 2014-02-25 | Yahoo! Inc. | System and method of matching content items and consumers |
US8935261B2 (en) * | 2011-12-28 | 2015-01-13 | Facebook, Inc. | Social discovery and ranking of pages |
WO2013097026A1 (en) * | 2011-12-28 | 2013-07-04 | Chrapko Evan V | Systems and methods for visualizing social graphs |
WO2013116308A1 (en) * | 2012-01-31 | 2013-08-08 | Kent State University | Systems, methods, and software for unified analytics environments |
US8938599B2 (en) * | 2012-03-15 | 2015-01-20 | Hewlett-Packard Development Company, L. P. | Distributed graph storage system |
WO2013145001A1 (ja) * | 2012-03-28 | 2013-10-03 | 株式会社日立製作所 | 情報処理システムおよびグラフ処理方法 |
CN104205095B (zh) * | 2012-04-05 | 2017-11-17 | 微软技术许可有限责任公司 | 用于连续图更新和计算的平台 |
US9355367B2 (en) * | 2013-03-07 | 2016-05-31 | International Business Machines Corporation | System and method for using graph transduction techniques to make relational classifications on a single connected network |
US10318583B2 (en) * | 2013-03-15 | 2019-06-11 | The Board Of Trustees Of The Leland Stanford Junior University | Systems and methods for recommending relationships within a graph database |
US9348947B2 (en) * | 2013-07-26 | 2016-05-24 | Helynx, Inc. | Systems and methods for visualizing and manipulating graph databases |
US9576071B2 (en) * | 2013-09-12 | 2017-02-21 | Dropbox, Inc. | Graph-based data models for partitioned data |
US9400767B2 (en) * | 2013-12-17 | 2016-07-26 | International Business Machines Corporation | Subgraph-based distributed graph processing |
US20150186427A1 (en) * | 2013-12-26 | 2015-07-02 | Telefonica Digital Espana, S.L.U. | Method and system of analyzing dynamic graphs |
JP6154491B2 (ja) * | 2014-02-03 | 2017-06-28 | 株式会社日立製作所 | 計算機及びグラフデータ生成方法 |
US9984109B2 (en) * | 2014-03-19 | 2018-05-29 | International Business Machines Corporation | Evolution aware clustering of streaming graphs |
US9875561B2 (en) * | 2014-05-20 | 2018-01-23 | Jeffrey C. Mohr | Method and system for dynamically creating and exploring graph structures |
US9767217B1 (en) * | 2014-05-28 | 2017-09-19 | Google Inc. | Streaming graph computations in a distributed processing system |
US9443034B2 (en) * | 2014-05-29 | 2016-09-13 | Microsoft Technology Licensing, Llc | Estimating influence using sketches |
US9444846B2 (en) * | 2014-06-19 | 2016-09-13 | Xerox Corporation | Methods and apparatuses for trust computation |
US10120956B2 (en) * | 2014-08-29 | 2018-11-06 | GraphSQL, Inc. | Methods and systems for distributed computation of graph data |
US9734607B2 (en) * | 2014-09-10 | 2017-08-15 | Oracle International Corporation | Graph processing using a mutable multilevel graph representation |
-
2015
- 2015-08-28 US US14/839,484 patent/US10120956B2/en active Active
- 2015-08-31 CN CN201510548289.5A patent/CN105389324B/zh active Active
-
2016
- 2016-08-03 HK HK16109238.5A patent/HK1221293A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816825B1 (en) * | 1999-06-18 | 2004-11-09 | Nec Corporation | Simulation vector generation from HDL descriptions for observability-enhanced statement coverage |
CN102754103A (zh) * | 2010-02-16 | 2012-10-24 | 西门子产品生命周期管理软件公司 | 用于边界表示的面和边连通性的压缩的方法和系统 |
CN102279738A (zh) * | 2010-06-10 | 2011-12-14 | 微软公司 | 标识强连通分量的入口和出口的技术 |
US8793283B1 (en) * | 2011-04-20 | 2014-07-29 | Google Inc. | Label propagation in a distributed system |
CN102999558A (zh) * | 2011-10-24 | 2013-03-27 | 斯凯普公司 | 使用数据结构处理搜索查询 |
US20140137130A1 (en) * | 2012-11-13 | 2014-05-15 | International Business Machines Corporation | Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system |
CN105096297A (zh) * | 2014-05-05 | 2015-11-25 | 中兴通讯股份有限公司 | 一种图数据分割的方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250563A (zh) * | 2016-08-30 | 2016-12-21 | 江苏名通信息科技有限公司 | 基于GPS平台的k‑bisimulation计算算法 |
CN109344295A (zh) * | 2018-08-24 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 分布式图嵌入方法、装置、设备及系统 |
CN109344295B (zh) * | 2018-08-24 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 分布式图嵌入方法、装置、设备及系统 |
US11074295B2 (en) | 2018-08-24 | 2021-07-27 | Advanced New Technologies Co., Ltd. | Distributed graph embedding method and apparatus, device, and system |
Also Published As
Publication number | Publication date |
---|---|
HK1221293A1 (zh) | 2017-05-26 |
US20160063132A1 (en) | 2016-03-03 |
CN105389324B (zh) | 2019-08-27 |
US10120956B2 (en) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389324A (zh) | 用于图形数据的分布式计算的系统和方法 | |
US10432639B1 (en) | Security management for graph analytics | |
US8943011B2 (en) | Methods and systems for using map-reduce for large-scale analysis of graph-based data | |
US8224825B2 (en) | Graph-processing techniques for a MapReduce engine | |
Brookshear et al. | Computer science: an overview | |
Bollig et al. | libalf: The automata learning framework | |
US10068033B2 (en) | Graph data query method and apparatus | |
CN106649391B (zh) | 处理图数据的方法和装置 | |
CN110597935A (zh) | 一种空间分析方法和装置 | |
CN105900121A (zh) | 用于生成活动流的方法 | |
CN105281892A (zh) | 现场可编程门阵列码的微扰以防止边信道攻击 | |
Gui et al. | IFC-based partial data model retrieval for distributed collaborative design | |
CN103235811A (zh) | 一种数据存储方法及装置 | |
Mathur et al. | Interactive programming for parametric cad | |
Camata et al. | Parallel implementation and performance analysis of a linear octree finite element mesh generation scheme | |
Bienkowski | Migrating and replicating data in networks | |
WO2017106293A2 (en) | Dynamic design of complex system-of-systems for planning and adaptation to unplanned scenarios | |
CN107257356B (zh) | 一种基于超图分割的社交用户数据优化放置方法 | |
Busch et al. | Sparse covers for planar graphs and graphs that exclude a fixed minor | |
US20190026410A1 (en) | Strategic improvisation design for adaptive resilience | |
US20150150011A1 (en) | Self-splitting of workload in parallel computation | |
Kumar et al. | DPISCAN: Distributed and parallel architecture with indexing for structural clustering of massive dynamic graphs | |
Chiu et al. | Automatic complexity reduction in reinforcement learning | |
CN111737347B (zh) | 在Spark平台顺序切分数据的方法及装置 | |
CN110059880B (zh) | 一种服务发现方法及装置 |
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: 1221293 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: California, USA Patentee after: Hutu Limited Address before: California, USA Patentee before: SQL Chart Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |