D 2 C : Deterministic , Deadlock-free Concurrency

The advent of multicore processors has made concurrent programming languages mandatory. However, most concurrent programming models come with two major pitfalls: non-determinism and deadlocks. By determinism, we mean the output behavior of the program is independent of the scheduling choices (e.g., the operating system) and depends only on the input behavior. A few concurrent programming models provide deterministic behavior by providing constructs that impose additional synchronization, but the improper (or the out of order) use of these constructs leads to problems like deadlocks. In this paper, we argue for both determinism and deadlock-freedom and provide a deterministic, deadlockfree concurrent model. The model can be implemented either as programming language constructs or as a library. Any program that uses this model is guaranteed to produce the same output for a given input. Additionally, the program will never deadlock: the program will either terminate or run for ever.

[1]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[2]  Henry Hoffmann,et al.  StreamIt: A Compiler for Streaming Applications ⁄ , 2002 .

[3]  Vivek Sarkar,et al.  X10: an object-oriented approach to non-uniform cluster computing , 2005, OOPSLA '05.

[4]  Stephen L. Olivier,et al.  UTS: An Unbalanced Tree Search Benchmark , 2006, LCPC.

[5]  Stephen A. Edwards,et al.  SHIM: a deterministic model for heterogeneous embedded systems , 2006, IEEE Trans. Very Large Scale Integr. Syst..

[6]  Stephen A. Edwards,et al.  Programming Shared Memory Multiprocessors with Deterministic Message-Passing Concurrency: Compiling SHIM to Pthreads , 2008, 2008 Design, Automation and Test in Europe.

[7]  Stephen A. Edwards,et al.  A deterministic multi-way rendezvous library for haskell , 2008, 2008 IEEE International Symposium on Parallel and Distributed Processing.

[8]  Stephen A. Edwards,et al.  Static Deadlock Detection for the SHIM Concurrent Language , 2008, 2008 6th ACM/IEEE International Conference on Formal Methods and Models for Co-Design.

[9]  Brandon Lucia,et al.  DMP: deterministic shared memory multiprocessing , 2009, IEEE Micro.

[10]  Vikram S. Adve,et al.  A type and effect system for deterministic parallel Java , 2009, OOPSLA '09.

[11]  Koushik Sen,et al.  Asserting and checking determinism for multithreaded programs , 2009, ESEC/FSE '09.

[12]  Stephen A. Edwards,et al.  Celling SHIM: compiling deterministic concurrency to a heterogeneous multicore , 2009, SAC '09.

[13]  Sarita V. Adve,et al.  Parallel programming must be deterministic by default , 2009 .

[14]  Marek Olszewski,et al.  Kendo: efficient deterministic multithreading in software , 2009, ASPLOS.

[15]  Stephen A. Edwards,et al.  Compositional deadlock detection for rendezvous communication , 2009, EMSOFT '09.

[16]  Stephen A. Edwards,et al.  A Determinizing Compiler , 2009 .

[17]  Stephen A. Edwards,et al.  Determinism Should Ensure Deadlock-Freedom , 2010 .