AMPL: Design, Implementation, and Evaluation of a Multiprocessing Language

Abstract : AMPL is an experimental high-level language for expressing parallel algorithms which involve many interdependent and cooperating tasks. AMPL is a strongly-typed language in which all inter-process communication takes place via message passing. The language has been implemented on the Cm multiprocessor, and a number of programs have been written to perforrm numeric and symbolic computation. In this eport, the design decisions relating to process communication primitives are discussed, and AMPL is compared to several other languages for parallel processing. The implementation of message passing, process creation, and parallel garbage collection are described. Measurements of several AMPL programs are used to study the effects of language design decisions upon program performance and algorithm design.

[1]  Henry G. Baker,et al.  List processing in real time on a serial computer , 1978, CACM.

[2]  Jan van den Bos,et al.  Process Communication Based on Input Specifications , 1981, TOPL.

[3]  Niklaus Wirth Design and implementation of modula , 1977, Softw. Pract. Exp..

[4]  Robert P. Cook,et al.  *MOD—A Language for Distributed Programming , 1980, IEEE Transactions on Software Engineering.

[5]  T. Bloom SYNCHRONIZATION MECHANISMS FOR MODULAR PROGRAMMING LANGUAGE , 1979 .

[6]  John K. Ousterhout,et al.  Medusa: An experiment in distributed operating system structure (Summary) , 1979, SOSP '79.

[7]  W. Morven Gentleman,et al.  Message passing between sequential processes: The reply primitive and the administrator concept , 1981, Softw. Pract. Exp..

[8]  Per Brinch Hansen,et al.  Distributed processes: a concurrent programming concept , 1978, CACM.

[9]  Karsten Schwan,et al.  StarOS, a multiprocessor operating system for the support of task forces , 1979, SOSP '79.

[10]  Edward F. Gehringer,et al.  The Cm* Multiprocessor Project: A Research Review , 1980 .

[11]  Richard F. Rashid An Inter-Process Communication Facility for UNIX , 1980 .

[12]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[13]  George G. Robertson,et al.  Accent: A communication oriented network operating system kernel , 1981, SOSP.

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

[15]  Robert E. Noonan Structured programming and formal specification , 1975, IEEE Transactions on Software Engineering.

[16]  David R. Cheriton,et al.  Thoth, a portable real-time operating system , 1979, CACM.

[17]  David Lorge Parnas,et al.  Use of the concept of transparency in the design of hierarchically structured systems , 1975, CACM.

[18]  Bruce Jay Nelson Remote procedure call , 1981 .

[19]  Carl Hewitt,et al.  Synchronization in actor systems , 1977, POPL.

[20]  H. T. Kung,et al.  An efficient parallel garbage collection system and ITS correctness proof , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[21]  Edsger W. Dijkstra,et al.  Finding the Correctness Proof of a Concurrent Program , 1978, International Symposium on Mathematical Foundations of Computer Science.

[22]  Leslie Lamport,et al.  On-the-fly garbage collection: an exercise in cooperation , 1975, CACM.

[23]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[24]  Richard James Swan The switching structure and addressing architecture of an extensible multiprocessor: cm*. , 1978 .

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