# SEARCH

# ISTC-CC NEWSLETTER

# RESEARCH HIGHLIGHTS

Ling Liu's SC13 paper "Large Graph Processing Without the Overhead" featured by HPCwire.

ISTC-CC provides a listing of useful benchmarks for cloud computing.

Another list highlighting Open Source Software Releases.

Second GraphLab workshop should be even bigger than the first! GraphLab is a new programming framework for graph-style data analytics.

# ISTC-CC Abstract

## Parallel Shortest Paths Using Radius Stepping

*SPAA 2016. 28th ACM Symposium on Parallelism in Algorithms and Architectures. Jul 11, 2016 - Jul 13, 2016. Asilomar State Beach, California, USA.*

**Guy Blelloch, Yan Gu, Yihan Sun, Kanat Tangwongsan***

Carnegie Mellon University

* Mahidol University

The single-source shortest path problem (SSSP) with nonnegative edge weights is notoriously difficult to solve efficiently in parallel — it is one of the graph problems said to suffer from the transitive-closure bottleneck. Yet, in practice, the Δ-stepping algorithm of Meyer and Sanders (J. Algorithms, 2003) often works efficiently but has no known theoretical bounds on general graphs. The algorithm takes a sequence of steps, each increasing the radius by an user-specified value Δ. Each step settles the vertices in its annulus but can take Θ(*n*) substeps, each requiring Θ(*m*) work (*n* vertices and *m* edges).

Building on the success of Δ-stepping, this paper describes *Radius-Stepping*, an algorithm with one of the best-known tradeos between work and depth bounds for SSSP with nearly-linear (*Õ*(*m*)) work. The algorithm is a Δ-stepping-like algorithm but uses a variable instead of a fixed-size increase in radii, allowing us to prove a bound on the number of steps. In particular, by using what we define as a vertex k-radius, each step takes at most *k*+2 substeps. Furthermore, we define a (*k*, *ρ*)-graph property and show that if an undirected graph has this property, then the number of steps can be bounded by *O*(*n*/*ρ* ∙ log *ρL*), for a total of O(*kn*/*ρ* ∙ log *ρL*) substeps, each parallel. We describe how to preprocess a graph to have this property. Altogether, for an arbitrary input graph with *n* vertices and *m* edges, *Radius-Stepping*, after preprocessing, takes *O*((*m + nρ*) log *n*) work and *O*(*n*/*ρ* ∙ log *n* log(*ρL*)) depth per source. The preprocessing step takes *O*(*m *log* n + nρ*^{2}) work and *O*(*ρ *log* ρ*) depth, adding no more than *O*(*n**ρ*) edges.

**FULL PAPER: pdf**