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 Scholar
Digital Library
- M. Abadi et al. Semantics of transactional memory and automatic mutual exclusion. In POPL, 2008. Google Scholar
Digital Library
- M. Abadi et al. Transactional memory with strong atomicity using off-the-shelf memory protection hardware. In PPoPP, 2009. Google Scholar
Digital Library
- A.-R. Adl-Tabatabai et al. Compiler and runtime support for efficient software transactional memory. In PLDI, 2006. Google Scholar
Digital Library
- Y. Afek et al. Lowering STM overhead with static analysis. In LCPC, 2010. Google Scholar
Digital Library
- M. D. Allen et al. Serialization sets: A dynamic dependence-based parallel execution model. In PPOPP, 2009. Google Scholar
Digital 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 Scholar
Digital Library
- N. E. Beckman et al. Reducing STM overhead with access permissions. In IWACO, 2009. Google Scholar
Digital 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 Scholar
Digital Library
- E. D. Berger et al. Grace: Safe Multithreaded Programming for C/C. In OOPSLA, 2009. Google Scholar
Digital Library
- R. D. Blumofe et al. Cilk: An efficient multithreaded runtime system. PPOPP, 1995. Google Scholar
Digital Library
- R. L. Bocchino et al. A type and effect system for Deterministic Parallel Java. In OOPSLA, 2009. Google Scholar
Digital Library
- R. L. Bocchino et al. Parallel programming must be deterministic by default. In HotPar, 2009. Google Scholar
Digital 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 Scholar
Digital Library
- C. Boyapati et al. Ownership types for safe programming: Preventing data races and deadlocks. In OOPSLA, 2002. Google Scholar
Digital Library
- J. Boyland. Checking interference with fractional permissions. SAS, 2003. Google Scholar
Digital Library
- N. G. Bronson et al. Feedback-directed barrier optimization in a strongly isolated STM. In POPL, 2009. Google Scholar
Digital 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 Scholar
Digital Library
- M. J. Carey et al. A status report on the OO7 OODBMS benchmarking effort. In OOPSLA, 1994. Google Scholar
Digital Library
- L. P. Chew. Guaranteed-quality mesh generation for curved surfaces. In SCG, 1993. Google Scholar
Digital Library
- J. Devietti et al. DMP: Deterministic Shared Memory Multiprocessing. In ASPLOS, 2009. Google Scholar
Digital Library
- D. Dice et al. Transactional locking II. In DISC, 2006. Google Scholar
Digital Library
- C. Flanagan et al. Types for atomicity: Static checking and inference for Java. TOPLAS, 2008. Google Scholar
Digital 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 Scholar
Digital Library
- T. Harris et al. Optimizing memory transactions. In PLDI, 2006. Google Scholar
Digital Library
- T. Harris and K. Fraser. Language support for lightweight transactions. In OOPSLA, 2003. Google Scholar
Digital Library
- B. Jacobs et al. A programming model for concurrent object-oriented programs. TOPLAS, 2008. Google Scholar
Digital Library
- A. Kulkarni et al. Task types for pervasive atomicity. In OOPSLA, 2010. Google Scholar
Digital Library
- M. Kulkarni et al. Optimistic parallelism requires abstractions. In PLDI, 2007. Google Scholar
Digital Library
- J. Larus and R. Rajwar. Transactional Memory (Synthesis Lectures on Computer Architecture). Morgan & Claypool Publishers, 2007. Google Scholar
Digital Library
- E. A. Lee. The problem with threads. Computer, 2006. Google Scholar
Digital Library
- R. Lublinerman et al. Parallel programming with object assemblies. In OOPSLA, 2009. Google Scholar
Digital Library
- M. Martin, C. Blundell, and E. Lewis. Subtleties of transactional memory atomicity semantics. IEEE Comp. Arch. Letters, 5(2):17, 2006. Google Scholar
Digital Library
- N. D. Matsakis and T. R. Gross. A time-aware type system for data-race protection and guaranteed initialization. In OOPSLA, 2010. Google Scholar
Digital Library
- K. F. Moore and D. Grossman. High-level small-step operational semantics for transactions. In POPL, 2008. Google Scholar
Digital Library
- M. Olszewski et al. Kendo: Efficient deterministic multithreading in software. In ASPLOS, 2009. Google Scholar
Digital Library
- C. Papadimitriou. The theory of database concurrency control. Computer Science Press, Inc., 1986. Google Scholar
Digital Library
- M. C. Rinard and M. S. Lam. The design, implementation, and evaluation of Jade. TOPLAS, 1998. Google Scholar
Digital Library
- F. T. Schneider, V. Menon, T. Shpeisman, and A.-R. Adl-Tabatabai. Dynamic optimization for efficient strong atomicity. In OOPSLA, 2008. Google Scholar
Digital Library
- T. Shpeisman et al. Enforcing isolation and ordering in STM. In PLDI, 2007. Google Scholar
Digital 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 Scholar
Digital Library
- A. Welc et al. Safe futures for Java. In OOPSLA, 2005. Google Scholar
Digital Library
- A. Welc et al. Revocation techniques for Java concurrency. Concurrency and Computation: Practice and Experience, 2006. Google Scholar
Digital Library
- R. M. Yoo et al. Kicking the tires of software transactional memory: Why the going gets tough. In SPAA, 2008. Google Scholar
Digital Library
Index Terms
Safe nondeterminism in a deterministic-by-default parallel language
Recommendations
Safe nondeterminism in a deterministic-by-default parallel language
POPL '11: Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesA 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