Parallel programming with object assemblies

We present Chorus, a high-level parallel programming model suitable for irregular, heap-manipulating applications like mesh refinement and epidemic simulations, and JChorus, an implementation of the model on top of Java. One goal of Chorus is to express the dynamic and instance-dependent patterns of memory access that are common in typical irregular applications. Its other focus is locality of effects: the property that in many of the same applications, typical imperative commands only affect small, local regions in the shared heap. Chorus addresses dynamism and locality through the unifying abstraction of an object assembly: a local region in a shared data structure equipped with a short-lived, speculative thread of control. The thread of control in an assembly can only access objects within the assembly. While objects can migrate from assembly to assembly, such migration is local--i.e., objects only move from one assembly to a neighboring one--and does not lead to aliasing. Programming primitives include a merge operation, by which an assembly merges with an adjacent assembly, and a split operation, which splits an assembly into smaller ones. Our abstractions are race and deadlock-free, and inherently data-centric. We demonstrate that Chorus and JChorus allow natural programming of several important applications exhibiting irregular data-parallelism. We also present an implementation of JChorus based on a many-to-one mapping of assemblies to lower-level threads, and report on preliminary performance numbers.

[1]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[2]  Dieter Jungnickel,et al.  Graphs, Networks, and Algorithms , 1980 .

[3]  Piet Hut,et al.  A hierarchical O(N log N) force-calculation algorithm , 1986, Nature.

[4]  Zvi Galil,et al.  Data structures and algorithms for disjoint set union problems , 1991, CSUR.

[5]  L. Paul Chew,et al.  Guaranteed-quality mesh generation for curved surfaces , 1993, SCG '93.

[6]  Michael Wolfe,et al.  High performance compilers for parallel computing , 1995 .

[7]  Anne Condon,et al.  Parallel implementation of Bouvka's minimum spanning tree algorithm , 1996, Proceedings of International Conference on Parallel Processing.

[8]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

[9]  Pierre Kuonen,et al.  Parallel irregular software for wave propagation simulation , 1998, Future Gener. Comput. Syst..

[10]  Eric de Sturler,et al.  Parallel iterative solvers for irregular sparse matrices in High Performance Fortran , 1998, Future Gener. Comput. Syst..

[11]  Benjamin C. Pierce,et al.  Linearity and the pi-calculus , 1999, TOPL.

[12]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[13]  Keir Fraser,et al.  Language support for lightweight transactions , 2003, SIGP.

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

[15]  James R. Larus,et al.  Software and the Concurrency Revolution , 2005, ACM Queue.

[16]  Philip S. Yu,et al.  Focused community discovery , 2005, Fifth IEEE International Conference on Data Mining (ICDM'05).

[17]  Patrick D. McDaniel,et al.  Analysis of Communities of Interest in Data Networks , 2005, PAM.

[18]  Frank Tip,et al.  Associating synchronization constraints with data in an object-oriented language , 2006, POPL '06.

[19]  Joshua M. Epstein,et al.  Individual-based computational modeling of smallpox epidemic control strategies. , 2006, Academic emergency medicine : official journal of the Society for Academic Emergency Medicine.

[20]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..

[21]  Michael F. Spear,et al.  Privatization techniques for software transactional memory , 2007, PODC '07.

[22]  Keshav Pingali,et al.  Optimistic parallelism requires abstractions , 2007, PLDI '07.

[23]  Edward A. Lee Are new languages necessary for multicore , 2007 .

[24]  Vivek Sarkar,et al.  Type inference for locality analysis of distributed data structures , 2008, PPoPP.

[25]  Alan Mycroft,et al.  Kilim: Isolation-Typed Actors for Java , 2008, ECOOP.

[26]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.

[27]  Einar Broch Johnsen,et al.  Minimal Ownership for Active Objects , 2008, APLAS.

[28]  Keshav Pingali,et al.  Optimistic parallelism benefits from data partitioning , 2008, ASPLOS.

[29]  Keshav Pingali,et al.  How much parallelism is there in irregular applications? , 2009, PPoPP '09.

[30]  Keshav Pingali,et al.  Lonestar: A suite of parallel irregular programs , 2009, 2009 IEEE International Symposium on Performance Analysis of Systems and Software.

[31]  Håkan Grahn,et al.  Transactional memory , 2010, J. Parallel Distributed Comput..

[32]  Till Grüne-Yanoff,et al.  Agent-Based Models as Policy Decision Tools: The Case of Smallpox Vaccination , 2011 .