1: \begin{abstract}
2: Iterative graph algorithms often compute intermediate
3: values and update them as computation progresses.
4: Updated output values are used as inputs for computations in current or subsequent iterations;
5: hence the number of iterations required for values to converge can potentially reduce
6: if the newest values are asynchronously made
7: available to other updates computed in the same iteration.
8: In a multi-threaded shared memory system, the immediate propagation of updated values can cause
9: memory contention that may offset the benefit of propagating updates sooner.
10: In some cases, the benefit of a smaller number of iterations may be
11: diminished by each iteration taking longer.
12: Our key idea is to combine the low memory contention that synchronous approaches have
13: with the faster information sharing of asynchronous approaches.
14: Our hybrid approach buffers updates from threads locally before committing
15: them to the global store to control how often threads may cause conflicts for others
16: while still sharing data within one iteration and hence speeding convergence.
17: On a 112-thread CPU system, our hybrid approach attains up to
18: 4.5\% - 19.4\% speedup over an asynchronous approach for Pagerank
19: and up to 1.9\% - 17\% speedup over asynchronous Bellman Ford SSSP.
20: Further, our hybrid approach attains 2.56x better performance than the synchronous approach.
21: Finally, we provide insights as to why delaying updates is not helpful on certain graphs
22: where connectivity is clustered on the main diagonal of the adjacency matrix.
23: \end{abstract}
24: