Abstract
Coordination can destroy scalability in parallel programming. A comprehensive library of scalable synchronization primitives is therefore an essential tool for exploiting parallelism. Unfortunately, such primitives do not easily combine to yield solutions to more complex problems. We demonstrate that a concurrency library based on Fournet and Gonthier's join calculus can provide declarative and scalable coordination. By declarative, we mean that the programmer needs only to write down the constraints of a coordination problem, and the library will automatically derive a correct solution. By scalable, we mean that the derived solutions deliver robust performance both as the number of processors increases, and as the complexity of the coordination problem grows. We validate our claims empirically on seven coordination problems, comparing our generic solution to specialized algorithms from the literature.
- N. Benton. Jingle bells: Solving the Santa Claus problem in Polyphonic C#. Unpublished manuscript, Mar. 2003. URL http://research.microsoft.com/nick/santa.pdf.Google Scholar
- N. Benton, L. Cardelli, and C. Fournet. Modern concurrency abstractions for C#. ACM Transactions on Programming Languages and Systems, 26 (5), Sept. 2004. Google Scholar
Digital Library
- E. W. Dijkstra. Hierarchical ordering of sequential processes. Acta Informatica, 1 (2): 115--138, 1971.Google Scholar
Digital Library
- C. Fournet and G. Gonthier. The reflexive chemical abstract machine and the join-calculus. In ACM SIGPLAN Symposium on Principles of Programming Languages (POPL), 1996. Google Scholar
Digital Library
- C. Fournet and G. Gonthier. The join calculus: a language for distributed mobile programming. In APPSEM Summer School, Caminha, Portugal, Sept. 2000, 2002. Google Scholar
Digital Library
- }Fournet97implicittypingC. Fournet, C. Laneve, L. Maranget, and D. Rémy. Implicit typing à la ML for the join-calculus. In International Conference on Concurrency Theory (CONCUR), 1997. Google Scholar
Digital Library
- C. Fournet, F. Le Fessant, L. Maranget, and A. Schmitt. JoCaml: a language for concurrent distributed and mobile programming. In Advanced Functional Programming, 4th International School, Oxford, Aug. 2002, 2003.Google Scholar
- T. Harris, S. Marlow, S. Peyton-Jones, and M. Herlihy. Composable memory transactions. In ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), 2005. Google Scholar
Digital Library
- M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google Scholar
Digital Library
- M. P. Herlihy and J. M. Wing. Linearizability: a correctness condition for concurrent objects. ACM Transactions on Programming Languages and Systems, 12 (3): 463--492, July 1990. Google Scholar
Digital Library
- G. S. Itzstein and D. Kearney. Join Java: An alternative concurrency semantics for Java. Technical Report ACRC-01-001, University of South Australia, 2001.Google Scholar
- F. Le Fessant and L. Maranget. Compiling join-patterns. In International Workshop on High-Level Concurrent Languages (HLCL), Sept. 1998.Google Scholar
- D. Lea. URL http://gee.cs.oswego.edu/dl/concurrency-interest/.Google Scholar
- D. Lea. A java fork/join framework. In ACM conference on Java, 2000. Google Scholar
Digital Library
- D. Lea. The java.util.concurrent synchronizer framework. Science of Computer Programming, 58 (3): 293 -- 309, 2005. Google Scholar
Digital Library
- Y. Liu, 2009. URL http://channel.sourceforge.net/.Google Scholar
- J. M. Mellor-Crummey and M. L. Scott. Algorithms for scalable synchronization on shared-memory multiprocessors. ACM Transactions on Computer Systems (TOCS), 9 (1): 21--65, February 1991. Google Scholar
Digital Library
- M. M. Michael and M. L. Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In ACM Symposium on Principles of Distributed Computing (PODC), 1996. Google Scholar
Digital Library
- M. M. Michael and M. L. Scott. Nonblocking algorithms and preemption-safe locking on multiprogrammed shared memory multiprocessors. Journal of Parallel and Distributed Computing, 51 (1): 1--26, May 1998. Google Scholar
Digital Library
- M. Moir, V. Luchangco, and N. Shavit. Non-blocking k-compare single swap. In ACM Symposium on Parallelism in Algorithms and Architectures (SPAA), 2003. Google Scholar
Digital Library
- M. Odersky. An overview of functional nets. In APPSEM Summer School, Caminha, Portugal, Sept. 2000, 2002.Google Scholar
- H. Plociniczak and S. Eisenbach. JErlang: Erlang with Joins. In Coordination Models and Languages, 2010. Google Scholar
Digital Library
- J. Reppy, C. V. Russo, and Y. Xiao. Parallel concurrent ml. In ACM SIGPLAN International Conference on Functional Programming (ICFP), 2009. Google Scholar
Digital Library
- C. Russo. The Joins Concurrency Library. In International Symposium on Practical Aspects of Declarative Languages (PADL), 2007. Google Scholar
Digital Library
- C. Russo. Join Patterns for Visual Basic. In ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), 2008. Google Scholar
Digital Library
- W. Scherer, III, D. Lea, and M. L. Scott. A scalable elimination-based exchange channel. In Synchronization and Concurrency in Object-Oriented Languages (SCOOL), 2005.Google Scholar
- W. N. Scherer, III and M. L. Scott. Nonblocking concurrent objects with condition synchronization. In International Symposium on Distributed Computing (DISC), 2004.Google Scholar
- W. N. Scherer, III, D. Lea, and M. L. Scott. Scalable synchronous queues. In ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), 2006. Google Scholar
Digital Library
- N. Shavit and D. Touitou. Software transactional memory. In ACM Symposium on Principles of Distributed Computing (PODC), 1995. Google Scholar
Digital Library
- S. Singh. Higher-order combinators for join patterns using STM. ACM SIGPLAN Workshop on Transactional Computing (TRANSACT), June 2006.Google Scholar
- M. Sulzmann and E. S. L. Lam. Parallel join patterns with guards and propagation. Unpublished manuscript, 2008.Google Scholar
Index Terms
Scalable join patterns
Recommendations
Scalable join patterns
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsCoordination can destroy scalability in parallel programming. A comprehensive library of scalable synchronization primitives is therefore an essential tool for exploiting parallelism. Unfortunately, such primitives do not easily combine to yield ...
Parallel concurrent ML
ICFP '09: Proceedings of the 14th ACM SIGPLAN international conference on Functional programmingConcurrent ML (CML) is a high-level message-passing language that supports the construction of first-class synchronous abstractions called events. This mechanism has proven quite effective over the years and has been incorporated in a number of other ...
Parallel concurrent ML
ICFP '09Concurrent ML (CML) is a high-level message-passing language that supports the construction of first-class synchronous abstractions called events. This mechanism has proven quite effective over the years and has been incorporated in a number of other ...







Comments