CN112074829A - 图形计算的并行化 - Google Patents
图形计算的并行化 Download PDFInfo
- Publication number
- CN112074829A CN112074829A CN201880092086.1A CN201880092086A CN112074829A CN 112074829 A CN112074829 A CN 112074829A CN 201880092086 A CN201880092086 A CN 201880092086A CN 112074829 A CN112074829 A CN 112074829A
- Authority
- CN
- China
- Prior art keywords
- aap
- machines
- grape
- work
- working
- 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.)
- Pending
Links
Images
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
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/314—Parallel programming languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Multi Processors (AREA)
- General Factory Administration (AREA)
Abstract
一种用于异步并行化图形计算的方法,该方法包括:在多个工作机上分发多个片段,以使每个工作机具有至少一个本地片段,所述多个片段是通过对一图形进行分割而获得,每个片段是该图形的一子图;通过每个工作机使用预定义的顺序批处理算法计算其至少一个本地片段的每个片段上部分结果;由每个工作机基于一个或更多个更新消息使用预定义的顺序增量算法迭代地计算其至少一个本地片段中每个片段的更新的部分结果,直到满足终止条件为止,其中从一个或更多个其它工作机分别接收一个或更多个更新消息,并将所述一个或更多个更新消息分别存储在各自的缓冲区中;其中允许每个工作机根据其延迟延展来决定何时执行下一轮计算,并且其中所述工作机在执行下一轮计算之前,暂停由所述延迟延展指示的时间,所述延迟延展可以根据每个工作机相对于其他工作机的相对计算进度进行动态调整。一些实施例可以具有减少落后者和延时计算的效果。
Description
技术领域
以下公开内容涉及图形计算的并行化。
背景技术
用于图形计算已有几个并行模型。图形系统已采用批量同步并行(BSP)模型。在BSP下,迭代计算被分为多个超步(superstep),而来自一个超步的消息只能在下一个超步中访问。这导致了落后者(straggler),即,一些工作机(worker)比其他工作机花费更长的时间。随着多个工作机的不对称收敛,每个超步的速度都被限制在最慢的工作机的速度。为了减少落后者,采用了异步并行(AP)模型。在AP下,工作机可以立即访问消息。快速的工作机可以走在前面,而不必等待落后者。但是,AP可能会导致过多的延迟计算,例如由消息触发的进程,这些消息由于最新消息而很快变得过时。为了纠正这些问题,已经研究了BSP和AP的修订版,特别是延迟同步并行(SSP)模型。SSP通过允许最快的工作机以固定的步数(有界延迟,bounded staleness)超过最慢的工作机,来缓解BSP。它减少了落后者,但导致了多余的延迟计算。
发明内容
在一个方面,提供了一种用于异步并行化图形计算的方法。该方法包括:在多个工作机上分发多个片段,以使每个工作机具有至少一个本地片段,所述多个片段是通过对一图形进行分割而获得,每个片段是该图形的一子图;通过每个工作机使用预定义的顺序批处理算法计算其至少一个本地片段的每个片段上部分结果;
由每个工作机基于一个或更多个更新消息使用预定义的顺序增量算法迭代地计算其至少一个本地片段中每个片段的更新的部分结果,直到满足终止条件为止,其中从一个或更多个其它工作机分别接收一个或更多个更新消息,并将所述一个或更多个更新消息分别存储在各自的缓冲区中;
允许每个工作机根据其延迟延展来决定何时执行下一轮计算,并且其中所述工作机在执行下一轮计算之前,暂停由所述延迟延展指示的时间,所述延迟延展可以根据每个工作机相对于其他工作机的相对计算进度进行动态调整。
也可以包括以下一项或多项功能。
通过来自以下组的一个或更多个参数来调整每个工作机的延迟延展:存储在相应缓冲器中的更新消息的数量,从其中接收一个或更多个更新消息的一个或更多个其他工作机的数量,在所有工作机上执行最小和最大的轮次、运行时间预测、查询日志以及从所有工作机收集的其他统计信息。当工作机在延迟延展期间暂停时,将其资源分配给一个或更多个其他工作机。
当每个工作机在其当前轮次计算之后没有存储在相应缓冲器中的更新消息时,该工作机向主机发送非活动的标志;当从所有工作机接收到非活动时,所述主机向所有工作机广播终止消息;响应于所述终止消息,当每个工作机处于非活动状态时,其以“确认”做出响应,或者当其处于活动状态或在队列中以进行下一轮计算时,以“等待”做出响应;在从所有工作机接收到“确认”之后,所述主机从所有工作机拉出所述更新的部分结果,并且将预定义的集合函数应用于所述更新的部分结果。
所述预定义的顺序增量算法是单调的。
所述更新消息基于各自的部分结果,并且由预定义的更新参数来定义。
在另一方面,提供了一种系统,该系统被配置为执行用于异步并行化图形计算的方法。
某些实施方式可以提供以下一项或多项优点。可以通过动态调整工作机的相对进度来减少落后者和延迟计算。在单调条件下,也可以保证正确的收敛。根据以下详细描述、附图和权利要求,其他方面、特征和优点将变得显而易见。
附图说明
将参考以下附图描述实施例,其中:
图1(a)描绘了在不同的模型下运行用于计算如图1(b)所示的连通分量(CC)示例。
图1(b)描绘了CC示例。
图2示出了在AAP下CC的PEval。
图3示出了AAP下CC的IncEval。
图4示出了AAP的工作流程。
图5示出了GRAPE+的架构。
图6示出了性能评估的结果
具体实施方式
在本申请中描述的用于异步并行化图形计算的方案称为自适应异步并行(AAP)模型。AAP是一种并行模型,它继承了BSP和AP的优点,并减少了落后者和延迟计算,而无需在两者之间进行显式切换。更好的是,AAP模型可以确保一致性,并在一般条件下保证正确的收敛。
对于不同的算法,输入图形和聚类比例,AP和BSP的任何一个都不比另一个好。对于许多图形算法,单个执行中的不同阶段需要不同的模型以实现最佳性能。但是,在AP和BSP之间进行切换需要预测切换点并招致切换成本。
由于没有全局同步障碍,AAP本质上是异步的。与BSP和AP相反,AAP下的每个工作机都维护参数以测量(a)相对于其他工作机的进度,以及(b)消息累积的变化(延迟)。每个工作机都可以立即访问传入的消息,并根据自己的参数决定是否开始下一轮计算。与SSP相比,每个工作机都根据其相对进度和消息的延迟动态调整其参数,而不是使用固定范围。这些工作机可以是分布式处理器,也可以是单台计算机上的处理器,也可以是处理器上的线程。
图1(a)比较了在不同并行模型下的运行以计算图1(b)所示连通分量。
考虑在三个工作机执行的计算任务,其中工作机P1和P2占用3个时间单位进行一轮计算,P3占用6个单位,并且用1个单位传递消息。这是在不同的模型下执行的。
(1)BSP,如图1(a)(1)所示,工作机P3花费的时间是P1和P2的两倍,并且是落后者。由于其全局同步,每个超步占用6个时间单位,即最慢的P3的速度。
(2)AP,AP允许工作机在其消息缓冲区不为空时开始下一轮。但是,它带有冗余的延迟计算。如图1(a)(2)所示,在时钟时间7,P3第二轮只能使用来自第一轮P1和P2的消息。当P1和P2的最新更新到达时,P3的这轮在时间8变得延迟。如稍后将看到的,更快的P1和P2的大部分计算也是多余的。
(3)SSP,考虑1的有界延迟,即最快的工作机最多可以比最慢的工作机多1轮。如图1(a)(3)所示,在前3轮中P1和P2没有被落后者阻挡。但是,像AP一样,P3的第二轮也是延迟的。此外,由于有界延迟的条件,P1和P2直到P3分别完成其第2轮和第3轮时才能开始其第4轮和第5轮。结果,在时钟时间14之后,P1、P2和P3的行为类似于BSP模型。
(4)AAP,AAP允许工作机积累更改并根据其他工作机的进度决定何时开始下一轮。如图1(a)(4)所示,在P3在时钟时间6完成一轮计算之后,它可以在时间8开始下一轮计算,这时可获得P1和P2的最新变化。与AP相反,AAP减少了冗余的延迟计算。这也有助于我们减轻落后者的问题,因为P3可以利用快速工作机的最新更新以较少的轮次收敛。
AAP通过不阻挡快速工作机来减少落后者。当计算占用大量CPU资源并产生偏斜时,由于更新导致均匀分割的图形偏斜时,或者由于分割成本而使我们无法承受均匀分割大图时,这特别有用。此外,AAP仅在接收到足够的最新消息后才激活工作机,从而减少了冗余延迟计算。这使我们可以通过工作量调整将资源重新分配给有用的计算。
此外,AAP在以下方面与以前的模型有所不同。
(1)模型切换。BSP、AP和SSP是具有固定参数的AAP的特例。因此,AAP可以自然地在同一执行的不同阶段在这些模型之间切换,而无需明确的切换点或招致切换成本。稍后将看到,AAP更加灵活:一些工作机组可以遵循BSP,而其他工作机则可以运行AP或SSP。
(2)编程范例。AAP可以与GRAPE(图形编程环境)的编程模型一起使用。它允许用户使用消息声明扩展现有的顺序(单机)图形算法,并在整个机器集群中并行化算法。它采用聚合函数来解决由不同工作机进行的更新引起的冲突,而无需担心竞争条件或需要付出额外的努力来通过使用例如锁来增强一致性。
(3)收敛性保证。AAP被建模为同步定点计算。以此为基础,开发了第一种条件之一,在这种条件下,顺序算法的AAP并行化可确保(a)在正确答案处收敛,和(b)Church-Rosser属性,即所有异步运行都以相同结果收敛,只要顺序算法是正确的。
(4)表达力。尽管它很简单,但是AAP可以最优地模拟MapReduce,PRAM(并行随机存取机)、BSP、AP和SSP。也就是说,为这些模型开发的算法可以迁移到AAP,而不会增加复杂性。
(5)性能。在各种图形计算中,AAP的性能均优于BSP、AP和SSP。例如,对于Friendster上有192个工作机的PageRank和SSSP(单源最短路径),表1示出了(a)Giraph(Pregel的开源版本)和GraphLab在BSP下的性能,(b)AP下的GraphLab和Maiter,(c)BAP下的GiraphUC,(d)Hsync下的PowerSwitch,以及(e)GRAPE+,GRAPE+是GRAPE通过支持AAP的扩展。GRAPE+比这些系统做得更好。
表1:并行系统上的页面等级(PageRank)和SSSP
并行随机存取机(PRAM)支持使用共享内存进行并行RAM访问,不适用于当今使用的无共享架构。MapReduce被GraphX等采用。但是,由于它的阻塞和I/O成本,它对于迭代图形计算不是很有效率。在某些情况下,带有顶点-中心编程的BSP对于图形更有效。但是,它受限于落后者。如前所述,AP减少了落后者,但它附带了冗余的延迟计算。它还具有竞争条件及其锁定/解锁成本,并使收敛分析和编程变得复杂。
SSP促进了机器学习的有界延迟。Maiter通过累积更新来减少落后者,并支持优先的异步执行。BAP模型(无屏障异步并行)通过使用轻量级本地屏障来减少全局屏障和局部消息。Hsync建议在AP和BSP之间切换。
在这些模型下有几种图形系统,例如BSP下的Pregel,GPS,Giraph++,GRAPE;GraphLab,Maiter,AP下的GRACE(修订版);SSP下的参数服务器;BAP下的GiraphUC;和Hsync下的PowerSwitch。其中大多数都是以顶点中心的。Giraph++和Blogel处理块时,它们通过将块视为顶点来继承顶点-中心的编程。GRAPE整体上将顺序图算法并行化。
AAP在以下方面与以前的模型有所不同。
(1)AAP减少了(a)通过异步消息传递而传递的BSP的落后者,以及(b)通过施加界限(延迟延展delay stretch)来使AP冗余延迟计算,以便工作机等待并累积更新。
(2)(a)AAP通过对累积的消息强制执行“下限”来减少冗余延迟计算,如果需要,它也可以用作“上限”以支持有界延迟。当落后者被迫等待而不是按照SSP的建议追赶时,可以提高性能。(b)AAP动态调整边界,而不使用预定义的固定值。(c)SSSP、CC和PageRank不需要有界延迟。
(3)与Maiter类似,AAP汇总累积的更改。与Maiter相反,它通过以下方式减少了冗余计算:(a)在工作机上施加延迟延展,以调整其相对进度,(b)动态调整边界以优化性能,以及(c)将增量评估与累积计算相结合。AAP处理图形碎片,而Maiter是顶点-中心方式。
(4)BAP和AAP都减少了不必要的消息。但是,AAP通过对碎片(块)进行操作来实现此目的,此外,还可以通过调整工作机的相对进度来优化性能。
(5)与Hsync相对,AAP不需要完全从一种模式切换到另一种模式。相反,每个工作机可以根据其相对进度决定自己的“模式”。快速的工作机可以在一小组内遵循BSP,而其他工作机可以采用AP。此外,参数是动态调整的,因此AAP不必预测切换点并付出切换成本。
AAP可以采用GRAPE的编程模型。与GRAPE一样,AAP能够并行化顺序图形算法。也就是说,异步模型不会使编程比GRAPE难。
AAP支持数据分割的并行性。它适用于将图形分割成较小片段。
给定自然数m,策略P将G分割为片段F=(F1,…,Fm),使得每个Fi=(Vi,Ei,Li)是G的子图,V=∪i∈[1,m]Vi和E=∪i∈[1,m]Ei。在此,如果Fi称为G的子图,且对于每个节点v∈Vi(分别的,边缘e∈Ei),Li(v)=L(v)(分别的,Li(e)=L(e))。请注意,Fi本身就是图,但不一定是G产生的子图。
AAP允许用户选择边缘切割或顶点切割策略P来分割图形G。当P被边缘切割时,来自Fi至Fj的切割边缘在Fi和Fj中都有一个副本。表示为
(a)Fi.I(分别的,Fi.O′)节点集合v∈Vi,使得存在一个边缘(v′,v)(分别的,(v,v′))在Fj(i≠j)具有节点v′;和
(b)Fi.O(分别的,Fi.I′)在某个Fj(i≠j)中的节点v′的集合,使得存在具有v∈Vi的边缘(v,v′)(分别的,(v′,v))。
Fi.I∪Fi.O′中的节点被称为Fiw.r.t.P.的边界节点。对于顶点切割,边界节点是指具有不同片段副本的边界节点。通常,如果v具有跨两个片段的相邻边缘或另一个片段中的副本,则节点v为边界节点。
使用熟悉的术语,我们将图形计算问题称为图形Q级查询,并将问题的实例称为Q查询。要在AAP下回答查询Q∈Q,只需指定三个函数即可。
(1)PEval:针对Q的顺序算法,给定查询Q∈Q和图G,计算出答案Q(G)。
(3)集合(Assemble):一个函数,该函数收集通过PEval和IncEval在每个工作机本地计算的部分答案,并将部分结果收集为完整的答案Q(G)。
这三个功能合在一起称为Q(PEval,IncEval和Assemble)的PIE程序。PEval和IncEval可以是Q的现有顺序算法(增量算法),用于对通过策略P分割的G的片段Fi进行操作。
此外,PEval声明以下内容。
(a)更新参数。PEval声明片段Fi中集合Ci的状态变量以存储Fi的内容或部分计算结果。Ci是节点集及Fi.I∪Fi.O′中对于整数d的在节点的d跳内的边缘。当d=0时,Ci为Fi.I∪Fi.O′。我们用表示Fi的更新参数集,该参数集由与Ci中的节点和边缘相关联的状态变量组成。中的变量为要通过增量步骤IncEval更新的候选项。
(b)聚合函数。PEval还指定一个聚合函数faggr(例如min和max)来解决当多个工作机尝试为同一更新参数分配不同值时的冲突。这些在PEval中指定,并由IncEval共享。
第一个示例:图形连通性
考虑图形连通性(CC)。给定无向图G=(V,E,L),如果(a)Gs是联通的,即,对于Gs中的任意两个节点v和v′,在v和v′之间的存在一路径,并且(b)Gs是最大的,即,将G的任何节点添加到Gs都会使子图不连通,则G的子图Gs是G的连通分量。
对于每个G,CC都有一个单独查询Q,以计算G的所有连通分量,用Q(G)表示。CC处于O(|G|)时间。
AAP用相同的GRAPE的PEval和IncEval并行化CC。更具体地,如下给出PIE程序ρ。
(1)如图2所示,在每个片段Fi上,PEval使用顺序CC算法(深度优先搜索,DFS)计算本地连通的分量并创建其id,不同之处在于它声明以下内容:(a)对于每个节点v∈Vi,一个整型变量v.cid,初始是v.id;(b)Fi.O作为候选集Ci,和作为更新参数;(c)min作为聚合函数faggr:如果同一v.cid有多个值,则最小值按整数的线性顺序获取。
对于每个本地连接的分量C,(a)PEval创建一个“根”节点vc,其中携带C中的最小节点id作为vc.cid,并且(b)将C中的所有节点连接到vc,并将其cid设置为vc.cid。这些可以通过DFS在片段Fi中的边缘的一次遍历中完成。
(2)给定一更改的边界节点cid的Mi集,IncEval通过在可能的情况下“合并”分量来增量更新Fi中的本地分量。如图3所示,通过将min用作faggr,它(a)将每个边界节点的cid更新为最小值;(b)将更改传递到其根vc并连接到vc的全部节点。
(3)将每个节点的cid首次更新集合为其连接的根cid。然后,它将所有具有相同cid的节点合并到单个桶中,并将所有桶作为连通分量返回。
我们在下面就编程示例进行讨论。
(1)有一些增量图形算法的方法,可以从它们的批处理副本中获取增量算法。此外,不难通过响应于更新参数的变化而修改批处理算法来开发IncEval,如CC(请参见下面的第三个示例3)和PageRank(请参见下面)的情况所示。
(2)除非另有说明,否则继续采用边缘切割;但AAP可与其他分割策略配合使用。实际上,不管使用哪种分割策略,在AAP下异步运行的正确性在此处给出的条件下都保持不变。但是,不同的策略可能会产生具有不同程度的偏斜和落后者,这会对AAP的性能产生影响。
(3)编程模型旨在便于用户开发并行程序,特别是对于那些更熟悉常规顺序编程的用户。也就是说,使用GRAPE编程仍然需要算法设计领域的知识,声明更新参数和设计集合函数。
接下来,我们介绍AAP模型。
设置。例如,采用GRAPE的编程模型来应答在图形G上的查询Q类,AAP将接收PIE程序ρ(即PEval,IncEval,Assemble)和分割策略P作为Q的输入。使用P将G分割为片段(F1,…,Fm),使得每个片段Fi驻留在针对i∈[1,m]的虚拟工作机Pi上。它与主机P0和n个无共享物理工作机(P1,…,Pn)配合工作,其中n<m,即,多个虚拟工作机映射到同一物理工作机并共享内存。对于G上的所有查询Q∈Q,图形G被分割一次。
PEval和IncEval可以分别是(现有的)Q的顺序批处理和增量算法,除了PEval另外声明更新参数并定义聚合函数faggr。在每个工作机Pi处,(a)PEval计算本地片段Fi上的Q(Fi),(b)IncEval将Fi和更新Mi为作为输入,并计算至(Fi)的更新ΔOi,以便PEval或IncEval的每次调用被称为工作机Pi的一轮计算。
消息传递。在工作机Pi进行了每轮计算之后,Pi收集集合中具有更改后的值的更新参数。对于j∈[1,m]和j≠i,它将分组为M(i,j),其中对于v∈Cj,M(i,j)包含即v也驻留在片段Fj中。即,M(i,j)包括对Fj的更新参数的改变它将M(i,j)作为消息发送给工作机Pj。消息M(i,j)也可以称为指定消息。
更具体地说,每个工作机Pi维护以下内容:
(1)给定边界节点v的索引Ii,检索j∈[1,m]的集合,使v∈Fj.I′∪Fj.O和i≠j,即v所在的位置;它是从策略P推导的;和
与GRAPE相反,AAP本质上是异步的。(1)AAP采用(a)点对点通信:工作机Pi可以直接向工作机Pj发送消息M(i,j),以及(b)基于推送的消息传递:一旦M(i,j)可用时。Pi立即将M(i,j)发动给工作机Pj,而与其他工作机的进度无关。工作机Pj可以随时接收消息M(i,j),并将其保存在其缓冲区中,而不会受到超步的阻塞。(2)在AAP中,主机P0仅负责作出终止决定,并由Assemble负责集合部分答案。(3)工作机交换状态以调整相对进度。
参数。为了减少落后者和冗余的延时计算,每个(虚拟)工作机Pi都保持延迟延展DSi,以便将Pi搁置DSi的时间以累积更新。延展DSi通过函数δ并基于以下内容动态地调整:
(2)边界rmin和rmax,分别在所有工作机上执行的最小和最大轮次。每个Pi跟踪其当前轮次ri。这些都是为了控制工作机的相对速度。
例如,为了模拟SSP[14],当ri=rmax且ri-rmin>c时,我们可以设置DSi=+∞,以防止Pi向前移动太远。
用于DSi的调整函数δ马上将在后面讨论。
并行模型。给定一查询Q∈Q和一分割图G,AAP向所有工作机发布相同的查询Q。如图4所示,它分三个阶段计算Q(G),如下所述。
(1)部分评估。收到Q后,PEval在每个工作机Pi并行计算部分结果Q(Fi)。此后,PEval生成消息M(i,j)并将其发送给工作机Pj,其中j∈[1,m],j≠i。
更具体地说,M(i,j)由三元组(x,val,r)组成,其中与Ci∩Cj中的节点v相关,并且Cj由索引Ii推导;val是x的值,r表示计算val时的舍入。工作机Pi随时接收来自其他工作机的消息,并将消息存储在其缓冲区中
(2)增量评估。在此阶段,IncEval进行迭代,直到满足终止条件为止。为了减少冗余计算,AAP会调整(a)工作机的相对进度和(b)工作分配。更具体地说,IncEval的工作原理如下。
(1)如果(a)为非空,且(b)Pi已被暂停DSi时间,则在工作机Pi处触发IncEval以开始下一轮。直观地,仅当对了施加改变(例如)时才调用IncEval,并且仅当Pi积累了足够的消息时才调用IncEval。
(2)当在Pi上触发IncEval时,它将执行以下操作:
当IncEval在Pi处完成其当前轮次时或在Pi收到新消息时,将调整DSi。如果满足以上(1)中的条件(a)和(b),则触发下一轮IncEval。否则,将Pi暂停DSi时间,并将其资源分配给其他(虚拟)工作机Pj进行有用的计算,最好分配给与Pi分配给同一物理工作机的Pj以最大程度地减少数据传输的开销。当Pi的暂停超过DSi时,Pi再次被激活以开始下一轮的IncEval。
(3)终止。当IncEval完成其当前的计算轮次时,如果Pi向主机P0发送一非活动的标志,然后变为非活动。在收到所有工作机的非活动标志后,P0向所有工作机广播一条消息终止。如果每个Pi处于非活动状态,则可能以确认响应,或者如果它处于活动状态或处于执行队列中则等待。如果工作机之一答复等待,则进行迭代增量步骤(上述阶段(2))。
收到所有工作机的确认后,P0会从所有工作机中提取部分结果,并将Assemble应用于部分结果。该结果称为ρ在P下的并行化结果,表示为ρ(Q,G)。AAP返回ρ(Q,G)并终止。
第二个示例
从第一个示例中调用CC的PIE程序ρ。它在AAP下分三个阶段工作,如下所示:
(1)PEval通过使用DFS在每个片段Fi上计算连通分量及其cid。在该过程结束时,边界节点的cid被分组为消息并发送给相邻的工作机。更具体地,对于j∈[1,m],{v.cid∨v∈Fi.O∩Fj.I}作为消息M(i,j)发送给工作机Pj并存储在缓冲区中
(2)如上所述,当IncEval在工作机Pi处被触发,其首先通过将min应用于中更改的cid来计算更新Mi。然后,它从Mi开始增量更新Fi中的本地分量。在此过程结束时,更改后的id作为消息发送给附近的工作机,就像PEval一样。该过程将反复进行,直到无法再进行任何更改为止。
(3)此时在主机处调用Assemble。如第一个示例中所述,它计算并返回连通分量。
该示例表明AAP与GRAPE的编程模型很好地兼容,即AAP不会使编程更难。
AAP能够动态调整每个工作机Pi的延迟概要DSi;例如,函数δ可以定义
其中函数δ的参数描述如下。
(1)判断S(ri,rmin,rmax)决定是否应立即中止Pi。例如,在SSP下,如果ri=rmax和rmax-rmin∨c,它被定义为false。当不需要有限的延迟时,S(ri,rmin,rmax)始终为真。
(2)变量Li“预测”应累积多少消息,以在延时计算量减少与IncEval的下一轮在Pi处预期的有用结果之间取得平衡。AAP以如下方式调整Li:用户可以选择用统一的界限L⊥初始化Li,以便尽早开始减少延时的计算。AAP基于(a)下一轮的预计运行时间ti和(b)消息的预计到达率si,在Pi上每一轮调整Li。当si高于平均速率时,Li变为max(ηi,L⊥)+Δti*si,,其中Δti是ti的一部分,并且L⊥通过“快”的工作机的数量进行调整。可以通过连续轮次的IncEval的聚合统计数据来近似估计ti和si。通过使用随机森林模型,以查询日志作为训练样本,可以获得更精确的估计。
BSP、AP和SSP是AAP的特例。实际上,可以通过AAP通过如下指定函数δ来执行这些操作。
BSP:如果ri>rmin,即Pi被挂起,函数δ设置DSi=+∞;否则,DSi=0,即,Pi立即进行。因此,所有工作机都是同步的,没有工作机能超过其他工作机。
AP:函数δ总是设置DSi=0,即,一旦工作机Pi的缓冲区为非空,它将触发下一轮计算。
SSP:与SSP中一样,对于固定边界c如果ri>rmin+c,则函数δ设置DSi=+∞,否则设置DSi=0。也就是说,最快的工作机最多可以向前运行c轮。
此外,AAP可以通过使用函数δ来模拟Hsync实现Hsync的相同切换规则。
第三个示例:
请参考图1(a)和(b),从第一示例调用CC的PIE程序ρ,并在第二示例中示出。考虑图形G,它被分割为片段F1,F2和F3,并分别分布在工作机P1,P2和P3上。如图1(b)所示,(a)每个圆圈表示一个连通分量,并用其cid进行注释,并且(b)虚线指示在分片之间。可以看到,图形G具有单个连通分量,其顶点id最小为0。假设工作机P1,P2和P3分别采用3、3和6个时间单位。
可以通过参考图1(a)验证以下内容。
(a)在BSP中,图1(a)(1)描绘了ρ运行的一部分,它需要5轮才能使最小cid 0到达分量7。
(b)在AP下,运行如图1(a)(2)所示。注意,在获得cid 0之前,工作机P1和P2调用3轮IncEval并在分量1-4之间交换cid 1,而在BSP下,一轮IncEval足以将cid 0从P3传递到这些分量。因此,更快的P1和P1的大部分计算都是延时的和多余的。
(c)在图1(a)(3)中给出了具有有界延迟为1的SSP下的情形。它与图1(a)(2)几乎相同,除了P1和P2无法在P3完成第2轮之前开始第4轮。更具体地说,当分量5和6中的最小cid分别设置为0和4所示,P1和P2必须等待P3才能将分量7的cid设置为5。这又导致不必要的延时计算。
(d)在AAP下,P3可以暂停IncEval,直到它收到足够的更改,如图1(a)(4)所示。例如,函数δ从L⊥=0开始。如果对于i∈[1,2],ηi∨≥1,则会设置DSi=0,因为预计没有消息会在下一个时间单位内到达。相反,如果η3∨≤4则设置DS3=1,因为除了累积的2条消息外,还期望在1个时间单位到达另外2条消息。因此,δ决定增加DS3。这些延迟延展是根据运行时间(分别为P1,P2和P3的3、3和6)和消息到达速率来估算的。通过这些延迟延展,P1和P2可能会在收到新消息后立即继续进行,但是P3仅在累积4条消息后才开始新的轮次。现在,P3仅需进行两轮IncEval即可将F3中的所有cid更新为0。与图1(a)(1)–(3)相比,落后者在更少的轮次中到达固定点。
可以发现AAP主要从三个方向减少了迭代图形计算的成本。
(1)AAP通过调整工作机的相对进度来减少多余的延时计算和落后者。特别是,(a)当落后者被迫积累消息时,一些计算得到了实质性的改进;如CC的第三个示例所示,这实际上使落后者可以在更少轮次收敛。(b)如果不同轮次在一个工作机上花费的时间相差不大(例如,PageRank),则快的工作机会在几轮后“自动”分组,并在组内实质上运行BSP,而慢速的工作机则在AP下运行。这表明AAP比Hsync更灵活。
(2)与GRAPE一样,AAP采用增量IncEval以最小化不必要的重新计算。当IncEval受限制、可本地化或相对受限制时,加速特别明显。例如,如果给定了Fi,Q,Q(Fi)和Mi,则IncEval受限制,在可以表示为Mi∨+ΔOi∨中的函数的成本中,它计算ΔOi使得变化的大小在输入和输出中;从直觉上讲,它将Fi(可能很大)上的计算成本降低到小的Mi∨+ΔOi∨的函数。例如,用于CC的IncEval(图3)是有界增量算法。
(3)观察到算法PEval和IncEval是在片段上执行的,而片段本身就是图形。因此,AAP继承了为顺序算法开发的所有优化策略。
收敛性和正确性
异步执行使收敛分析复杂化。尽管如此,仍存在一个条件,在此条件下,AAP保证收敛于正确结果。另外,AAP是通用的,因为并行模型MapReduce、PRAM、BSP、AP和SSP可以通过AAP进行最佳仿真。
给定用于图形查询的类Q的PIE程序ρ(即PEval,IncEval,Assemble)和分割策略P,我们想知道ρ的AAP并行化是否收敛于正确的结果。也就是说,对于所有查询Q∈Q和所有图形G,ρ在AAP下终止于通过P划分的G,其结果ρ(Q,G)=Q(G)。
我们将终止和正确性规范化如下。
定点。与GRAPE相似,AAP基于同时定点运算符φ(R1,…,Rm)并行化PIE程序ρ,该定点运算符以PEval的部分评估开始,并采用增量函数IncEval作为中间结果运算符:
如果对于所有i∈[1,m],(即,在任何工作机中均不对部分结果进行更多更改),计算将达到一固定点。此时,对(i∈[1,m])应用Assemble并计算ρ(Q,G)。如果是这样,我们说ρρ收敛于ρ(Q,G)。
与同步执行相反,当根据例如G的分割、集群和网络延迟,在多个工作机上以不同的顺序触发IncEval时,PIE程序ρ可以具有不同的异步运行。这些运行可能会得出不同的结果[37]。ρ的运行可以表示为所有工作机的PEval和IncEval的轨迹(例如,参见图1(a))。
如果对于所有查询Q∈Q和图形G,ρ的所有运行都收敛在一个固定点,则ρ终止于具有P的AAP下。如果所有异步运行都以相同的结果收敛,则ρ在AAP下具有Church-Rosser属性。如果ρ具有Church-Rosser属性,则AAP可以正确地并行化ρ,即它始终收敛于相同的ρ(Q,G)和ρ(Q,G)=Q(G)。
终止和正确性。现在我们确定一个单调条件,在该条件下,PIE程序可以保证在AAP下收敛于正确答案。我们从一些符号开始。
定义IncEval的以下属性。
例如,考虑用于CC的PIE程序ρ(第一个示例)。顺序≤是在每个片段中的连通分量(CC)集上定义的,这样,如果对于S2中的每个CCC2,则S1≤S2,在S1中存在一个CCC1,且cid1≤cid2,其中对于i∈[1,2],cidi是Ci的id。然后可以验证ρ的IncEval是同时收缩和单调的,因为faggr定义为min。
(2)我们要确定一个条件,只要AAP的顺序算法PEval、IncEval和Assemble正确,AAP就会正确地并行化PIE程序ρ,而与PEval和IncEval的触发顺序无关。我们使用以下内容。
如果对于所有查询Q∈Q和图形G,PEval(Q,G)返回Q(G),则PEval是正确的;(b)如果IncEval(Q,Q(G),G,M)返回其中M表示消息(更新),则IncEval是正确的;(c)如果在BSP下ρ在r0处收敛时, 则Assemble是正确的,如果PEval,IncEval和Assemble对于Q正确,则ρ对Q正确。
单调条件。可以确定ρ的三个条件。
(T1)更新参数的值来自有限域。
(T2)IncEval是收缩的。
(T3)IncEval是单调的。
尽管条件T1和T2与GRAPE的条件基本相同,但条件T3在其中找不到对应的条件。
在AAP下,GRAPE的终止条件保持不变。
定理1:在AAP下,如果ρ满足条件T1和T2,则PIE程序ρ保证以任何分割策略P终止。
这些条件是一般的。实际上,给定图形G,更新参数的值通常是从G的有效域计算出来的,并且是有限的。通过使用聚合函数faggr,IncEval通常会收缩,如上述CC的PIE程序所示。
证明:通过T1和T2,每个更新参数可以有限地更改多次。这保证了ρ的终止,因为ρ终止于无法对其更新参数进行更多更改时。
但是,GRAPE的条件不足以确保异步运行的Church-Rosser属性。为了保证AAP下PIE程序的正确性,我们还需要条件T3。
定理2:在条件T1、T2和T3下,如果ρ对Q正确,则AAP使用任何分割策略P正确并行化查询类Q的PIE程序ρ。
证明:我们在条件下显示以下内容。(1)在BSP下ρ的同步运行和在AAP下ρ的异步运行都达到一固定点。(2)在BSP下ρ的部分结果没有“大于”异步运行的任何固定点。(3)异步运行的部分结果不会比BSP下的固定点“大”。从(2)和(3)可以看出,ρ具有Church-Rosser属性。因此,只要ρ对Q正确,AAP就会正确地并行化ρ。
回顾一下,AP、BSP和SSP是AAP的特例。根据定理2的证明,我们可以得出结论,只要PIE程序ρ对Q正确,就可以正确地并行化ρ
·在条件T1和T2下通过BSP;
·在条件T1、T2和T3下通过AP;和
·在条件T1、T2和T3下通过SSP。
T1、T2和T3为异步运行收敛和确保Church-Rosser属性提供了第一个条件。为此,检查了GRAPE、Maiter、BAP和SSP的收敛条件。
(1)如前所述,GRAPE的条件不能确保Church-Rosser属性,这对于BSP来说不是问题。
(2)Maiter专注于顶点-中心的编程,并根据更新函数f确定收敛的四个条件,该更新函数f根据顶点的邻居改变顶点的状态。条件要求f是可分配的,可结合的、可交换的和并且还要满足初始值的等式。
与Zhang,Y.,Gao,Q.,Gao,L.and Wang,C.(2014.Maiter:一种基于增量的累积迭代计算的异步图处理框架,TPDS,25,8(2014),2091–2100)相反,当片段仅限于单个节点时,我们处理以块为中心的编程,顶点-中心模型是特例。而且,张的最后条件是非常严格的。此外,张的证据不足以证明Church-Rosser属性,一个反例可能是条件收敛序列,异步运行可能会有所不同。
(3)表明BAP可以在特定条件下在消息缓冲区上模拟BSP。其不考虑Church-Rosser属性,并且我们不对消息缓冲区做任何假设。
(4)研究了确保随机梯度下降(SGD)收敛的可能性高的条件。相反,我们的条件是确定的:在T1、T2和T3下,所有AAP运行都保证在正确结果下收敛。此外,我们认为AAP计算不限于机器学习。
其他并行模型的仿真
针对MapReduce、PRAM、BSP、AP和SSP开发的算法可以迁移到AAP,而无需额外的复杂性。也就是说,AAP与其他并行模型一样具有表现力。
请注意,尽管本文着重于图形计算,但AAP并不局限于将图形作为并行计算模型。它与BSP和AP一样通用,并且不必将图形作为输入。
如果存在将M2上具有成本C的任何程序转换为M1上具有成本O(C)的程序的编译算法,则并行模型M1可以最佳地模拟模型M2。该成本包括计算和通信成本。即,复杂度界限保持不变。
如上所述,BSP,AP和SSP是AAP的特殊情况。由此可以轻松验证以下内容。
命题3:AAP可以最佳地模拟BSP、AP和SSP。
通过命题3,可以将为例如Pregel、GraphLab和GRAPE开发的算法迁移到AAP。例如,可以通过PIE算法ρ来模拟Pregel算法A(具有针对顶点的功能compute())。(a)PEval通过循环在顶点上运行compute(),并使用状态变量来交换本地消息,而不是Pregel的SendMessageTo()。(b)更新参数是边界节点的状态变量,并且函数faggr像Pregel一样对消息进行分组,跟随BSP。(c)IncEval还对片段中的各个顶点运行compute(),只是它从活动顶点(具有更改值的边界节点)开始。
AAP可以最佳地模拟MapReduce和PRAM。GRAPE通过采用一种键值消息形式,可以最佳地模拟MapReduce和PRAM。
定理4:MapReduce和PRAM可以通过(a)AAP和(b)仅使用指定消息的GRAPE进行最佳模拟。
证明:由于可以通过MapReduce模拟PRAM,而AAP可以模拟GRAPE,因此足以证明GRAPE可以通过上述消息方案最佳地模拟MapReduce。
可以将MapReduce算法A指定为子例程的序列(B1,…,Bk),其中Br(r∈[1,k])由映射器(mapper)μr和归约器(reducer)ρr组成。为了通过GRAPE模拟A,我们给出了一个PIE程序ρ,其中(1)PEval是B1的映射器μ1,(2)IncEval模拟归约器ρi和映射器μi+1(i∈[1,k-1]),以及最后一轮的归约器ρk。我们定义了IncEval,它将A的子例程B1,…,Bk视为程序分支。假设A使用n个处理器。我们添加了一个由n个节点组成的团GW作为输入,每个工作机一个,从而任何两个工作机都可以交换存储在其GW中其边界节点的状态变量中的数据。我们证明,使用n个处理器,每步中ρ所产生的成本不超过A。
用AAP编程
已经示出了AAP如何并行化CC(第一至第三示例)。接下来,我们研究两种PIE算法,包括SSSP和CF。我们还为PageRank提供了一PIE程序。我们在下面根据AAP并行化这些算法。这些表明AAP不会使编程更加困难。
图形遍历
我们从单源最短路径问题(SSSP)开始。考虑一个有向图G=(V,E,L),其中对于每个边e,L(e)是一个正数。G中的路径长度(v0,…,vk)是i∈[1,k]的L(vi-1,vi)的总和。对于一对(s,v)节点,用dist(s,v)表示从s到v的最短距离。SSSP表示如下。
·输入:如上的有向图G和G中的节点s。
·输出:G中所有节点v的距离dist(s,v)。
AAP以与GRAPE相同的方式并行化SSSP。
(1)PIE。AAP将SSSP的Dijkstra算法称为PEval,将顺序增量算法称为IncEval。它为每个节点v声明一个状态变量xv,表示dist(s,v),最初为∞(dist(s,s)=0除外)。每个Fi的候选集Ci为Fi.O。候选集中的状态变量通过[8]中的PEval和IncEval更新,并使用min作为faggr进行聚合。如果无法对这些状态变量进行任何更改,则将调用Assemble以合并所有部分结果。
(2)SSSP和定理2的顺序算法的正确性确保了正确性。要看到这一点,请在同一片段Fi中定义节点集S1和S2的顺序≤,使得如果对于每个节点v∈Fi,v1.dist≤v2.dist,,则S1≤S2,其中v1和v2分别表示v在S1和S2中的副本。然后,通过使用min作为聚合函数faggr,IncEval既收缩又单调。
协同过滤
接下来,我们考虑协作过滤(CF)。它以包含两类节点的二分图G作为输入,即用户U和产品P,以及一组加权边更具体地说,(1)每个用户u∈U(各个产品p∈P)携带一个(未知)潜在因子向量u.f(分别为p.f)。(2)E中的每个边e=(u,p)都带有权重r(e),估计为编码从用户u到产品p的等级的u.fT*p.f(可能是例如“未知”)。训练集ET是指边缘集 即所有已知等级。CF问题说明如下。
·输入:有向二分图G和训练集ET。
·输出:缺失因子向量u.f和将损失函数∈(f,ET)最小化的p.f,估计为
AAP并行化随机梯度下降(SGD),这是CF的流行算法。我们提供以下PIE程序。
(1)PIE。PEval为每个节点v声明一个状态变量v.x=(v.f,v.δ,t),其中v.f是v(最初为)的因子向量,v.δ记录对v.f的累积更新,t记录最后更新v.f的时间戳。假设w.l.o.g.P∨<<∨U∨,需要Fi.O∪Fi.I,即与Fi相关的共享产品节点作为Ci。Eval本质上是“小批量”SGD。它计算出Fi中每个边(u,p)的下降梯度并将其累积在u.δ和p.δ,中。然后使用累积的梯度来更新所有本地节点的因子向量。最后,PEval将更新后的值发送给相邻的工作机。
通过中的元组(p.f,p.δ,t)的时间戳上的最大值(max),IncEval首先聚合Fi.O中每个节点p的因子向量。对于Fi.I中的每一个节点,通过应用在其他工作机处计算得出的梯度的加权总和来集合其因子向量。然后运行一轮SGD;只要不违反有界延迟条件,它就会像PEval中一样发送更新的状态变量。
Assemble简单地从所有工作机中获取所有节点的因子向量的并集,然后返回集合。
(2)在有界延迟条件下已验证了正确性。同样,我们显示PIE程序收敛并正确地推断出丢失的CF因子。
网页排名(PageRank)
最后,我们研究PageRank对网页进行排名。考虑代表网页和链接的有向图G=(V,E)。对于每个页面v∈V,其排名得分均由Pv表示。PageRank算法按以下方式迭代更新Pv:
Pv=d*∑{u|(u,v)∈E}Pu/Nu+(1-d),
其中d是阻尼系数,Nu是u的出度。该过程迭代进行,直到两个连续迭代的变化之和小于阈值为止。PageRank问题说明如下。
·输入:有向图G和阈值∈。
·输出:G中节点的PageRank分数。
AAP按照与Tian,Y.,Balmin,A.,Corsten,S.A.和Shirish Tatikonda,J.M.2013相同的方式并行化PageRank。从“像顶点一样思考”到“像图一样思考”。PVLDB.7,7(2013),193-204。
(1)PIE。PEval为每个节点v∈Fi声明一个状态变量xv,以跟踪在每个片段Fi上来自Fi中其他节点的v更新。需要将Fi.O作为其候选集Ci。从每个v的初始得分0和更新xv(最初为1-d)开始,PEval(a)将得分Pv增加xv,并且(b)通过增量更改d*xv/Nv更新从v链接的每个u更的变量xu。在处理结束时,它将值发送到其相邻的工作机。
收到消息后,IncEval迭代更新分数。它(a)首先使用sum作为faggr聚合来自其他工作机对每个边界节点的更改;(b)然后通过进行与PEval中相同的计算来传播所述更改以更新本地片段中的其他节点;(c)得出对值的更改,并将其发送给其相邻的工作机。
当每个工作机的两个连续迭代的变化之和低于∈时,Assemble收集G中所有节点的分数。
(2)正确性。我们证明,AAP下的PIE程序终止,并具有Church-Rosser属性,与定理2的证明相同。该证明利用以下属性,如[36]所示:对于图G中的每个节点v,Pv可以表示为∑p∈Pp(v)+(1-d),其中P是G中通往v的所有路径的集合,p是路径(vn,vn-1,…v1,v),和Nj是的出度结点vj,j∈[1,n]。
有界延迟限制最快的工作机超过最慢的工作机至多c步。这主要是为了保证CF的正确性和收敛性。根据定理2,CC和SSSP不受有界延迟的约束。条件T1,T2和T3足以保证它们的收敛性和正确性。因此,快速的工作机可以超前任何轮次,而不会影响其正确性和收敛性。可以证明PageRank也不需要有界延迟,因为对于每个路径p∈P,p(v)最多可以添加到Pv一次(参见上文)。
实施GRAPE+
GRAPE+的架构如图5所示,通过支持AAP来扩展GRAPE。它的顶层为开发人员提供注册其PIE程序的接口,并为最终用户提供运行已注册PIE程序的接口。GRAPE+的核心是其引擎,用于生成并行评估计划。它计划工作线程的工作量以执行评估计划。引擎的基础是几个组件,包括(1)用于处理消息传递的MPI控制器,(2)负载均衡器以平均分配工作负载,(3)索引管理器以维护索引以及(4)分割管理器以进行形分割。GRAPE+使用分布式文件系统(例如NFS,AWS S3和HDFS)来存储图形数据。
GRAPE+通过支持以下内容扩展了GRAPE。
自适应异步管理器。与GRAPE相反,GRAPE+动态调整工作机的相对进度。这是由引擎中的调度器执行的。调度器基于收集到的统计信息(请参阅下文),调整参数并确定要挂起或运行的线程,以将资源分配给有用的计算。特别是,引擎在工作机之间分配通信通道,缓冲生成的消息,将消息打包为段,然后每次按段发送。通过交叠数据传输和计算,它进一步降低了成本。
统计收集器。在运行PIE程序期间,收集器收集每个工作机的信息,例如,交换的消息数量,每轮评估时间,查询工作负载的历史数据以及最后一次参数调整的影响。
容错能力。GRAPE+的异步运行使得在发生故障时更难确定要回滚的一致状态。因此,与GRAPE相反,GRAPE+将Chandy-Lamport快照用于检查点。主机广播带有令牌的检查点请求。收到请求后,每个工作机如果已经持有令牌,则忽略该请求。否则,它将在发送任何消息之前快照其当前状态。令牌附加到其以下消息。没有令牌的迟到消息将添加到最后一个快照中。这使我们获得了一致的检查点状态,包括异步传递的所有消息。
当我们在提供连续在线支付服务的POC场景中部署GRAPE+时,我们发现平均需要大约40秒钟才能获得整个状态的快照,而从一名工作机的故障中恢复则需要20秒钟。相反,启动系统和加载图形花了40分钟。
一致性。每个工作机Pi使用一个缓冲区来存储传入的消息,当新消息到达时,该缓冲区将逐渐扩展。GRAPE+允许用户提供聚合函数faggr来解决状态变量从不同工作程序接收多个值时的冲突。唯一的竞争条件是,当IncEval从中删除旧消息时,删除是原子的。因此,GRAPE+的一致性控制并不比GRAPE难得多。
实验研究
我们使用真实的和合成图进行了四组实验,以评估(1)效率,(2)通信成本和(3)GRAPE+的放大,以及(4)AAP的有效性和图形分割策略对其性能的影响。我们还在附录B中报告了一个案例研究,以说明AAP的动态调整是如何工作的。我们将GRAPE+的性能与(a)BSP下的Giraph和同步的GraphLabsync,(b)AP下的异步GraphLabasync、GiraphUC和Maiter[36],(c)SSP下的Petuum,(d)Hsync下的PowerSwitch以及(e)BSP,AP和SSP的GRAPE+模拟,分别用GRAPE+SP,GRAPE+AP,GRAPE+SSP表示。
已经发现,GraphLabasync,GraphLabsync,PowerSwitch和GRAPE+优于其他系统。实际上,表1显示了具有192个工作机的系统的SSSP和PageRank的性能。其他算法的结果是一致的。因此,我们仅详细报告这四个系统的性能。在所有实验中,我们还评估了GRAPE+BSP,GRAPE+AP和GRAPE+SSP。请注意,GRAPE本质上是GRAPE+BSP。
实验设置。我们使用了真实的和合成图。
图形。我们使用了五种不同类型的真实图形,因此每种算法都使用两种真实图形进行评估。其中包括:(1)Friendster,一个拥有6500万用户和18亿链接的社交网络;我们随机分配权重来测试SSSP;(2)交通,这是一个(无向的)美国公路网,具有2300万个节点(位置)和5800万个边缘;(3)UKWeb,具有1.33亿个节点和50亿条边的Web图形。我们还使用了两个推荐网络(二分图)来评估CF,即(4)movieLens,在138000个用户和27000个电影之间具有2000万个电影评级(作为加权边缘);(5)Netflix,在17770部电影和480000个客户之间拥有1亿个收视率。
为了测试GRAPE+的可扩展性,我们开发了一种生成器来生成合成图G=(V,E,L),该图由节点V∨(最多3亿)和边E∨(最多100亿)的数量控制。
查询。对于SSSP,我们为使用的每个图G采样了10个源节点,以使每个节点都具有到G中至少90%的节点的路径,或来自G中至少90%的节点的路径,并为每个节点构造了SSSP查询。
图形计算。我们使用他们的PIE程序在GRAPE+上评估了SSSP、CC、PageRank和CF。我们使用了竞争对手系统(当其可获得时)提供的“默认”代码。否则,我们会尽力为它们开发“最佳”算法,例如PowerSwitch的CF。
我们使用XtraPuLP作为默认的图形分割策略。为了评估落后者的影响,我们随机重新组合了一小部分分割图以使分割图倾斜。
我们将系统部署在HPC集群上。对于每次实验,我们使用多达20台服务器,每台服务器具有16个2.40GHz线程和128GB存储器。在每个线程上,都部署了GRAPE+工作器。每个实验我们进行了5次。平均值在此处报告。
实验结果。接下来,我们报告我们的发现。
Exp-1:效率。我们首先通过将使用的工作机数量n从64变至192来评估GRAPE+的效率。基于这些算法在交通网络、社交网络、网络评级和推荐中的应用,我们评估(a)基于真实图形的流量和Friendster的SSSP和CC;(b)基于Friendster和UKWeb的PageRank,以及(c)基于movieLens和Netflix的CF。
(1)SSSP。图6(a)和6(b)报告了SSSP的性能。
(a)GRAPE+在所有情况下都始终优于这些系统。通过流量(分别为Friendster)和192台工作机,它平均比同步GraphLabsync,异步GraphLabasync和混合PowerSwitch分别快1673(分别为3.0)次,1085(分别为15)次和1270(分别为2.56)次。
GRAPE+的性能提升来自以下方面:(i)通过动态调整AAP下工作机的相对进度来有效地利用资源;(ii)通过使用增量IncEval减少冗余计算和通信;(iii)从顺序算法策略继承的优化。请注意,在BSP、AP和SSP中,GRAPE+BSP,GRAPE+AP和GRAPE+SSP仍然可以从(ii)和(iii)中受益。
例如,GraphLabsync对Friendster(分别为流量)进行了34轮(分别为10749),而通过使用IncEval,GRAPE+BSP和GRAPE+SSP分别进行了21轮和30轮(分别为31和42),因此减少了同步障碍和通信成本。此外,GRAPE+通过使用优先级队列对顶点处理进行优先级排序,从顺序(Dijkstra)算法继承了优化技术。相反,这种优化策略超出了以顶点为中心的系统的能力。
(b)GRAPE+对于流量(分别为Friendste)比GRAPE+BSP,GRAPE+AP和GRAPE+SSP平均快2.42、1.71和1.47(分别为2.45、1.76和1.40)倍,分别是GRAPE+BSP,GRAPE+AP和GRAPE+SSP的2.69、1.97和1.86倍。由于GRAPE+,GRAPE+BSP,GRAPE+AP和GRAPE+SSP是在不同模式下的同一系统,因此差距反映了不同模型的有效性。我们发现AAP的空闲等待时间分别是BSP和SSP的32.3%和55.6%。此外,当根据BSP上的额外总计算时间和通信时间来衡量延迟计算时,AAP的延迟计算分别占AP和SSP的37.2%和47.1%。通过动态调整不同工作机的相对进度验证了AAP的有效性。
(c)当n增加时,GRAPE+将花费更少的时间。当n从64变为192时,其流量和Friendster分别平均快2.49和2.25倍。也就是说,AAP通过减少落后者和多余的过时计算,有效地利用了并行性。
(2)CC。如图6(c)和6(d)分别在流量和Friendster上所报告的,(a)GRAPE+优于GraphLabsync,GraphLabasync和PowerSwitch。当n=192时,GRAPE+分别比这三个系统平均快313、93和51倍。(b)GRAPE+在BSP、AP和SSP下比其变体更快,分别比流量(分别为Friendster)快20.87、1.34和3.36(分别为3.21、1.11和1.61)倍,高达27.4、1.39和5.04倍。(c)GRAPE+与使用的工作机数量很好地匹配:当n从64变为192时,平均速度要快2.68倍。
(3)PageRank。如图6(e)-6(f)分别显示在Friendster和UKWeb上,当n=192时,(a)GRAPE+比GraphLabsync,GraphLabasync和PowerSwitch分别平均快5、9和5倍。(b)GRAPE+比GRAPE+BSP,GRAPE+AP和GRAPE+SSP分别快1.80、1.90和1.25倍,最高可达2.50、2.16和1.57倍。这是因为GRAPE+减少了过时的延时计算,尤其是落后者计算。落后者在BSP,AP和SSP下平均分别进行了50、27和28轮,而在AAP下则是24轮。(d)当n从64变为192时,GRAPE+平均要快2.16倍。
(4)CF。我们使用带有训练集ET∨90∨E∨的movieLens和Netflix,分别如图6(g)-6(h)所示。平均(a)GRAPE+比GraphLab sync,GraphLab async和PowerSwitch分别快11.9、9.5、10.0倍。(b)GRAPE+比GRAPE+BSP,GRAPE+AP和GRAPE+SSP分别快1.38、1.80和1.26倍,分别达到1.67、3.16和1.38倍。(c)当n从64变为192时,GRAPE+平均快2.3倍。
单线程。在图形流量中,movieLens和Netflix可以容纳在一台计算机中。在单台计算机上,SSSP和CC通过流量,以及CF通过Netflix分别需要6.7s,4.3s和2354.5s。具体取决于落后者严重程度,GRAPE+在使用64-192个工作机时,平均速度比单线程快1.63到5.2、1.64到14.3和4.4到12.9倍。注意以下几点。(a)GRAPE+会产生单台计算机没有的额外的并行计算开销,就像其他并行系统一样。(b)UKWeb之类的大型图形超出了单台计算机的能力,因此并行计算是此类图形的必要条件。
Exp-2:通信。通过监视系统文件/proc/net/dev,我们跟踪了运行期间每台计算机发送的总字节数。表1中报告了使用192个工作机时PageRank和SSSP在Friendster上的通信成本。其他算法的结果是一致的,因此未示出。这些结果告诉我们以下内容。
(1)GRAPE+平均发送了由GraphLabsync,GraphLabasync和PowerSwitch分别发送的数据的22.4%,8.0%和68.3%。这是因为GRAPE+(a)减少了冗余的延迟计算,因此减少了不必要的数据流量,并且(b)仅通过增量IncEval传送更新参数的更改值。
(2)与GRAPE+BSP,GRAPE+AP和GRAPE+SSP相比,GRAPE+的通信成本分别为1.22倍,40%和1.02倍。由于AAP允许工作量小的工作机更快地运行并具有更多的迭代,因此消息量可能会增加。此外,AAP之下的工作机还交换他们的状态和统计信息以调整相对速度。尽管如此,其通信成本并不比BSP和SSP差很多。
Exp-3:GRAPE+的放大。使用更多的工作机时,系统的速度可能会降低。因此,我们评估了GRAPE+的放大比例,其衡量图形G=(|V|,|E|)的大小和工作机数量n成比例增加时保持相似性能的能力。我们将n从96改变为320,并且对于每n个,在从(60M,2B)到(300M,10B)大小变化的合成图中,与n成正比的部署GRAPE+。
如图6(i)和6(j)分别针对SSSP和PageRank所述,GRAPE+保留了合理的放大比例。也就是说,AAP的开销不会削弱并行计算的优势。尽管需要调整相对进度的开销,但GRAPE+仍可保持与BSP,AP和SSP相当的放大。
其他算法的结果是一致的(未显示)。
Exp-4:AAP的有效性。为了进一步评估AAP的有效性,我们测试了(a)图形分区对AAP的影响,以及(b)在具有更多工作机的较大图形上AAP的性能。我们评估了GRAPE+,GRAPE+BSP,GRAPE+AP和GRAPE+SSP。请注意,这些是在不同模式下的同一系统,因此结果不受实施的影响。
图形分割的影响。定义r=||Fmax||/||Fmedian||表示分割的偏度,其中||Fmax||和||Fmedian||分别表示最大片段的大小和中间大小片段的大小。
如图6(k)所示的Friendster上的SSSP,其中x轴为r,(a)与其他并行图形系统一样,不同的分割也会影响GRAPE+的性能。(b)分区越偏斜,AAP越有效。确实,AAP在r较大时更有效。当r=9时,AAP分别胜过BSP,AP,SSP 9.5、2.3和4.9倍。对于平衡良好的分割(r=1),BSP效果很好,因为产生落后者的机会很小。在这种情况下,AAP和BSP一样有效。
大规模设置中的AAP。我们测试了由GTgraph遵循幂律和小世界属性生成的3亿个顶点和100亿条边的合成图。我们使用了多达320台工作机的集群。如图6(l)中所示,对于PageRank,AAP分别比BSP、AP和SSP分别快4.3、14.7和4.7倍,在320个工作机的情况下分别高达5.0、16.8和5.9倍。与Exp-1中的结果相比,这些结果表明AAP在具有更多工作机的更大图形上的效果要好得多,该设置更接近于实际应用,在这些应用中落后者和延迟计算通常很繁重。这些进一步验证了AAP的有效性。
其他算法的结果是一致的(未显示)。
已经发现:(1)GRAPE+始终优于最先进的系统。在实际图形及具有192台工作机的情形,GRAPE+平均(a)对于SSSP比Giraph、GraphLabsync、GraphLabasync、GiraphUC、Maiter和PowerSwitch快2080、838、550、728、1850和636倍,(b)对于CC比的Giraph、GraphLabsync、GraphLab async和GiraphUC快835、314、93和368倍,(c)对于PageRank比Giraph、GraphLabsync、GraphLab async、GiraphUC、Maier和PowerSwitch快339、4.8、8.6、346、9.7和4.6倍,和(d)对于CF分别比GraphLab sync、GraphLab async和Petuum快11.9、9.5和30.9倍。其中,PowerSwitch具有最接近GRAPE+的性能。(2)由于这些问题,它们分别导致这些系统的通信成本分别低至0.0001、0.027、0.13和57.7。(3)AAP有效地减少了落后者和冗余延时计算。在实际图形中,其对这些问题的速度分别比BSP、AP和SSP分别快4.8、1.7和1.8倍。在大规模的合成图中,AAP分别比BSP、AP和SSP分别平均快4.3、14.7和4.7倍,在320台工作机的情况下,分别高达5.0、16.8和5.9倍。(4)落后者和延迟计算越严重,或者图形越大并且使用的工作机越多,则AAP越有效。(5)GRAPE+与所使用的工作机数量n匹配良好。当SSSP、CC、PageRank和CF的n从64变至192时,平均速度分别提高了2.37、2.68、2.17和2.3倍。此外,它具有良好的放大效果。
还已经表明,作为异步模型,AAP不会使编程变得更加困难,并且保留了一致性控制和收敛保证的简便性。我们还开发了保证异步运行的Church-Rosser属性的第一条件,并开发了模拟结果来证明AAP的强大功能和灵活性。实验结果证明,AAP在大规模图形计算中很有前途。
Claims (11)
1.一种用于异步并行化图形计算的方法,该方法包括:
在多个工作机上分发多个片段,以使每个工作机具有至少一个本地片段,所述多个片段是通过对一图形进行分割而获得,每个片段是该图形的一子图;
通过每个工作机使用预定义的顺序批处理算法计算其至少一个本地片段的每个片段上部分结果;
由每个工作机基于一个或更多个更新消息使用预定义的顺序增量算法迭代地计算其至少一个本地片段中每个片段的更新的部分结果,直到满足终止条件为止,其中从一个或更多个其它工作机分别接收一个或更多个更新消息,并将所述一个或更多个更新消息分别存储在各自的缓冲区中;
其中允许每个工作机根据其延迟延展来决定何时执行下一轮计算,并且其中所述工作机在执行下一轮计算之前,暂停由所述延迟延展指示的时间,所述延迟延展可以根据每个工作机相对于其他工作机的相对计算进度进行动态调整。
2.根据权利要求1所述的方法,其中,通过来自以下组的一个或更多个参数来调整每个工作机的延迟延展:存储在相应缓冲器中的更新消息的数量,从其中接收一个或更多个更新消息的一个或更多个其他工作机的数量,在所有工作机上执行最小和最大的轮次、运行时间预测、查询日志以及从所有工作机收集的其他统计信息。
3.根据权利要求1或2所述的方法,其中,当可用时,每个工作机持续从其他工作机接收更新消息,而没有施加同步。
4.根据权利要求1至3中任一项所述的方法,其中,当工作机在延迟延展期间暂停时,将其资源分配给一个或更多个其他工作机。
5.根据权利要求1至4中的任一项所述的方法,其中,当每个工作机在其当前轮次计算之后没有存储在相应缓冲器中的更新消息时,该工作机向主机发送非活动的标志。
6.根据权利要求5所述的方法,其中,当从所有工作机接收到非活动标志时,所述主机向所有工作机广播终止消息。
7.根据权利要求6所述的方法,其中,响应于所述终止消息,当每个工作机处于非活动状态时,其以“确认”做出响应,或者当其处于活动状态或在队列中以进行下一轮计算时,以“等待”做出响应。
8.根据权利要求7所述的方法,其中,在从所有工作机接收到“确认”之后,所述主机从所有工作机拉出所述更新的部分结果,并且将预定义的集合函数应用于所述更新的部分结果。
9.根据权利要求1至8中任一项所述的方法,其中,所述预定义的顺序增量算法是单调的。
10.根据权利要求1至9中的任一项所述的方法,其中,所述更新消息基于各自的部分结果,并且由预定义的更新参数来定义。
11.一种用于异步并行化图形计算的系统,其被配置为执行根据权利要求1至10中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2018090372 | 2018-06-08 | ||
CNPCT/CN2018/090372 | 2018-06-08 | ||
PCT/CN2018/104689 WO2019232956A1 (en) | 2018-06-08 | 2018-09-07 | Parallelization of graph computations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112074829A true CN112074829A (zh) | 2020-12-11 |
Family
ID=68769224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880092086.1A Pending CN112074829A (zh) | 2018-06-08 | 2018-09-07 | 图形计算的并行化 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112074829A (zh) |
WO (1) | WO2019232956A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799845A (zh) * | 2021-02-02 | 2021-05-14 | 深圳计算科学研究院 | 一种基于grape框架的图算法并行加速方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104504003B (zh) * | 2014-12-09 | 2018-03-13 | 北京航空航天大学 | 图数据的搜索方法和装置 |
CN105045790A (zh) * | 2015-03-13 | 2015-11-11 | 北京航空航天大学 | 图数据搜索系统、方法和设备 |
CN105653204B (zh) * | 2015-12-24 | 2018-12-07 | 华中科技大学 | 一种基于磁盘的分布式图计算方法 |
CN106407455A (zh) * | 2016-09-30 | 2017-02-15 | 深圳市华傲数据技术有限公司 | 基于图数据挖掘的数据处理方法及装置 |
-
2018
- 2018-09-07 WO PCT/CN2018/104689 patent/WO2019232956A1/en active Application Filing
- 2018-09-07 CN CN201880092086.1A patent/CN112074829A/zh active Pending
Non-Patent Citations (1)
Title |
---|
WENFEI FAN: "Adaptive Asynchronous Parallelization of Graph Algorit", SIGMOD’18:PROCEEDINGS OF THE 2018 INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA, pages 1141 - 1156 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799845A (zh) * | 2021-02-02 | 2021-05-14 | 深圳计算科学研究院 | 一种基于grape框架的图算法并行加速方法和装置 |
WO2022165687A1 (zh) * | 2021-02-02 | 2022-08-11 | 深圳计算科学研究院 | 一种基于grape框架的图算法并行加速方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2019232956A1 (en) | 2019-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Khan et al. | An energy, performance efficient resource consolidation scheme for heterogeneous cloud datacenters | |
US20230090130A1 (en) | Distributable and Customizable Load-Balancing of Data-Associated Computation Via Partitions and Virtual Processes | |
Zhang et al. | Accelerate large-scale iterative computation through asynchronous accumulative updates | |
Mayer et al. | Graph: Heterogeneity-aware graph computation with adaptive partitioning | |
Mayer et al. | Graph: Traffic-aware graph processing | |
CN104063261A (zh) | 一种基于云环境下的多目标优化虚拟机放置方法 | |
Karamoozian et al. | On the fog-cloud cooperation: How fog computing can address latency concerns of IoT applications | |
US20230119908A1 (en) | Simulation Systems and Methods Using Query-Based Interest | |
US20180373825A1 (en) | Scalable Simulation System with Scalable Data Propagation | |
CN114625500A (zh) | 云环境下拓扑感知的微服务应用调度的方法及应用 | |
Goutam et al. | Preemptable priority based dynamic resource allocation in cloud computing with fault tolerance | |
Hefny et al. | Comparative study load balance algorithms for map reduce environment | |
AlOrbani et al. | Load balancing and resource allocation in smart cities using reinforcement learning | |
Bolodurina et al. | Development and research of models of organization storages based on the software-defined infrastructure | |
CN113641448A (zh) | 一种边缘计算容器分配和层下载排序体系结构及其方法 | |
CN112074829A (zh) | 图形计算的并行化 | |
Ibrahim et al. | Improving mapreduce performance with progress and feedback based speculative execution | |
Kinger et al. | Priority-aware resource allocation algorithm for cloud computing | |
Aral et al. | Subgraph matching for resource allocation in the federated cloud environment | |
Yassir et al. | Graph-based model and algorithm for minimising big data movement in a cloud environment | |
Moreno-Vozmediano et al. | Latency and resource consumption analysis for serverless edge analytics | |
Nguyen et al. | Throughput-driven partitioning of stream programs on heterogeneous distributed systems | |
US11087047B2 (en) | Scalable update propagation via query aggregations and connection migrations | |
Compagnin et al. | Experimental evaluation of optimal schedulers based on partitioned proportionate fairness | |
Kail et al. | A novel adaptive checkpointing method based on information obtained from workflow structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |