Implicitly synchronized abstract data types: data structures for modular parallel programming

Programmers use abstract data types to control the complexity of developing serial programs. Abstract data types promote modular programming by encapsulating state and operations on that state. In parallel environments abstract data types must also encapsulate the concurrency generation and synchronization code required for their correct use and present interfaces that require no information about the global concurrency pattern. An abstract data type is said to be implicitly synchronized if it meets these requirements. Implicitly synchronized abstract data types promote modular parallel software and help programmers manage the complexity of developing parallel programs. This paper defines the concept of implicitly synchronized abstract data types and shows how the implicitly parallel language Jade supports their development and use.

[1]  Keshav Pingali,et al.  I-structures: data structures for parallel computing , 1986, Graph Reduction.

[2]  Robert H. Halstead,et al.  Lazy task creation: a technique for increasing the granularity of parallel programs , 1990, LISP and Functional Programming.

[3]  Anoop Gupta,et al.  Data locality and load balancing in COOL , 1993, PPOPP '93.

[4]  Henry M. Levy,et al.  Distributed shared memory with versioned objects , 1992, OOPSLA '92.

[5]  Vaidy S. Sunderam,et al.  PVM: A Framework for Parallel Distributed Computing , 1990, Concurr. Pract. Exp..

[6]  Monica S. Lam,et al.  Jade: a high-level, machine-independent language for parallel programming , 1993, Computer.

[7]  Henri E. Bal,et al.  Orca: A Language For Parallel Programming of Distributed Systems , 1992, IEEE Trans. Software Eng..

[8]  Per Brinch Hansen,et al.  The Architecture of Concurrent Programs , 1977 .

[9]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[10]  Mario Tokoro,et al.  Object-oriented concurrent programming , 1987 .

[11]  Andrew A. Chien,et al.  ICC++—a C++ dialect for high performance parallel computing , 1996, SIAP.

[12]  Roy H. Campbell,et al.  Path PASCAL user manual , 1980, SIGP.

[13]  Jaswinder Pal Singh,et al.  Hierarchical n-body methods and their implications for multiprocessors , 1993 .

[14]  Jyh-Herng Chow,et al.  Compile-time analysis of parallel programs that share memory , 1992, POPL '92.

[15]  Martin Rinard,et al.  The design, implementation and evaluation of Jade: a portable, implicitly parallel programming language , 1994 .

[16]  Andrew A. Chien,et al.  ICC++-AC++ Dialect for High Performance Parallel Computing , 1996, ISOTAS.

[17]  Akinori Yonezawa,et al.  Object-oriented concurrent programming in ABCL/1 , 1986, OOPSLA 1986.

[18]  Monica S. Lam,et al.  An Efficient Shared Memory Layer for Distributed Memory Machines. , 1994 .

[19]  Butler W. Lampson,et al.  Experience with processes and monitors in Mesa , 1980, CACM.

[20]  Barbara Liskov,et al.  Distributed programming in Argus , 1988, CACM.

[21]  James H. Patterson,et al.  Portable Programs for Parallel Processors , 1987 .

[22]  Anoop Gupta,et al.  SPLASH: Stanford parallel applications for shared-memory , 1992, CARN.

[23]  Edward Eric Rothberg,et al.  Exploiting the memory hierarchy in sequential and parallel sparse Cholesky factorization , 1992 .

[24]  Narain H. Gehani,et al.  Capsules: A Shared Memory Access Mechanism for Concurrent C/C++ , 1993, IEEE Trans. Parallel Distributed Syst..

[25]  Pierre America,et al.  Pool-T: a parallel object-oriented language , 1987 .

[26]  C. Tomlinson,et al.  Inheritance and Synchronization with Enabled Sets , 1989, OOPSLA.

[27]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[28]  Reinaldo J. Michelena,et al.  Tomographic string inversion , 1990 .

[29]  P. Brinch-Hansen,et al.  The programming language Concurrent Pascal , 1975 .

[30]  Roy H. Campbell,et al.  An overview of path Pascal's design , 1980, SIGP.

[31]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[32]  Monica S. Lam,et al.  The design and evaluation of a shared object system for distributed memory machines , 1994, OSDI '94.

[33]  R. Pease,et al.  Empirical forms for the electron/atom elastic scattering cross sections from 0 , 1994 .

[34]  P. Pierce,et al.  The NX/2 operating system , 1988, C3P.