The past decade has witnessed an exponential increase in data produced by individuals using various digital technologies. Across every discipline, data sets are getting bigger and more complex, whether one is dealing with medical records, genome sequencing, neural networks in the brain, astrophysics, historical archives, or so-cial networks. Graphs are a natural representation for unstructured data which may or may not be directed, weighted, semantic, and with features on the vertices and edges. Commercial and scientific applications are increasingly using graph algorithms for analytics such as finding shortest paths in a map, PageRank [17] and com-munity detection [15], among others.