spcl.inf.ethz.ch
@spcl_eth
MACIEJ BESTA, MICHAL PODSTAWSKI, LINUS GRONER, EDGAR SOLOMONIK, TORSTEN HOEFLER
To Push or To Pull: On Reducing Communication
and Synchronization in Graph Computations
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
Used in…
spcl.inf.ethz.ch
@spcl_eth
Used in…
spcl.inf.ethz.ch
@spcl_eth
Used in…
Running on…
spcl.inf.ethz.ch
@spcl_eth
Used in…
Running on…
[1] A. Lumsdaine et al. Challenges in Parallel Graph Processing. Parallel Processing Letters. 2007.
spcl.inf.ethz.ch
@spcl_eth
Used in…
Running on…
[1] A. Lumsdaine et al. Challenges in Parallel Graph Processing. Parallel Processing Letters. 2007.
spcl.inf.ethz.ch
@spcl_eth
Used in…
Running on…
[1] A. Lumsdaine et al. Challenges in Parallel Graph Processing. Parallel Processing Letters. 2007.
spcl.inf.ethz.ch
@spcl_eth
Used in…
Running on…
[1] A. Lumsdaine et al. Challenges in Parallel Graph Processing. Parallel Processing Letters. 2007.
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
spcl.inf.ethz.ch
@spcl_eth
PAGERANK𝑃 threads are
used
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
[1] J. J. Whang et al. Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned. Euro-Par 2015.
𝑃 threads are
used
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
Pushing
[1] J. J. Whang et al. Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned. Euro-Par 2015.
𝑃 threads are
used
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
Pushing
[1] J. J. Whang et al. Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned. Euro-Par 2015.
𝑃 threads are
used
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
Pushing
[1] J. J. Whang et al. Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned. Euro-Par 2015.
𝑃 threads are
used
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
Pushing
[1] J. J. Whang et al. Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned. Euro-Par 2015.
𝑃 threads are
usedWrite conflicts
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
Pulling
[1] J. J. Whang et al. Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned. Euro-Par 2015.
𝑃 threads are
used
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
Pulling
[1] J. J. Whang et al. Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned. Euro-Par 2015.
𝑃 threads are
used
spcl.inf.ethz.ch
@spcl_eth
PAGERANK
Pulling
[1] J. J. Whang et al. Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned. Euro-Par 2015.
𝑃 threads are
used
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
Root r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
Root r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
Root r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
Root r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pushing
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pushing
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pushing
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pushing
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pushing
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
BFSTOP-DOWN VS. BOTTOM-UP [1]
BFS frontierRoot r
Pulling
[1] S. Beamer, K. Asanović, and D. Patterson. Direction-optimizing breadth-first search. SC12.
Pushing or pulling
when expanding a
frontier
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
Can we apply the
push-pull dichotomy
to other graph
algorithms?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
Vertex importance
(#triangles)
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
Vertex importance
(#triangles)
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
Vertex importance
(#triangles)
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
4
2
Vertex importance
(#triangles)
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
4
2
Vertex importance
(#triangles)
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
Vertex importance
(#triangles)
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
Vertex importance
(#triangles)
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
Vertex importance
(#triangles)
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
Vertex importance
(#triangles)
#vertices
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
Set of vertices
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
Set of vertices
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
Set of vertices
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
+1
+1+1
+1
+1Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
+1+1
+1+1
+1
+1
+1+1
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
+1+1
+1+1
+1
+1
+1+1
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
Pulling
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
Pulling
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
Pulling
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
TRIANGLE COUNTING
: a write conflict
: a read conflict
: integer
Pushing
Pulling
Vertex importance
(#triangles)
#vertices
Set of vertices
𝑣’s neighbors
}
spcl.inf.ethz.ch
@spcl_eth
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
spcl.inf.ethz.ch
@spcl_eth
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
This poor
one has 0
At least two paths
(this one is relevant)
spcl.inf.ethz.ch
@spcl_eth
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Root
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Root
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1] Root
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1] Root
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
Source
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
Source
Destination
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
Source
Destination
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
2. Backward traversals
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
2. Backward traversals
Accumulate centrality
scores during backward
traversals [1].
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
2. Backward traversals
Accumulate centrality
scores during backward
traversals [1].
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
2. Backward traversals
Accumulate centrality
scores during backward
traversals [1].
Now they
become roots
spcl.inf.ethz.ch
@spcl_eth
1. Forward traversals
BETWEENNESS CENTRALITY
BRANDES [1]
We can do
pushing or pulling
in both phases
[1] U. Brandes. A faster algorithm for betweenness
centrality. J. of Math. Sociology. 2001.
Vertex importance
(#shortest paths)
Compute immediate
predecessors of each
vertex in the shortest
paths from other
vertices.
Compute #shortest
paths between any
two vertices
2. Backward traversals
Accumulate centrality
scores during backward
traversals [1].
Now they
become roots
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
Pulling… lower
complexity (more
performance!)
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
Pulling… lower
complexity (more
performance!)
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
Pulling… lower
complexity (more
performance!)
spcl.inf.ethz.ch
@spcl_eth
Pushing… like
before
Pulling… lower
complexity (more
performance!)
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Border vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
Border vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Border vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independently
1
Border vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independently
1
Border vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independently
1
Border vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independently
1
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pushing
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pushing
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pulling
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pulling
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pulling
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
Oh no!
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pulling
We care explicitly about
partitioning now
Iterate until converge
(convergence == no
color conflicts)
In each iteration:
Color each partition
independentlyFix the conflicts
1 2
Border vertices
spcl.inf.ethz.ch
@spcl_eth
OTHER ALGORITHMS & FORMULATIONS
spcl.inf.ethz.ch
@spcl_eth
Triangle CountingBFS
∆-Stepping
OTHER ALGORITHMS & FORMULATIONS
BC (algebraic notation)
Betweenness Centrality (BC)
Graph Coloring
PageRank
Boruvka MST
spcl.inf.ethz.ch
@spcl_eth
Triangle CountingBFS
∆-Stepping
OTHER ALGORITHMS & FORMULATIONS
BC (algebraic notation)
Betweenness Centrality (BC)
Graph Coloring
PageRank
Boruvka MST
Check out the paper
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
GENERIC DIFFERENCES
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
GENERIC DIFFERENCES
What pushing vs.
pulling really is?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
GENERIC DIFFERENCES• Vertices:
• modifies
• : a thread that owns
𝑣 ∈ 𝑉
What pushing vs.
pulling really is?
𝑡[𝑣]𝑡 ↝ 𝑣 ⇔ 𝑡 𝑣
𝑣
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
GENERIC DIFFERENCES• Vertices:
• modifies
• : a thread that owns
𝑣 ∈ 𝑉
What pushing vs.
pulling really is?
𝑡[𝑣]𝑡 ↝ 𝑣 ⇔ 𝑡
Algorithm uses pushing ⇔
(∃𝑡 ∃𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ∧ 𝑡 ≠ 𝑡[𝑣])
𝑣𝑣
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
GENERIC DIFFERENCES• Vertices:
• modifies
• : a thread that owns
𝑣 ∈ 𝑉
What pushing vs.
pulling really is?
𝑡[𝑣]𝑡 ↝ 𝑣 ⇔ 𝑡
Algorithm uses pushing ⇔
(∃𝑡 ∃𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ∧ 𝑡 ≠ 𝑡[𝑣])
Algorithm uses pulling ⇔
(∀𝑡 ∀𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ⇒ 𝑡 = 𝑡[𝑣])
𝑣𝑣
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
GENERIC DIFFERENCES• Vertices:
• modifies
• : a thread that owns
𝑣 ∈ 𝑉
What pushing vs.
pulling really is?
𝑡[𝑣]𝑡 ↝ 𝑣 ⇔ 𝑡
Algorithm uses pushing ⇔
(∃𝑡 ∃𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ∧ 𝑡 ≠ 𝑡[𝑣])
Algorithm uses pulling ⇔
(∀𝑡 ∀𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ⇒ 𝑡 = 𝑡[𝑣])
𝑣𝑣
This is the actual
dichotomy
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
GENERIC DIFFERENCES• Vertices:
• modifies
• : a thread that owns
𝑣 ∈ 𝑉
What pushing vs.
pulling really is?
𝑡[𝑣]𝑡 ↝ 𝑣 ⇔ 𝑡
Algorithm uses pushing ⇔
(∃𝑡 ∃𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ∧ 𝑡 ≠ 𝑡[𝑣])
Algorithm uses pulling ⇔
(∀𝑡 ∀𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ⇒ 𝑡 = 𝑡[𝑣])
𝑣𝑣
This is the actual
dichotomy~[ ]
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
GENERIC DIFFERENCES• Vertices:
• modifies
• : a thread that owns
𝑣 ∈ 𝑉
What pushing vs.
pulling really is?
𝑡[𝑣]𝑡 ↝ 𝑣 ⇔ 𝑡
Algorithm uses pushing ⇔
(∃𝑡 ∃𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ∧ 𝑡 ≠ 𝑡[𝑣])
Algorithm uses pulling ⇔
(∀𝑡 ∀𝑣 ∈ 𝑉: 𝑡 ↝ 𝑣 ⇒ 𝑡 = 𝑡[𝑣])
𝑣𝑣
This is the actual
dichotomy~[ ]=
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
Before we move to the
complexity analysis…
spcl.inf.ethz.ch
@spcl_eth
Before we move to the
complexity analysis…
…a brief recap on
PRAM models.
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
…
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
…
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
…
Some data in
shared memory
(e.g., a vertex )
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
…
Some data in
shared memory
(e.g., a vertex )
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
…
Some data in
shared memory
(e.g., a vertex )
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
…
Some data in
shared memory
(e.g., a vertex )
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
…
…
Some data in
shared memory
(e.g., a vertex )
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
spcl.inf.ethz.ch
@spcl_eth
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
CRCW PRAM: concurrent reads
and concurrent writes to the same
cell take O(1) time.
spcl.inf.ethz.ch
@spcl_eth
…
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
CRCW PRAM: concurrent reads
and concurrent writes to the same
cell take O(1) time.
spcl.inf.ethz.ch
@spcl_eth
…
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
CRCW PRAM: concurrent reads
and concurrent writes to the same
cell take O(1) time.
spcl.inf.ethz.ch
@spcl_eth
…
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
CRCW PRAM: concurrent reads
and concurrent writes to the same
cell take O(1) time.
CREW PRAM: concurrent writes to
the same cell are forbidden
spcl.inf.ethz.ch
@spcl_eth
…
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
CRCW PRAM: concurrent reads
and concurrent writes to the same
cell take O(1) time.
CREW PRAM: concurrent writes to
the same cell are forbidden
…
spcl.inf.ethz.ch
@spcl_eth
…
PRAM (Parallel Random Access Machine): a model used
to reason about the performance of parallel algorithms
All processes process in lock-steps,
communicate by reading from &
writing to a shared memory.
CRCW PRAM: concurrent reads
and concurrent writes to the same
cell take O(1) time.
CREW PRAM: concurrent writes to
the same cell are forbidden
…
spcl.inf.ethz.ch
@spcl_eth
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4 Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4 Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
𝑓
𝑓
𝑓
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
Time
work
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
Time
work X
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
Time
work
Pushing
PullingX
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
Time
work
Pushing
PullingX X
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
Time
work
Pushing
Pulling
CRCW PRAM
CREW PRAMX X
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
Time
work
Pushing
Pulling
CRCW PRAM
CREW PRAMX X X
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
Time
work
BFS
PageRank
Triangle
Counting
Betweenness
Centrality
Graph
Coloring
∆-Stepping
MST Boruvka
Pushing
Pulling
CRCW PRAM
CREW PRAMX X X
spcl.inf.ethz.ch
@spcl_eth
k-RELAXATION
BASIC PRIMITIVES
k-RELAXATION AND k-FILTER
𝑘 = 4
Can be thought of a binary tree
reduction𝑓
𝑓
𝑓
k-FILTER
Can be thought of a prefix sum
Simultaneous propagation of
updates: (pushing) from k
vertices to one of their
neighbors, and (pulling) to k
vertices from one of their
neighbors
Extract vertices updated in one
or more k-RELAXATIONs
We can use k-
RELAXATIONs and k-
FILTERs to derive all
the complexities
We want complexities for (the Cartesian product of):
Time
work
BFS
PageRank
Triangle
Counting
Betweenness
Centrality
Graph
Coloring
∆-Stepping
MST Boruvka
Pushing
Pulling
CRCW PRAM
CREW PRAMX X X
+ some others
spcl.inf.ethz.ch
@spcl_eth
PageRank Triangle Counting BFS
Pulli
ng Time 𝑂 𝐿(𝑚/𝑃 + መ𝑑) 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝐷𝑚)
Pushin
g
Time (CRCW) 𝑂 𝐿 𝑚/𝑃 + መ𝑑 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑 + 𝐷 log 𝑃
Work (CRCW) 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝑚)
Time (CREW) 𝑂 𝐿 log( መ𝑑) 𝑚/𝑃 + መ𝑑 𝑂 log መ𝑑 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 log መ𝑑 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work (CREW) 𝑂 𝐿𝑚 log መ𝑑 𝑂(𝑚𝑑 log መ𝑑) 𝑂 𝑚 log መ𝑑
∆-Stepping Boman Graph Coloring MST BC
Pulli
ng Time 𝑂 𝐿/Δ 𝑙Δ 𝑚/𝑃 + መ𝑑 𝑂 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
De
rive
dstr
aig
htforw
ard
ly
from
BF
S
Work 𝑂 𝐿/Δ 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Pushin
g
Time (CRCW) 𝑂 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
Work (CRCW) 𝑂 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Time (CREW) 𝑂 log መ𝑑 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 log(𝑛) 𝑛2/𝑃
Work (CREW) 𝑂 log መ𝑑 𝑚𝑙Δ 𝑂 𝐿𝑚 log መ𝑑 𝑂(log(𝑛) 𝑛2)
COMPLEXITY ANALYSES
spcl.inf.ethz.ch
@spcl_eth
PageRank Triangle Counting BFS
Pulli
ng Time 𝑂 𝐿(𝑚/𝑃 + መ𝑑) 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝐷𝑚)
Pushin
g
Time (CRCW) 𝑂 𝐿 𝑚/𝑃 + መ𝑑 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑 + 𝐷 log 𝑃
Work (CRCW) 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝑚)
Time (CREW) 𝑂 𝐿 log( መ𝑑) 𝑚/𝑃 + መ𝑑 𝑂 log መ𝑑 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 log መ𝑑 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work (CREW) 𝑂 𝐿𝑚 log መ𝑑 𝑂(𝑚𝑑 log መ𝑑) 𝑂 𝑚 log መ𝑑
∆-Stepping Boman Graph Coloring MST BC
Pulli
ng Time 𝑂 𝐿/Δ 𝑙Δ 𝑚/𝑃 + መ𝑑 𝑂 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
De
rive
dstr
aig
htforw
ard
ly
from
BF
S
Work 𝑂 𝐿/Δ 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Pushin
g
Time (CRCW) 𝑂 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
Work (CRCW) 𝑂 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Time (CREW) 𝑂 log መ𝑑 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 log(𝑛) 𝑛2/𝑃
Work (CREW) 𝑂 log መ𝑑 𝑚𝑙Δ 𝑂 𝐿𝑚 log መ𝑑 𝑂(log(𝑛) 𝑛2)
COMPLEXITY ANALYSES
No worries, we won’t go over
all these details here
spcl.inf.ethz.ch
@spcl_eth
PageRank Triangle Counting BFS
Pulli
ng Time 𝑂 𝐿(𝑚/𝑃 + መ𝑑) 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝐷𝑚)
Pushin
g
Time (CRCW) 𝑂 𝐿 𝑚/𝑃 + መ𝑑 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑 + 𝐷 log 𝑃
Work (CRCW) 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝑚)
Time (CREW) 𝑂 𝐿 log( መ𝑑) 𝑚/𝑃 + መ𝑑 𝑂 log መ𝑑 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 log መ𝑑 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work (CREW) 𝑂 𝐿𝑚 log መ𝑑 𝑂(𝑚𝑑 log መ𝑑) 𝑂 𝑚 log መ𝑑
∆-Stepping Boman Graph Coloring MST BC
Pulli
ng Time 𝑂 𝐿/Δ 𝑙Δ 𝑚/𝑃 + መ𝑑 𝑂 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
De
rive
dstr
aig
htforw
ard
ly
from
BF
S
Work 𝑂 𝐿/Δ 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Pushin
g
Time (CRCW) 𝑂 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
Work (CRCW) 𝑂 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Time (CREW) 𝑂 log መ𝑑 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 log(𝑛) 𝑛2/𝑃
Work (CREW) 𝑂 log መ𝑑 𝑚𝑙Δ 𝑂 𝐿𝑚 log መ𝑑 𝑂(log(𝑛) 𝑛2)
COMPLEXITY ANALYSES
No worries, we won’t go over
all these details here Let’s only see the PageRank
comparisons (others are similar)
spcl.inf.ethz.ch
@spcl_eth
PageRank Triangle Counting BFS
Pulli
ng Time 𝑂 𝐿(𝑚/𝑃 + መ𝑑) 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝐷𝑚)
Pushin
g
Time (CRCW) 𝑂 𝐿 𝑚/𝑃 + መ𝑑 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑 + 𝐷 log 𝑃
Work (CRCW) 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝑚)
Time (CREW) 𝑂 𝐿 log( መ𝑑) 𝑚/𝑃 + መ𝑑 𝑂 log መ𝑑 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 log መ𝑑 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work (CREW) 𝑂 𝐿𝑚 log መ𝑑 𝑂(𝑚𝑑 log መ𝑑) 𝑂 𝑚 log መ𝑑
∆-Stepping Boman Graph Coloring MST BC
Pulli
ng Time 𝑂 𝐿/Δ 𝑙Δ 𝑚/𝑃 + መ𝑑 𝑂 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
De
rive
dstr
aig
htforw
ard
ly
from
BF
S
Work 𝑂 𝐿/Δ 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Pushin
g
Time (CRCW) 𝑂 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
Work (CRCW) 𝑂 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Time (CREW) 𝑂 log መ𝑑 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 log(𝑛) 𝑛2/𝑃
Work (CREW) 𝑂 log መ𝑑 𝑚𝑙Δ 𝑂 𝐿𝑚 log መ𝑑 𝑂(log(𝑛) 𝑛2)
COMPLEXITY ANALYSES
No worries, we won’t go over
all these details here Let’s only see the PageRank
comparisons (others are similar)
spcl.inf.ethz.ch
@spcl_eth
PageRank Triangle Counting BFS
Pulli
ng Time 𝑂 𝐿(𝑚/𝑃 + መ𝑑) 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝐷𝑚)
Pushin
g
Time (CRCW) 𝑂 𝐿 𝑚/𝑃 + መ𝑑 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑 + 𝐷 log 𝑃
Work (CRCW) 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝑚)
Time (CREW) 𝑂 𝐿 log( መ𝑑) 𝑚/𝑃 + መ𝑑 𝑂 log መ𝑑 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 log መ𝑑 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work (CREW) 𝑂 𝐿𝑚 log መ𝑑 𝑂(𝑚𝑑 log መ𝑑) 𝑂 𝑚 log መ𝑑
∆-Stepping Boman Graph Coloring MST BC
Pulli
ng Time 𝑂 𝐿/Δ 𝑙Δ 𝑚/𝑃 + መ𝑑 𝑂 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
De
rive
dstr
aig
htforw
ard
ly
from
BF
S
Work 𝑂 𝐿/Δ 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Pushin
g
Time (CRCW) 𝑂 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
Work (CRCW) 𝑂 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Time (CREW) 𝑂 log መ𝑑 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 log(𝑛) 𝑛2/𝑃
Work (CREW) 𝑂 log መ𝑑 𝑚𝑙Δ 𝑂 𝐿𝑚 log መ𝑑 𝑂(log(𝑛) 𝑛2)
COMPLEXITY ANALYSES
No worries, we won’t go over
all these details here Let’s only see the PageRank
comparisons (others are similar)
#iterations
#edges
#processes
max degree
in a graph
spcl.inf.ethz.ch
@spcl_eth
PageRank Triangle Counting BFS
Pulli
ng Time 𝑂 𝐿(𝑚/𝑃 + መ𝑑) 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝐷𝑚)
Pushin
g
Time (CRCW) 𝑂 𝐿 𝑚/𝑃 + መ𝑑 𝑂 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 𝐷𝑚/𝑃 + 𝐷 መ𝑑 + 𝐷 log 𝑃
Work (CRCW) 𝑂(𝐿𝑚) 𝑂(𝑚 መ𝑑) 𝑂(𝑚)
Time (CREW) 𝑂 𝐿 log( መ𝑑) 𝑚/𝑃 + መ𝑑 𝑂 log መ𝑑 መ𝑑𝑚/𝑃 + መ𝑑2 𝑂 log መ𝑑 𝐷𝑚/𝑃 + 𝐷 መ𝑑
Work (CREW) 𝑂 𝐿𝑚 log መ𝑑 𝑂(𝑚𝑑 log መ𝑑) 𝑂 𝑚 log መ𝑑
∆-Stepping Boman Graph Coloring MST BC
Pulli
ng Time 𝑂 𝐿/Δ 𝑙Δ 𝑚/𝑃 + መ𝑑 𝑂 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
De
rive
dstr
aig
htforw
ard
ly
from
BF
S
Work 𝑂 𝐿/Δ 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Pushin
g
Time (CRCW) 𝑂 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 𝑛2/𝑃
Work (CRCW) 𝑂 𝑚𝑙Δ 𝑂(𝐿𝑚) 𝑂(𝑛2)
Time (CREW) 𝑂 log መ𝑑 𝐿/Δ 𝑙Δ መ𝑑 + 𝑚𝑙Δ/𝑃 𝑂 log መ𝑑 𝐿𝑚/𝑃 + 𝐿 መ𝑑 𝑂 log(𝑛) 𝑛2/𝑃
Work (CREW) 𝑂 log መ𝑑 𝑚𝑙Δ 𝑂 𝐿𝑚 log መ𝑑 𝑂(log(𝑛) 𝑛2)
COMPLEXITY ANALYSES
No worries, we won’t go over
all these details here
Now, some
highlights…
Let’s only see the PageRank
comparisons (others are similar)
#iterations
#edges
#processes
max degree
in a graph
spcl.inf.ethz.ch
@spcl_eth
COMPLEXITY ANALYSES
HIGHLIGHTS
spcl.inf.ethz.ch
@spcl_eth
COMPLEXITY ANALYSES
HIGHLIGHTS
Write conflicts
Pushing entails more write conflicts (must
be resolved with locks or atomics.
spcl.inf.ethz.ch
@spcl_eth
COMPLEXITY ANALYSES
HIGHLIGHTS
Write conflicts
Pushing entails more write conflicts (must
be resolved with locks or atomics.
Atomics/Locks
Pulling removes atomics or locks
completely (TC, PR, BFS, ∆-Stepping,
MST) or it changes the type of
conflicts from to (BC).
spcl.inf.ethz.ch
@spcl_eth
COMPLEXITY ANALYSES
HIGHLIGHTS
Write conflicts
Pushing entails more write conflicts (must
be resolved with locks or atomics.
Atomics/Locks
Pulling removes atomics or locks
completely (TC, PR, BFS, ∆-Stepping,
MST) or it changes the type of
conflicts from to (BC).
Memory accesses
Pulling in traversals (BFS,
BC, SSSP-∆) entails more
time and work.
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TYPES OF MACHINES
CSCS Cray Piz Daint
& Dora
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TYPES OF MACHINES
CSCS Cray Piz Daint
& Dora
spcl.inf.ethz.ch
@spcl_eth
Trivium Intel Server
PERFORMANCE ANALYSIS
TYPES OF MACHINES
CSCS Cray Piz Daint
& Dora
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TYPES OF GRAPHS
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TYPES OF GRAPHS
Synthetic graphs
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TYPES OF GRAPHS
Synthetic graphs
Kronecker [1]
[1] J. Leskovec et al. Kronecker Graphs: An Approach to Modeling Networks. J. Mach. Learn. Research. 2010.
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TYPES OF GRAPHS
Synthetic graphs
Kronecker [1]
[1] J. Leskovec et al. Kronecker Graphs: An Approach to Modeling Networks. J. Mach. Learn. Research. 2010.
[2] P. Erdos and A. Renyi. On the evolution of random graphs. Pub. Math. Inst. Hun. A. Science. 1960.
Erdös-Rényi [2]
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TYPES OF GRAPHSReal-world SNAP graphs [3]
Synthetic graphs
Kronecker [1]
[1] J. Leskovec et al. Kronecker Graphs: An Approach to Modeling Networks. J. Mach. Learn. Research. 2010.
[2] P. Erdos and A. Renyi. On the evolution of random graphs. Pub. Math. Inst. Hun. A. Science. 1960.
[3] https://snap.stanford.edu
Erdös-Rényi [2]
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TYPES OF GRAPHSReal-world SNAP graphs [3]
Synthetic graphs
Kronecker [1]
[1] J. Leskovec et al. Kronecker Graphs: An Approach to Modeling Networks. J. Mach. Learn. Research. 2010.
[2] P. Erdos and A. Renyi. On the evolution of random graphs. Pub. Math. Inst. Hun. A. Science. 1960.
[3] https://snap.stanford.edu
Erdös-Rényi [2]
Road networks
Comm. graphs
Social networks
Purchase networks
Citation graphsWeb graphs
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
COUNTED EVENTS
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
COUNTED EVENTS
Counted PAPI events
Cache misses (L1, L2, L3)
Reads, writes
Branches (conditional, unconditional)
TLB misses (data, instruction)
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
COUNTED EVENTS
Counted PAPI events
Cache misses (L1, L2, L3)
Reads, writes
Branches (conditional, unconditional)
TLB misses (data, instruction)
Other counted events
Issued atomics
Acquired locks
Messages (sent, received)
RMA accesses (reads, writes, atomics)
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Shared-
Memory
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Shared-
Memory
orc ljn rca
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Pushing fasterFewer cache/TLB
missesFewer reads/writes
Shared-
Memory
orc ljn rca
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Pushing fasterFewer cache/TLB
missesFewer reads/writes
Shared-
Memory
orc ljn rca
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Pushing fasterFewer cache/TLB
missesFewer reads/writes
Shared-
Memory
orc ljn rca
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Pushing fasterFewer cache/TLB
missesFewer reads/writes
Shared-
Memory
orc ljn rca
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Pushing fasterFewer cache/TLB
missesFewer reads/writes
Shared-
Memory
orc ljn rca
Frontier-Exploit (FE)
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Pushing fasterFewer cache/TLB
missesFewer reads/writes
Shared-
Memory
orc ljn rca
Frontier-Exploit (FE)
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Pushing fasterFewer cache/TLB
missesFewer reads/writes
Shared-
Memory
orc ljn rca
Frontier-Exploit (FE)
spcl.inf.ethz.ch
@spcl_eth
FE
FEFE
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING
orc, ljn: social networks
rca: road network
Pushing fasterFewer cache/TLB
missesFewer reads/writes
Shared-
Memory
orc ljn rca
Frontier-Exploit (FE)
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING + FE
orc, ljn: social networks
rca: road network
FE: Frontier-Exploit (+
more, check the paper)
Shared-
Memory
FE
FEFE
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING + FE
orc, ljn: social networks
rca: road network
Performance
improvementsFewer iterations
Fewer reads/writes
FE: Frontier-Exploit (+
more, check the paper)
Shared-
Memory
FE
FEFE
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
Before we move to
Distributed-Memory
analyses…
spcl.inf.ethz.ch
@spcl_eth
Before we move to
Distributed-Memory
analyses…
…a brief recap on
Remote Memory Access
(RMA)
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory
Process p
A
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Process p Process q
A
BB
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
Process p Process q
A
BB
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
Process p Process q
A
BB
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
Process p Process q
A
BB
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
Process p Process q
A
BB
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
put
Process p Process q
A
BB
AA
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
put
Process p Process q
A
Bget
B
A
B
A
B
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
put
Process p Process q
A
Bget
B
A
B
flush
A
B
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
put
Process p Process q
A
Bget
B
A
B
flush
A
B
spcl.inf.ethz.ch
@spcl_eth
REMOTE MEMORY ACCESS (RMA) PROGRAMMING
Memory Memory
Cray
BlueWaters
put
Process p Process q
A
Bget
B
A
B
flush
A
B
Pushing/Pulling
done with RMA
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
Distributed
-Memory
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-Memory
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-MemoryMsg-Passing fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-Memory
Pulling incurs
more
communication
while pushing
expensive
underlying
locking
Msg-Passing fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-Memory
Collectives: combines
pushing and pulling
Pulling incurs
more
communication
while pushing
expensive
underlying
locking
Msg-Passing fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
RMA fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
Msg-Passing now incurs
more communication
RMA fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
Msg-Passing now incurs
more communication
Pushing does
not require the
expensive
locking protocol
(Cray offers fast
remote atomics
for integers)
RMA fastest
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
To Push or To Pull?
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
To Push or To Pull?If the complexities
match: pull
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
To Push or To Pull?If the complexities
match: pull
Otherwise: push
spcl.inf.ethz.ch
@spcl_eth
PUSHING VS. PULLING
RESEARCH QUESTIONS
How do they differ in
complexity?
What are push-pull
formulations of other
algorithms?Can we apply the
push-pull dichotomy
to other graph
algorithms? What pushing vs.
pulling really is?
What is performance?
What is the impact of the
programming model?
environment?
Is pushing or pulling
faster? When and why?How effective are
the incorporated
strategies?
To Push or To Pull?If the complexities
match: pull
Otherwise: push
+ check
your
hardware
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
CONCLUSIONS
spcl.inf.ethz.ch
@spcl_eth
Push vs. Pull: Applicability
CONCLUSIONS
spcl.inf.ethz.ch
@spcl_eth
Push vs. Pull: Applicability
CONCLUSIONS
Push vs. Pull: Dichotomy
spcl.inf.ethz.ch
@spcl_eth
Push vs. Pull: Applicability
CONCLUSIONS
Push vs. Pull: Dichotomy
Push vs. Pull: Formulations
spcl.inf.ethz.ch
@spcl_eth
Push vs. Pull: Applicability
CONCLUSIONS
Push vs. Pull:
Complexity
Push vs. Pull: Dichotomy
Push vs. Pull: Formulations
spcl.inf.ethz.ch
@spcl_eth
Push vs. Pull: Applicability
CONCLUSIONS
Push vs. Pull:
ComplexityPerformance
& space analysis +
guidelines
Push vs. Pull: Dichotomy
Push vs. Pull: Formulations
spcl.inf.ethz.ch
@spcl_eth
Push vs. Pull: Applicability
CONCLUSIONS
Push vs. Pull:
ComplexityPerformance
& space analysis +
guidelines
Push vs. Pull: Dichotomy
Push vs. Pull: FormulationsThank you
for your attention
spcl.inf.ethz.ch
@spcl_eth
spcl.inf.ethz.ch
@spcl_eth
Backup slides
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#vertices
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pushing
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pushing
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pulling
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pulling
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pulling
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
GRAPH COLORING
BOMAN ET AL. [1]
: a write conflict
: a read conflict
: integer
[1] E. G. Boman et al. A scalable parallel graph coloring algorithm for distributed memory computers. Euro-Par 2005.
Pulling
We care
explicitly about
partitioning now
#verticesmaximum
#colors
𝑣’s neighbors
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING
orc, pok, ljn: social networks
rca: road network
am: amazon graph
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
Pulling faster
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
Pulling faster
No atomicsFewer cache
misses
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
BOMAN GRAPH COLORING + GRS + FE
orc, ljn: social networks
rca: road network
Performance
improvements Fewer iterations
Fewer reads/writes
GrS+FE: Greedy-Switch
+ Frontier-Exploit
GS: Generic-Switch
Shared-
Memory
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
∆-STEPPING
orc: social network
am: Amazon graph
Shared-
Memory
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
∆-STEPPING
orc: social network
am: Amazon graph
Shared-
Memory
orc am orc
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
∆-STEPPING
orc: social network
am: Amazon graph
Pushing faster
Shared-
Memory
orc am orc
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
∆-STEPPING
orc: social network
am: Amazon graph
Pushing faster
Fewer
reads/writes
Shared-
Memory
orc am orc
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
∆-STEPPING
orc: social network
am: Amazon graph
Pushing faster
Fewer
reads/writes
Shared-
Memory
The larger ∆, the smaller the
difference between pushing
and pulling
orc am orc
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
BORUVKA MST
orc: social network
Shared-
Memory
orc
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
BORUVKA MST
orc: social network
Shared-
Memory
“Find minimum”
orc
“Build merge tree” “Merge”
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
BORUVKA MST
orc: social network
Pushing faster
Shared-
Memory
“Find minimum”
orc
“Build merge tree” “Merge”
Pushing ≈ pullingPulling faster
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
BORUVKA MST
orc: social network
Pushing faster
Shared-
Memory
Pulling is
cumulatively faster
“Find minimum”
orc
“Build merge tree” “Merge”
Pushing ≈ pullingPulling faster
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
BORUVKA MST
orc: social network
Pushing faster
No expensive
write conflicts
Shared-
Memory
Pulling is
cumulatively faster
“Find minimum”
orc
“Build merge tree” “Merge”
Pushing ≈ pullingPulling faster
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Pulling faster in
sparse graphs by
≈3%
Many cache misses
dominate performance
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Pulling faster in
sparse graphs by
≈3%
Many cache misses
dominate performance
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
Pulling faster in
dense graphs by
≈19%
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Pulling faster in
sparse graphs by
≈3%
No atomicsMany cache misses
dominate performance
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
Pulling faster in
dense graphs by
≈19%
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK + PA
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
PA: Partition-Awareness
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK + PA
Fewer atomics (thanks
to PA) and still fewer
cache misses
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
Pushing now faster
in dense graphs by
≈24% PA: Partition-Awareness
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK + PA
Pushing+PA the
slowest for sparse
graphs
Fewer atomics (thanks
to PA) and still fewer
cache misses
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
Pushing now faster
in dense graphs by
≈24% PA: Partition-Awareness
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK + PA
Pushing+PA the
slowest for sparse
graphs
Fewer atomics (thanks
to PA) and still fewer
cache misses
Fewer atomics dominated
by more branches
Shared-
Memory
orc, pok, ljn: social networks
rca: road network
am: amazon graph
Pushing now faster
in dense graphs by
≈24% PA: Partition-Awareness
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
Distributed
-Memory
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-Memory
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-MemoryMsg-Passing fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-Memory
Overheads from buffer
preparation
Msg-Passing fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-Memory
Overheads from buffer
preparation
…but pulling incurs more communication while
pushing expensive underlying locking
Msg-Passing fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-Memory
Collectives: combines
pushing and pulling
Overheads from buffer
preparation
…but pulling incurs more communication while
pushing expensive underlying locking
Msg-Passing fastest
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
PAGERANK
Kronecker graphs
𝑛 = 225, 𝑚 = 227 𝑛 = 227, 𝑚 = 229
Distributed
-Memory
Collectives: combines
pushing and pulling
Overheads from buffer
preparation
…but pulling incurs more communication while
pushing expensive underlying locking
Msg-Passing fastest
𝑂(1)
𝑂((𝑛 መ𝑑)/𝑃)
Storage per process
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
Storage per process
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
RMA fastest
Storage per process
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
Msg-Passing incurs now
more communication
RMA fastest
Storage per process
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
Msg-Passing incurs now
more communication
Pushing does not require the expensive locking
protocol (Cray offers fast remote atomics for integers)
RMA fastest
Storage per process
spcl.inf.ethz.ch
@spcl_eth
PERFORMANCE ANALYSIS
TRIANGLE COUNTING Distributed
-Memory
orc, ljn: social networks
Msg-Passing incurs now
more communication
Pushing does not require the expensive locking
protocol (Cray offers fast remote atomics for integers)
RMA fastest
𝑂( መ𝑑)
Storage per process