This book is an attempt to describe the fundamentals of parallel computing in so far as they relate to scientific computation. The material ranges from descriptive to mathematical. The mathematical prerequisites are not much beyond advanced calculus and so, the authors claim, the material is accessible to advanced undergraduates. The material in the book has been used in courses taught to graduate students in science and engineering, mathematics and computer science. This is the intended readership for this book.
The text begins with a description of the basic ideas of, and necessity for, parallel computation, including an introduction of performance. These ideas are seen arising from a few simple examples, iterative equation solvers, initial and boundary value problems in ordinary differential equations and the prime number sieve.
Next follow two chapters on parallel performance and computer architecture. In the first of these, the concepts of speedup, parallel efficiency and Amdahl's law are discussed, as well as the notion of scalability of a given algorithm or code. In the second, basic concepts of computer architecture are explored to provide a quantitative basis for modelling the performance of various parallel computers. Four architectures for parallel computation are described and their performances are compared using two simple algorithms, namely, summing squares of real numbers and matrix multiplication. The authors spend a chapter discussing collective operations, operations involving groups of processors and yielding a single data structure or particular action. Reduction operations, that is, reductions taking a set of values as input and returning a particular value, are introduced mathematically, demonstrated on a number of algorithms and analysed according to performance.
Three chapters are devoted to discussing specific parallel programming languages, focusing on Fortran and High Performance Fortran but also including the language C. These chapters build on earlier, less specific discussions on parallel languages. (But it should be noted these are not programmers' guides.) The final third of the text is devoted to applications, with a chapter each devoted to matrix eigen analysis, solving systems of linear equations, particle dynamics, mesh methods (solving ordinary and partial differential equations using finite differences) and parallel sorting algorithms.
Each chapter is accompanied by a good number of exercises, theoretical and practical, ranging in difficulty. In the applications chapters, the authors also suggest projects that build on the exercises and on each other. They suggest that these might form bases for projects.
Readers may find the applications part of particular value, but the text as a whole offers a good blend of theoretical and practical expertise with discussion of both hardware and software issues of parallel computing. This range of topics is the strength of the text, and not something found in other texts.
John Stone is principal lecturer in computing mathematics, Sheffield Hallam University.
Scientific Parallel Computing. First Edition
Author - L. Ridgeway Scott, Terry Clark and Babak Bagheri
Publisher - Princeton University Press
Pages - 374
Price - £35.95
ISBN - 0 691 11935 X