Fast Parallel Graph-Search with Splittable and Catenable Frontiers
暂无分享,去创建一个
With the increasing processing power of multicore computers, parallel graph search (or graph traversal) using shared memory machines has become increasingly feasible and important. There has been a lot of progress on parallel breadth first search, but this algorithm can be suboptimal in certain applications, such as in reachability, where the level-ordered visit schedule of breadth first search is unnecessary and even sometimes undesirable. The fundamental problems in developing fast parallel graph-search algorithms can be characterized as: (1) the ability to create parallelism as needed, (2) the ability to load balance effectively, and (3) keep overheads low for not just some but all graphs.
In this paper, we present a new \emph{frontier} data structure for representing the work in graph algorithms that solve the aforementioned three challenges, enabling highly efficient and scalable parallel executions. As the primary application of our frontier data structure, we present a parallel (pseudo) depth-first-search based algorithm, prove work efficiency bound for the algorithm, and evaluate its effectiveness empirically. As a secondary application, we consider parallel breadth first search. Our empirical evaluation shows that our parallel DFS algorithm significantly improves over prior work and almost uniformly outperforms parallel BFS.