Prototyping N-body simulation in Proteus

This paper explores the use of Proteus, an architecture-independent language suitable for prototyping parallel and distributed programs. Proteus is a high-level imperative notation based on sets and sequences with a single construct for the parallel composition of processes communicating through shared memory. Several different parallel algorithms for N-body simulation are presented in Proteus, illustrating how Proteus provides a common foundation for expressing the various parallel programming models. This common foundation allows prototype parallel programs to be tested and evolved without the use of machine-specific languages. To transform prototypes to implementations on specific architectures, program refinement techniques are utilized. Refinement strategies are illustrated that target broad-spectrum parallel intermediate languages, and their viability is demonstrated by refining an N-body algorithm to data-parallel CVL code.<<ETX>>

[1]  Guy E. Blelloch,et al.  Compiling Collection-Oriented Languages onto Massively Parallel Computers , 1990, J. Parallel Distributed Comput..

[2]  Gary Sabot The paralation model - architecture-independent parallel programming , 1988 .

[3]  Richard Cole,et al.  The APRAM: incorporating asynchrony into the PRAM model , 1989, SPAA '89.

[4]  Gul A. Agha,et al.  Concurrent object-oriented programming , 1993, CACM.

[5]  Nicholas Carriero,et al.  Distributed data structures in Linda , 1986, POPL '86.

[6]  Leslie Greengard,et al.  The numerical solution of the N-body problem , 1990 .

[7]  C. A. R. Hoare,et al.  Communicating Sequential Processes (Reprint) , 1983, Commun. ACM.

[8]  John H. Reif,et al.  Prototyping parallel and distributed programs in Proteus , 1991, Proceedings of the Third IEEE Symposium on Parallel and Distributed Processing.

[9]  Andrew W. Appel,et al.  An Efficient Program for Many-Body Simulation , 1983 .

[10]  Douglas R. Smith,et al.  KIDS: A Semiautomatic Program Development System , 1990, IEEE Trans. Software Eng..

[11]  K. Mani Chandy,et al.  An introduction to parallel programming , 1992 .

[12]  Ian Foster,et al.  Strand: New Concepts in Parallel Programming , 1990 .

[13]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[14]  Edmond Schonberg,et al.  Programming with Sets: An Introduction to SETL , 1986 .

[15]  Guy E. Blelloch,et al.  Vcode: a data-parallel intermediate language , 1990, [1990 Proceedings] The Third Symposium on the Frontiers of Massively Parallel Computation.

[16]  G. C. Fox,et al.  Solving Problems on Concurrent Processors , 1988 .

[17]  David B. Skillicorn,et al.  Architecture-independent parallel computation , 1990, Computer.

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