This paper illustrates two major points. First, the authors discuss a general, conceptual model for SPMD program generating systems, and demonstrate that this model allows one to capture a broad range of different program semantics. Second, they show that it is possible to fit the concepts of this model into an annotation language that allows an SPMD program generating system to fully utilize all the possibilities present in the model.<>
An overview is given of the approach followed by the parTool project in developing a parallel programming system. The key feature of parTool is a separation of algorithm specifications and the allocation of hardware resources to data and computations. Algorithms are formulated at an abstract level in a specification language having its own ideal virtual machine, thus preserving the parallelism inherent in the algorithm. Mapping the algorithm onto a specific target machine is done by adding annotations to the description of the algorithm. Porting a program from one machine to another is done by merely changing the mapping annotations. Two high-level specification languages in the parTool system are presented; the parallel transaction-based language Vista, and the data-parallel language Booster.<>
The development of programming languages suitable to express parallel algorithms in is crucial to the pace of acceptance of parallel processors for production applications. As in sequential programming, portability of parallel software is a strongly desirable feature. Portability in this respect means that given an algorithm description in a parallel programming language, it must be possible, with relatively little effort, to generate efficient code for several classes of (parallel) architectures.In this paper, the language Booster is described. Booster is a high-level, fourth-generation, parallel programming language. The language has been designed to program parallel algorithms for a wide variety of target parallel architectures. Booster has a strong separation of concerns, featuring amongst others a clear separation of algorithm description and algorithm decomposition and representation. Programs written in Booster are translated to imperative languages, such as FORTRAN or C, and can be easily integrated in large applications. Parallelism can be obtained by applying data and/or code decomposition. Once algorithm and decomposition are described the transformation is done automatically.
Data decomposition is probably the most successful method for generating parallel programs. In this paper a general framework is described for the automatic generation of parallel programs based on a separately specified decomposition of the data. To this purpose, programs and data decompositions are expressed in a calculus, called Vcal. It is shown that by rewriting calculus expressions, Single Program Multiple Data (SPMD) code can be generated for shared-memory as well as distributed-memory parallel processors. Optimizations are derived for certain classes of access functions to data structures, subject to block, scatter, and block/scatter decompositions. The presented calculus and transformations are language independent.
This paper describes a translation method for the automatic parallelization of programs based on a separately specified representation of the data. The method unifies the concept of data-representation on the algorithm-level as well as machine-level, based on the so-called view concept. It is shown that given a decomposition of the data, application of the translation method to the view-based Booster programming language results in efficient SPMD-code for distributed- as well as shared-memory architectures. It will be argued that the method is not restricted to Booster, but can also be applied to other languages.