This book contains selected refereed papers representing advances in languages and compilers for parallel computing. Early versions of these papers were presented at the Third Workshop on Languages and Compilers for Parallel Computing held during August 1-3 1990 in Irvine California, under the sponsorship of the Computer Systems Design Research Unit at the University of California at Irvine. The previous workshops in this series were held in Ithaca NY, August 1988, and in Urbana Champaign, 11, 1989. The topics of the papers in the book are representatives of the various aspects of research in this area and illustrate the great amount of interest parallel computing in general, and parallelizing compilers and languages in particular, are currently generating. The book is divided into several sections roughly corresponding to the major efforts in the field. One section discusses languages and language extensions while another section discusses two innovative environments for parallel programming.
Other papers describe techniques for debugging parallel programmes and deal with the issues of data organization and management during parallel processing, new compiler techniques for parallelizing loops and approaches to dependency analysis and representation. An insight into the measurement of parallelism implicit in ordinary programmes is given together with details of programming and compiling for distributed and shared memory multiprocessors. These papers aim to reflect the state of research in languages and compilers for parallel computing in 1990.
Table of Contents:
Cedar Fortran and its restructuring compiler, R.Eigenmann, et al; bilingual parallel programming, Ian Foster and Ross Overbeek; optimizing analysis for first-class Tuple-Spaces, Suresh Jagannathan; the Linda Programme builder, Shakil Ahmed, et al; SIGMACS - a programmable programming environment, Bruce Shei and Dennis Gannon; detecting data races in parallel programme executions, Robert H.B.Netzer and Barton P.Miller; a strategy for array management in local memory, Christine Eisenbeis, et al; on the performance of parallel strips-based lists, Jon A.Solworth; an efficient monolithic array constructor, G.R.Gao, et al; unimodular transformations of double loops, Utpal Banerjee; parallelism evaluation and partitioning of nested loops for shared memory multi-processors, E.Ayguade, et al; an algorithmic approach to compound loop transformations, Michael E.Wolf and Monica S.Lam; the suppression of Compensation Code 260, Thomas Gross and Michael Ward; a realistic resource-constrained software pipelining algorithm, Alexander Aiken and Alexandru Nicolau; handling unresolvable array-access aliases in Refined C, Apostolos D.Kallis and Davied Klappholz; symbolic dependence analysis for high-performance parallelizing compilers, Mohammad Reza Haghighat and Constantine D.Polychronopoulos; parallelism in numeric and symbolic programmes, J.R.Larus; an efficient implementation of thread-specific data, Mark D.Guzzi, et al; programme distributed memory architectures using Kali, Piyush Mehrotra and John van Rosendale; implementing a data parallel language on a tightly coupled multi-processor, Michael J.Quinn et al; automating the coordination of inter-processor communication, Jingke Li and Marina Chen; an introduction to static scheduling for MIMD architectures, Henry G.Dietz et al; dependence flow graphs - an algebraic approach to programme dependencies, Keshav Pingali, et al.