Wait-Free Concurrent Graph Objects with Dynamic Traversals

Graphs are versatile data structures that allow the implementation of a variety of applications, such as computer-aided design and manufacturing, video gaming, or scientific simulations. However, although data structures such as queues, stacks, and trees have been widely studied and implemented in the concurrent context, multi-process applications that rely on graphs still largely use a sequential implementation where accesses are synchronized through the use of global locks or partitioning, thus imposing serious performance bottlenecks. In this paper we introduce an innovative concurrent graph model that provides addition and removal of any edge of the graph, as well as atomic traversals of a part (or the entirety) of the graph. We further present Dense, a concurrent graph implementation that aims at mitigating the two aforementioned implementation drawbacks. Dense achieves wait-freedom by relying on helping and provides the inbuilt capability of performing a partial snapshot on a dynamically determined subset of the graph.

[1]  Marcos K. Aguilera,et al.  A practical scalable distributed B-tree , 2008, Proc. VLDB Endow..

[2]  Erez Petrank,et al.  A methodology for creating fast wait-free data structures , 2012, PPoPP '12.

[3]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[4]  Chung Yung,et al.  A graph-based algorithm of mostly incremental garbage collection for active object systems , 2010, 2010 International Computer Symposium (ICS2010).

[5]  Stephen Taylor,et al.  The concurrent graph: basic technology for irregular problems , 1996, IEEE Parallel Distributed Technol. Syst. Appl..

[6]  Nathan R. Sturtevant,et al.  Real-Time Heuristic Search for Pathfinding in Video Games , 2011 .

[7]  Faith Ellen,et al.  Non-blocking binary search trees , 2010, PODC.

[8]  Timothy L. Harris,et al.  A Pragmatic Implementation of Non-blocking Linked-Lists , 2001, DISC.

[9]  Erez Petrank,et al.  Wait-free linked-lists , 2012, PPoPP '12.

[10]  Erez Petrank,et al.  Wait-free queues with multiple enqueuers and dequeuers , 2011, PPoPP '11.

[11]  Prasad Jayanti,et al.  Logarithmic-Time Single Deleter, Multiple Inserter Wait-Free Queues and Stacks , 2005, FSTTCS.

[12]  Rachid Guerraoui,et al.  On the liveness of transactional memory , 2012, PODC '12.

[13]  Ishfaq Ahmad,et al.  Benchmarking and Comparison of the Task Graph Scheduling Algorithms , 1999, J. Parallel Distributed Comput..

[14]  Danny Hendler,et al.  A Dynamic Elimination-Combining Stack Algorithm , 2011, OPODIS.

[15]  Kurt Mehlhorn,et al.  Weisfeiler-Lehman Graph Kernels , 2011, J. Mach. Learn. Res..

[16]  Sriram Krishnamoorthy,et al.  Solving Large, Irregular Graph Problems Using Adaptive Work-Stealing , 2008, 2008 37th International Conference on Parallel Processing.

[17]  Mohd Shahrizal Sunar,et al.  A Comprehensive Study on Pathfinding Techniques for Robotics and Video Games , 2015, Int. J. Comput. Games Technol..

[18]  Keshav Pingali,et al.  Elixir: a system for synthesizing concurrent graph programs , 2012, OOPSLA '12.

[19]  Maurice Herlihy,et al.  A Methodology for Implementing Highly Concurrent Data Objects , 1992, OPSR.

[20]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[21]  Panagiota Fatourou,et al.  Algorithmic Techniques in STM Design , 2015, Transactional Memory.

[22]  Philippas Tsigas,et al.  Efficient lock-free binary search trees , 2014, PODC '14.

[23]  Anthony Stentz,et al.  Global planning on the Mars Exploration Rovers: Software integration and surface testing , 2009, J. Field Robotics.

[24]  Maurice Herlihy,et al.  A methodology for implementing highly concurrent data objects , 1993, TOPL.

[25]  Frank M. Johannes Partitioning of VLSI circuits and systems , 1996, DAC '96.

[26]  Nir Shavit,et al.  Scalable Flat-Combining Based Synchronous Queues , 2010, DISC.

[27]  Marina Papatriantafilou,et al.  A Consistency Framework for Iteration Operations in Concurrent Data Structures , 2015, 2015 IEEE International Parallel and Distributed Processing Symposium.

[28]  Nir Shavit,et al.  A scalable lock-free stack algorithm , 2010, J. Parallel Distributed Comput..

[29]  Erez Petrank,et al.  Lock-Free Data-Structure Iterators , 2013, DISC.

[30]  Martin Odersky,et al.  Concurrent tries with efficient non-blocking snapshots , 2012, PPoPP '12.

[31]  Faith Ellen,et al.  A general technique for non-blocking trees , 2014, PPoPP '14.

[32]  Rachid Guerraoui,et al.  Partial snapshot objects , 2008, SPAA '08.

[33]  Panagiota Fatourou,et al.  Highly-Efficient Wait-Free Synchronization , 2013, Theory of Computing Systems.

[34]  Keshav Pingali,et al.  Synthesizing concurrent schedulers for irregular algorithms , 2011, ASPLOS XVI.

[35]  Nir Shavit,et al.  Atomic snapshots of shared memory , 1990, JACM.

[36]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[37]  William N. Scherer,et al.  Scalable synchronous queues , 2006, PPoPP '06.

[38]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[39]  Maged M. Michael,et al.  Simple, fast, and practical non-blocking and blocking concurrent queue algorithms , 1996, PODC '96.

[40]  Michel Raynal,et al.  Help When Needed, But No More: Efficient Read/Write Partial Snapshot , 2009, DISC.