Supporting dynamic data structures on distributed-memory machines

Compiling for distributed-memory machines has been a very active research area in recent years. Much of this work has concentrated on programs that use arrays as their primary data structures. To date, little work has been done to address the problem of supporting programs that use pointer-based dynamic data structures. The techniques developed for supporting SPMD execution of array-based programs rely on the fact that arrays are statically defined and directly addressable. Recursive data structures do not have these properties, so new techniques must be developed. In this article, we describe an execution model for supporting programs that use pointer-based dynamic data structures. This model uses a simple mechanism for migrating a thread of control based on the layout of heap-allocated data and introduces parallelism using a technique based on futures and lazy task creation. We intend to exploit this execution model using compiler analyses and automatic parallelization techniques. We have implemented a prototype system, which we call Olden, that runs on the Intel iPSC/860 and the Thinking Machines CM-5. We discuss our implementation and report on experiments with five benchmarks.

[1]  Eric A. Brewer,et al.  PRELUDE: A System for Portable Parallel Software , 1992, PARLE.

[2]  Daniel G. Bobrow,et al.  A model and stack implementation of multiple environments , 1973, CACM.

[3]  Alexandru Nicolau,et al.  Parallelizing Programs with Recursive Data Structures , 1989, IEEE Trans. Parallel Distributed Syst..

[4]  Alexandru Nicolau,et al.  Abstractions for recursive pointer data structures: improving the analysis and transformation of imperative programs , 1992, PLDI '92.

[5]  Rita Loogen,et al.  A New Stack Technique for the Management of Runtime Structures in Distributed Implementations , 1993 .

[6]  Charles Howard Koelbel,et al.  Compiling programs for nonshared memory machines , 1991 .

[7]  C CarlisleMartin,et al.  Supporting dynamic data structures on distributed-memory machines , 1995 .

[8]  James R. Larus,et al.  Fine-grain access control for distributed shared memory , 1994, ASPLOS VI.

[9]  Michael Gerndt,et al.  SUPERB: A tool for semi-automatic MIMD/SIMD parallelization , 1988, Parallel Comput..

[10]  Andrew A. Chien,et al.  Experience with CST: programming and implementation , 1989, PLDI '89.

[11]  James R. Larus,et al.  Restructuring symbolic programs for concurrent execution on multiprocessors , 1989 .

[12]  Andrew P. Black,et al.  Fine-grained mobility in the Emerald system , 1987, TOCS.

[13]  Parag A. Pathak,et al.  Massachusetts Institute of Technology , 1964, Nature.

[14]  Anne Rogers,et al.  Supporting SPMD Execution for Dynamic Data Structures , 1992, LCPC.

[15]  Michael Gerndt,et al.  Automatic parallelization for distributed-memory multiprocessing systems , 1989 .

[16]  Henri E. Bal,et al.  Object distribution in Orca using Compile-Time and Run-Time techniques , 1993, OOPSLA '93.

[17]  Andrea C. Arpaci-Dusseau,et al.  Parallel programming in Split-C , 1993, Supercomputing '93. Proceedings.

[18]  Monica S. Lam,et al.  Communication optimization and code generation for distributed memory machines , 1993, PLDI '93.

[19]  R. Gupta,et al.  SPMD execution of programs with dynamic data structures on distributed memory machines , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[20]  Anne Rogers,et al.  Process decomposition through locality of reference , 1989, PLDI '89.

[21]  Seth Copen Goldstein,et al.  Active Messages: A Mechanism for Integrated Communication and Computation , 1992, [1992] Proceedings the 19th Annual International Symposium on Computer Architecture.

[22]  T. von Eicken,et al.  Parallel programming in Split-C , 1993, Supercomputing '93.

[23]  Monica S. Lam,et al.  Global optimizations for parallelism and locality on scalable parallel machines , 1993, PLDI '93.

[24]  Andrew A. Chien,et al.  The concert system--compiler and runtime support for efficient, fine-grained concurrent object-oriented programs , 1993 .

[25]  V. Karamcheti,et al.  Concert-efficient runtime support for concurrent object-oriented programming languages on stock hardware , 1993, Supercomputing '93.

[26]  Wilson C. Hsieh,et al.  Computation migration: enhancing locality for distributed-memory parallel systems , 1993, PPOPP '93.

[27]  Jeffrey S. Chase,et al.  The Amber system: parallel programming on a network of multiprocessors , 1989, SOSP '89.

[28]  Ken Kennedy,et al.  Automatic translation of FORTRAN programs to vector form , 1987, TOPL.

[29]  Andrew W. Appel,et al.  Virtual memory primitives for user programs , 1991, ASPLOS IV.

[30]  Christopher W. Fraser,et al.  A Retargetable C Compiler: Design and Implementation , 1995 .

[31]  I.S. Khalil,et al.  Decentralized optimal power pricing: the development of a parallel program , 1993, IEEE Parallel & Distributed Technology: Systems & Applications.

[32]  James R. Larus,et al.  Restructuring Lisp programs for concurrent execution , 1988, PPEALS '88.

[33]  Alexandru Nicolau,et al.  Intererence analysis tools for parallelizing programs with recursive data structures , 1989, ICS '89.

[34]  Alexandru Nicolau,et al.  Adaptive Bitonic Sorting: An Optimal Parallel Algorithm for Shared-Memory Machines , 1989, SIAM J. Comput..

[35]  Richard M. Karp,et al.  Probabilistic Analysis of Partitioning Algorithms for the Traveling-Salesman Problem in the Plane , 1977, Math. Oper. Res..

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

[37]  James R. Larus,et al.  Compiling lisp programs for parallel execution , 1990, LISP Symb. Comput..

[38]  Paul Hudak,et al.  Para-functional programming: a paradigm for programming multiprocessor systems , 1986, POPL '86.

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

[40]  Anne Rogers,et al.  Early Experiences with Olden , 1993, LCPC.

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

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

[43]  James R. Larus,et al.  Detecting conflicts between structure accesses , 1988, PLDI '88.

[44]  Thomas Rauber,et al.  Automatic Parallelization for Distributed Memory Multiprocessors , 1994, Automatic Parallelization.

[45]  Rishiyur S. Nikhil,et al.  Cid: A Parallel, "Shared-Memory" C for Distributed-Memory Machines , 1994, LCPC.

[46]  Ken Kennedy,et al.  Compiler optimizations for Fortran D on MIMD distributed-memory machines , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).