A system for parallel programming

The programming of efficient parallel software typically requires extensive experimentation with program prototypes. A programming system that supports rapid prototyping of parallel programs should provide high-level primitives with which programs can be explicitly, statically or dynamically tuned with respect to performance and reliability. When using such primitives, programmers should not need to interact explicitly or even be aware of the software tools involved in program construction and tuning, such as compilers, linkers, and loaders. In addition, programmers should be provided with the information about the executing program and the parallel hardware required for tuning. Such information may include monitoring data about the current or previous program or even hints regarding appropriate tuning decisions. A programming system that includes primitives and tools for program tuning is presented in this paper. The system has been implemented, and has been tested with a variety of parallel applications on a network of Unix workstations.

[1]  E. F. Codd,et al.  A relational model of data for large shared data banks , 1970, CACM.

[2]  Peter H. Feiler,et al.  An Incremental Programming Environment , 1981, IEEE Transactions on Software Engineering.

[3]  Karsten Schwan,et al.  TASK Forces: Distributed Software for Solving Problems of Substantial Size , 1979, ICSE.

[4]  Peter M. Schwarz,et al.  Experience Using Multiprocessor Systems—A Status Report , 1980, CSUR.

[5]  John K. Ousterhout Scheduling Techniques for Concurrebt Systems. , 1982, ICDCS 1982.

[6]  Robert M. Ayers,et al.  Experience with Traits in the Xerox Star Workstation , 1984, IEEE Transactions on Software Engineering.

[7]  Andrew P. Black,et al.  The Eden System: A Technical Review , 1985, IEEE Transactions on Software Engineering.

[8]  David R. Barstow,et al.  Interactive programming environments , 1984, SOEN.

[9]  Jack C. Wileden,et al.  A description scheme to aid the design of collections of concurrent processes , 1978, AFIPS National Computer Conference.

[10]  Jerome A. Feldman,et al.  High level programming for distributed computing , 1979, CACM.

[11]  Edward F. Gehringer,et al.  The Cm* Testbed , 1982, Computer.

[12]  David Notkin The GANDALF project , 1985, J. Syst. Softw..

[13]  Ralf Steinbrüggen,et al.  Program Transformation Systems , 1983, CSUR.

[14]  Richard T. Snodgrass,et al.  Monitoring in a software development environment: A relational approach , 1984, SDE 1.

[15]  Wesley W. Chu,et al.  Task Allocation in Distributed Data Processing , 1980, Computer.

[16]  Willy Zwaenepoel,et al.  Distributed process groups in the V Kernel , 1985, TOCS.

[17]  K Schwan,et al.  Graphical views of parallel programs , 1986, SOEN.

[18]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

[19]  Karsten Schwan Tailoring software for multiple processor systems , 1985 .

[20]  David Alex Lamb Sharing intermediate representations: the interface description language , 1983 .

[21]  Jack C. Wileden,et al.  Languages for representing software specifications and designs , 1978, SOEN.

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

[23]  Robert Balzer,et al.  A 15 Year Perspective on Automatic Programming , 1985, IEEE Transactions on Software Engineering.

[24]  Karsten Schwan,et al.  Automating Resource Allocation for the Cm* Multiprocessor , 1985, ICDCS.

[25]  Thomas J. LeBlanc,et al.  Hierarchical Process Composition in Distributed Operating Systems , 1985, ICDCS.

[26]  Elaine Kant,et al.  Understanding and Automating Algorithm Design , 1985, IEEE Transactions on Software Engineering.

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

[28]  Alexander V. Veidenbaum,et al.  EFFECTS OF PROGRAM RESTRUCTURING, ALGORITHM CHANGE, AND ARCHITECTURE CHOICE ON PROGRAM PERFORMANCE. , 1984 .

[29]  Guy T. Almes,et al.  The Impact of Language and System on Remote Procedure Call Design , 1986, ICDCS.

[30]  Walter F. Tichy Software Development Control Based On System Structure Description , 1980 .

[31]  John A. Stankovic,et al.  An Adaptive Bidding Algorithm For Processes, Clusters and Distributed Groups , 1984, ICDCS.

[32]  John K. Ousterhout,et al.  Scheduling Techniques for Concurrent Systems , 1982, ICDCS.

[33]  Toby Bloom,et al.  Dynamic module replacement in a distributed programming system , 1983 .

[34]  Karsten Schwan,et al.  A High-Performance, Object-Based Operating System for Real-Time, Robotics Applications , 1986, RTSS.

[35]  Karsten Schwan,et al.  Flexible software development for multiple computer systems , 1986, IEEE Transactions on Software Engineering.

[36]  Larry Rudolph,et al.  PIE: A Programming and Instrumentation Environment for Parallel Processing , 1985, IEEE Software.