Provides a thorough introduction to the different models available for parallel processing.
This book is based on the author's personal views of parallel processing developed over the past 15 years, initially at Loughborough University of Technology and then at Reading University. The material brought together here is based on research work and courses given over that time. The author does not expect that all workers in the field of parallel processing will agree with all the contents of this book, because it is the view of some that parallel processing would not be used if sequential computers were fast enough. The author agrees that while it is true people may not invest in expensive parallel processors, some will still use parallelism to represent their problem in what they consider a natural form. After studying the material contained in this book, the reader, whether undergraduate, postgraduate, research worker or industrialist, should be able to formulate answers to the following questions: why use parallelism, why are there so many models of parallelism, why attempt to alter the model.
Part 1 Introduction: a parallel problem; people as processors; machines as processors; a comparison of programming models for parallel processing; Flynn's classifications. Part 2 Categories of parallel programming models: sequential processing; conventional languages; coroutines; simula; modula-2; guarded commands; array processing; an array processor; array processor architectures; DAP-Fortran; Actus; CmLisp; pipeline processing; a pipeline processor; pipe priming; classification of pipeline processors; arithmetic pipeline; instruction pipeline; macro-pipelining; systolic arrays; shared memory processing; parallel language constructs; synchronization in a shared memory environment; concurrent Pascal; portable parallel programs; parallel random access machines; message passing; channels; asynchronous message passing; synchronous message passing; occam; LOTOS; other models; functional programming; logic programming; object-oriented programming; adding parallelism. Part 3 Transformation techniques: altering the number of processes; detection of parallelism within expressions; parallelism in tree structures; determining parallelism between blocks of programs; vectorizing compilers; reducing parallelism; intermediate forms; array-pipline processes; shared memory - message passing; other models to concrete realizations.