Département Informatique

Computer Science Department of Telecom SudParis

Non-blocking Dynamic Unbounded Graphs with Worst-case Amortized Bounds

Team work: Muktikanta Sa presented "Non-blocking Dynamic Unbounded Graphs with Worst-case Amortized Bounds" (OPODIS'21) at 4A312 the 10/12/2021 at 10h30.


Today's applications, in particular, the analytics tasks based on graph algorithms in domains such as blockchains, social networks, biological networks, and several others, demand real-time data updates at high speed. The real-time updates are efficiently ingested if the data structure naturally supports dynamic addition and removal of both edges and vertices. These dynamic updates are best facilitated by concurrency in the underlying data structure. Unfortunately, the current dynamic graph frameworks broadly refurbish the static processing models using approaches such as versioning and incremental computation. Consequently, they carry their original design traits such as high memory footprint and batch processing that do not honor the real-time changes. At the same time, multi-core processors--a natural setting for concurrent data structures--are now commonplace, and the analytics tasks are moving closer to data sources over lightweight devices. Thus, exploring a fresh design approach for real-time graph analytics is significant. This paper reports a novel concurrent graph data structure that provides breadth-first search, single-source shortest-path, and betweenness centrality with concurrent dynamic updates of both edges and vertices. We evaluate the proposed data structure theoretically--by an amortized analysis--and experimentally via a C++ implementation. The experimental results show that (a) our algorithm outperforms the current state-of-the-art by a throughput speed-up of up to three orders of magnitude in several cases, and (b) it offers up to 80x lighter memory-footprint compared to existing counterpart. The experiments include several counterparts: Stinger, Ligra and GraphOne. We prove that the presented concurrent algorithms are non-blocking and linearizable.