图计算编程
GraphLite编程
实现class Vertex的一个子类
class Vertex中有两类函数:
(1)图计算程序员需要实现的:Compute()
(2)系统提供的,可以在Compute调用的。例如:
getValue(),mutableValue(),
getOutEdgeIterator(),sendMessageTo(),sendMessageToAllNeighbors(),
voteToHalt()
superstep():获取当前超步数:从0开始计数
acculate(),getAggregate():全局统计量
1、同步图运算
(1)图计算模型
运算分成多个超步。
超步内,并行执行每个顶点。
超步间,全局同步。
顶点算法通常步骤:
接收上个超步发出的in-neighbor的消息。
计算当前顶点的值。
向out-neighbor发消息。
(2)图计算模型的特点
每个顶点有一个value。
顶点为中心的运算:程序员实现一个compute函数。在每个超步中,同步图系统对每一个顶点调用一次Compute。Compute通常接收消息,计算,发送消息。
(3)图计算如何结束
顶点有两种状态:
活跃态:图系统只对活跃顶点调用Compute;顶点初始状态均为活跃态。
非活跃态:Compute调用Vote to halt时,顶点变为非活跃态;非活跃态的顶点也可以重新变为活跃态。
当所有的顶点处于非活跃状态时,图系统结束本次图运算