ABSTRACT
A number of deterministic parallel programming models with strong safety guarantees are emerging, but similar support for nondeterministic algorithms, such as branch and bound search, remains an open question. We present a language together with a type and effect system that supports nondeterministic computations with a deterministic-by-default guarantee: nondeterminism must be explicitly requested via special parallel constructs (marked nd), and any deterministic construct that does not execute any nd construct has deterministic input-output behavior. Moreover, deterministic parallel constructs are always equivalent to a sequential composition of their constituent tasks, even if they enclose, or are enclosed by, nd constructs. Finally, in the execution of nd constructs, interference may occur only between pairs of accesses guarded by atomic statements, so there are no data races, either between atomic statements and unguarded accesses (strong isolation) or between pairs of unguarded accesses (stronger than strong isolation alone). We enforce the guarantees at compile time with modular checking using novel extensions to a previously described effect system. Our effect system extensions also enable the compiler to remove unnecessary transactional synchronization. We provide a static semantics, dynamic semantics, and a complete proof of soundness for the language, both with and without the barrier removal feature. An experimental evaluation shows that our language can achieve good scalability for realistic parallel algorithms, and that the barrier removal techniques provide significant performance gains.
Supplemental Material
- http://iss.ices.utexas.edu/lonestar/.Google Scholar
- http://gee.cs.oswego.edu/dl/concurrency-interest.Google Scholar
- http://http://sites.google.com/site/deucestm.Google Scholar
- OpenMP Application Program Interface, Version 3.0. http://www.openmp.org/mp-documents/spec30.pdf, 2008.Google Scholar
- M. Abadi et al. Types for safe locking: Static race detection for Java. TOPLAS, 2006. Google ScholarDigital Library
- M. Abadi et al. Semantics of transactional memory and automatic mutual exclusion. In POPL, 2008. Google ScholarDigital Library
- M. Abadi et al. Transactional memory with strong atomicity using off-the-shelf memory protection hardware. In PPoPP, 2009. Google ScholarDigital Library
- A.-R. Adl-Tabatabai et al. Compiler and runtime support for efficient software transactional memory. In PLDI, 2006. Google ScholarDigital Library
- Y. Afek et al. Lowering STM overhead with static analysis. In LCPC, 2010. Google ScholarDigital Library
- M. D. Allen et al. Serialization sets: A dynamic dependence-based parallel execution model. In PPOPP, 2009. Google ScholarDigital Library
- A. Aviram et al. Efficient system-enforced deterministic parallelism. 2010.Google Scholar
- N. E. Beckman et al. Verifying correct usage of atomic blocks and typestate. In OOPSLA, 2008. Google ScholarDigital Library
- N. E. Beckman et al. Reducing STM overhead with access permissions. In IWACO, 2009. Google ScholarDigital Library
- T. Bergan et al. CoreDet: A compiler and runtime system for deterministic multithreaded execution. In Int'l. Conf. on Arch. Support for Programming Langs. and Operating Systs. (ASPLOS), 2010. Google ScholarDigital Library
- E. D. Berger et al. Grace: Safe Multithreaded Programming for C/C. In OOPSLA, 2009. Google ScholarDigital Library
- R. D. Blumofe et al. Cilk: An efficient multithreaded runtime system. PPOPP, 1995. Google ScholarDigital Library
- R. L. Bocchino et al. A type and effect system for Deterministic Parallel Java. In OOPSLA, 2009. Google ScholarDigital Library
- R. L. Bocchino et al. Parallel programming must be deterministic by default. In HotPar, 2009. Google ScholarDigital Library
- R. L. Bocchino Jr. An Effect System and Language for Deterministic-by-Default Parallel Programming. PhD thesis, University of Illinois, Urbana-Champaign, IL, 2010. Google ScholarDigital Library
- C. Boyapati et al. Ownership types for safe programming: Preventing data races and deadlocks. In OOPSLA, 2002. Google ScholarDigital Library
- J. Boyland. Checking interference with fractional permissions. SAS, 2003. Google ScholarDigital Library
- N. G. Bronson et al. Feedback-directed barrier optimization in a strongly isolated STM. In POPL, 2009. Google ScholarDigital Library
- Z. Budimlic et al. Multi-core implementations of the concurrent collections programming model. In CPC, 2009.Google Scholar
- S. Burckhardt et al. Concurrent programming with revisions and isolation types. In OOPSLA, 2010. Google ScholarDigital Library
- M. J. Carey et al. A status report on the OO7 OODBMS benchmarking effort. In OOPSLA, 1994. Google ScholarDigital Library
- L. P. Chew. Guaranteed-quality mesh generation for curved surfaces. In SCG, 1993. Google ScholarDigital Library
- J. Devietti et al. DMP: Deterministic Shared Memory Multiprocessing. In ASPLOS, 2009. Google ScholarDigital Library
- D. Dice et al. Transactional locking II. In DISC, 2006. Google ScholarDigital Library
- C. Flanagan et al. Types for atomicity: Static checking and inference for Java. TOPLAS, 2008. Google ScholarDigital Library
- A. Ghuloum et al. Ct: A flexible parallel programming model for tera-scale architectures. Intel White Paper, 2007.Google Scholar
- T. Harris et al. Composable memory transactions. In PPoPP, 2005. Google ScholarDigital Library
- T. Harris et al. Optimizing memory transactions. In PLDI, 2006. Google ScholarDigital Library
- T. Harris and K. Fraser. Language support for lightweight transactions. In OOPSLA, 2003. Google ScholarDigital Library
- B. Jacobs et al. A programming model for concurrent object-oriented programs. TOPLAS, 2008. Google ScholarDigital Library
- A. Kulkarni et al. Task types for pervasive atomicity. In OOPSLA, 2010. Google ScholarDigital Library
- M. Kulkarni et al. Optimistic parallelism requires abstractions. In PLDI, 2007. Google ScholarDigital Library
- J. Larus and R. Rajwar. Transactional Memory (Synthesis Lectures on Computer Architecture). Morgan & Claypool Publishers, 2007. Google ScholarDigital Library
- E. A. Lee. The problem with threads. Computer, 2006. Google ScholarDigital Library
- R. Lublinerman et al. Parallel programming with object assemblies. In OOPSLA, 2009. Google ScholarDigital Library
- M. Martin, C. Blundell, and E. Lewis. Subtleties of transactional memory atomicity semantics. IEEE Comp. Arch. Letters, 5(2):17, 2006. Google ScholarDigital Library
- N. D. Matsakis and T. R. Gross. A time-aware type system for data-race protection and guaranteed initialization. In OOPSLA, 2010. Google ScholarDigital Library
- K. F. Moore and D. Grossman. High-level small-step operational semantics for transactions. In POPL, 2008. Google ScholarDigital Library
- M. Olszewski et al. Kendo: Efficient deterministic multithreading in software. In ASPLOS, 2009. Google ScholarDigital Library
- C. Papadimitriou. The theory of database concurrency control. Computer Science Press, Inc., 1986. Google ScholarDigital Library
- M. C. Rinard and M. S. Lam. The design, implementation, and evaluation of Jade. TOPLAS, 1998. Google ScholarDigital Library
- F. T. Schneider, V. Menon, T. Shpeisman, and A.-R. Adl-Tabatabai. Dynamic optimization for efficient strong atomicity. In OOPSLA, 2008. Google ScholarDigital Library
- T. Shpeisman et al. Enforcing isolation and ordering in STM. In PLDI, 2007. Google ScholarDigital Library
- M. Vakilian et al. Inferring Method Effect Summaries for Deterministic Parallel Java. Technical Report UIUCDCS-R-2009-3038, U. Illinois, 2009.Google Scholar
- C. von Praun et al. Implicit parallelism with ordered transactions. In PPOPP, 2007. Google ScholarDigital Library
- A. Welc et al. Safe futures for Java. In OOPSLA, 2005. Google ScholarDigital Library
- A. Welc et al. Revocation techniques for Java concurrency. Concurrency and Computation: Practice and Experience, 2006. Google ScholarDigital Library
- R. M. Yoo et al. Kicking the tires of software transactional memory: Why the going gets tough. In SPAA, 2008. Google ScholarDigital Library
Index Terms
- Safe nondeterminism in a deterministic-by-default parallel language
Recommendations
Safe nondeterminism in a deterministic-by-default parallel language
POPL '11A number of deterministic parallel programming models with strong safety guarantees are emerging, but similar support for nondeterministic algorithms, such as branch and bound search, remains an open question. We present a language together with a type ...
STM systems: enforcing strong isolation between transactions and non-transactional code
ICA3PP'12: Proceedings of the 12th international conference on Algorithms and Architectures for Parallel Processing - Volume Part ITransactional memory (TM) systems implement the concept of an atomic execution unit called transaction in order to discharge programmers from explicit synchronization management. But when shared data is atomically accessed by both transaction and non-...
The tasks with effects model for safe concurrency
PPoPP '13Today's widely-used concurrent programming models either provide weak safety guarantees, making it easy to write code with subtle errors, or are limited in the class of programs that they can express. We propose a new concurrent programming model based ...
Comments