Structured Development of Parallel Programs
Main Article Content
Abstract
Susanna Pelagatti
Taylor & Francis, Levittown, 1998, 192 pp.
ISBN 0-7484-0759-6, $44.95
The main goal of this book is to propose, describe, and discuss a structured way for programming parallel computing architectures. As structured sequential programming improved the design and development of standard software on conventional computers, a structured approach is necessary to produce portable standard applications on parallel computers. This is the basic idea of the Pelagatti's book that deals with all the main topics related to programming parallel algorithms using a high-level programming methodology.
Issues such as abstract models, programming constructs, mapping and scheduling techniques, compiling methods and performance models are discussed in the chapters of this text. The book can be used by advanced undergraduate and postgraduate students, researchers, and parallel programming professionals to learn a methodology for high-level parallel programming and understand the benefits that a structured approach to parallel programming may bring to the development of portable parallel software. It gives the reader a formal and complete view of a very promising field of parallel computation that may have a significant role in the next future of high-performance computing.
To describe the proposed methodology based on structured parallel programming, the author divided the book into two main parts. The first part of the book, which consists of four chapters, introduces the basic issues of parallel programming and gives a survey of models and languages proposed in the literature. In particular, chapter 2 discusses the main problems to be solved when a parallel program must be designed and surveys the spectrum of the approaches (models, languages, and tools) to parallel software development proposed in the latest years. In chapter 3 the basic paradigms that are generally used for parallel computation are presented and their combination for building more complex techniques is discussed. These basic paradigms are used in the second part of the book for defining a structured methodology to parallel computation. The last two chapters of the first part of the book discuss program mapping and process scheduling issues and template-based systems that are strongly related to the structured methodology proposed in the book.
The second part of the book discuss in detail a high-level methodology for parallel programs development based on skeletons as building blocks for parallel programming. In particular, a skeleton-based parallel language named P3L (Pisa Parallel Programming Language) developed at University of Pisa is extensively described. Skeletons are a set of basic forms of parallelism, such as pipeline, tree, farm, and loop, that embody both data- and control-parallelism. In chapters 6-9, the author gives a formal definition of skeletons, a clear description of the P3L constructs and an overview of the P3L compiler that generates an optimized implementation of skeleton-based programs on different classes of target parallel architectures. Finally, chapter 10 describes practical development of programs by P3L using some examples.
Parallel computing machines are more and more available, but programming applications on these architectures is still difficult. The book represents a useful text for people wishing to study, design, and implement high-level parallel programs. It shows how important is the use of a high-level structured methodology in the development of parallel applications. Main issues such as abstractness, programmability, portability, and performance are addressed in a very accurate way in the text. The only minor remark that could be done is about the use of very few practical examples discussed in the second part of the book. However, overall, this text would be a valuable source to students and researchers studying and working on parallel computation.
Domenico Talia,
ISI-CNR, Rende, Italy