Branch-Avoiding Graph Algorithms
Oded Green, Marat Dukhan, Richard Vuduc

TL;DR
This paper investigates how branch mispredictions significantly hinder graph algorithm performance and proposes branch-avoiding implementations for BFS and connected components, demonstrating notable efficiency gains on modern processors.
Contribution
It introduces branch-avoiding algorithms for BFS and connected components, showing how avoiding branches improves performance on current hardware.
Findings
Branch mispredictions can reduce performance by 30-50%.
Branch-avoiding implementations outperform traditional ones on x86 and ARM.
Insights can guide compiler and architecture optimizations for graph processing.
Abstract
This paper quantifies the impact of branches and branch mispredictions on the single-core performance for two classes of graph problems. Specifically, we consider classical algorithms for computing connected components and breadth-first search (BFS). We show that branch mispredictions are costly and can reduce performance by as much as 30%-50%. This insight suggests that one should seek graph algorithms and implementations that avoid branches. As a proof-of-concept, we devise such implementations for both the classic top-down algorithm for BFS and the Shiloach-Vishkin algorithm for connected components. We evaluate these implementations on current x86 and ARM-based processors to show the efficacy of the approach. Our results suggest how both compiler writers and architects might exploit this insight to improve graph processing systems more broadly and create better systems for such…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
