17.01.2014 Views

Graph Processing & Bulk Synchronous Parallel Model

Graph Processing & Bulk Synchronous Parallel Model

Graph Processing & Bulk Synchronous Parallel Model

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

: public Vertex {<br />

void Compute(MessageIterator* msgs) {<br />

int mindist = IsSource(vertex_id()) ? 0 : INF;<br />

Single Source Shortest Paths <br />

for (; !msgs->Done(); msgs->Next())<br />

mindist = min(mindist, msgs->Value());<br />

if (mindist < GetValue()) {<br />

class ShortestPathVertex *MutableValue() = mindist;<br />

: public Vertex {<br />

All VerFces tional iniFalized edge to can INF be<br />

ad<br />

OutEdgeIterator iter = GetOutEdgeIterator();<br />

void Compute(MessageIterator* msgs) {<br />

implemented a random<br />

for (; !iter.Done(); iter.Next())<br />

int mindist = IsSource(vertex_id()) SendMessageTo(iter.Target(),<br />

? 0 : INF;<br />

and a maximum-weig<br />

for (; !msgs->Done(); msgs->Next())<br />

mindist + iter.GetValue());<br />

describe the former h<br />

mindist = min(mindist, msgs->Value());<br />

if (mindist < GetValue()) {<br />

}<br />

In the Pregel impl<br />

Distance to source <br />

tex value is a tuple o<br />

*MutableValue() = mindist; VoteToHalt();<br />

OutEdgeIterator iter = } GetOutEdgeIterator();<br />

set the vertex is in (L<br />

for (; !iter.Done(); }; iter.Next())<br />

vertex once known.<br />

SendMessageTo(iter.Target(),<br />

carry no information)<br />

mindist + iter.GetValue());<br />

Edge algorithm Weight proceeds in<br />

}<br />

Figure 5: Single-source index shortest is justpaths.<br />

the supe<br />

VoteToHalt();<br />

handshake.<br />

}<br />

};<br />

class MinIntCombiner : public Combiner In phase 0{<br />

of a cy<br />

virtual void Combine(MessageIterator* sends a message msgs) { to ea<br />

int mindist = INF;<br />

and then unconditiona<br />

Figure 5: Single-source for shortest (; !msgs->Done(); paths. msgs->Next()) (because it is already<br />

mindist = min(mindist, msgs->Value());<br />

or if all the message<br />

class MinIntCombiner : public Combiner Output("combined_source", {<br />

mindist); never be reactivated.<br />

virtual void Combine(MessageIterator* }<br />

msgs) {<br />

in two supersteps and<br />

int mindist = INF; };<br />

In phase 1 of a cyc<br />

for (; !msgs->Done(); msgs->Next())<br />

randomly chooses on<br />

mindist = min(mindist, msgs->Value());<br />

Lecture<br />

Output("combined_source",<br />

14 : 590.02 Spring 13 <br />

mindist);<br />

18 message granting tha

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!