Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improve graph primitives performance on graphs with widely varying ve…
…rtex degrees (#1447) Partially addresses Issue #1442 Update graph primitives used by PageRank, Katz Centrality, BFS, and SSSP to launch 3 different kernels based on vertex degrees to address thread divergence issue. In addition, cut memory footprint of the VertexFrontier class used by BFS & SSSP. The following highlights performance improvement with this optimization. R-mat 2^25 vertices 2^25 * 32 edges PageRank: 7.66, 7.42, 8.83, 8.83 seconds (the first two unweighted, the last two weighted, first & third without personalization)=> 1.07, 1.08, 1.36, 1.39 seconds Katz: 1.08, 1.94 seconds (unweighted, weighted)=> 0.243, 0.275 BFS: 1.32 seconds=> 0.251 R-mat 2^25 vertices 2^25 * 16 edges SSSP: 1.89 seconds (memory allocation fails with the edge factor of 32)=> 0.317 And now SSSP also works with 2^25 vertices 2^25 * 32 edges with the memory footprint improvement and it took 0.514 sec. Still needs additional optimizations to reach the target performance 1. add BFS & SSSP specific optimizations (the current implementation assumes general reduction operations while BFS can pick any source vertex if a vertex is discovered by multiple source vertices and SSSP picks the one with the minimum edge weight, these pure function reduction operations allow additional optimizations). 2. Launch 3 different kernels in multiple streams to recover parallelism when the frontier size is relatively small (currently three kernels are queued in a single stream, and this leads to up to 3x decrease in parallelism) Authors: - Seunghwa Kang (https://github.com/seunghwak) Approvers: - Alex Fender (https://github.com/afender) - Chuck Hastings (https://github.com/ChuckHastings) - Brad Rees (https://github.com/BradReesWork) URL: #1447
- Loading branch information