This book presents a new approach to the design and implementation of high-level programming systems for parallel machines, based on the concept of "algorithmic skeletons." The author discusses the challenges of parallel programming, including problem decomposition, distribution, code and data sharing, communication, and synchronization. Existing systems are categorized into three types: highly abstract systems, idealized parallel systems, and low-level, restrictive systems. The first category provides a high-level abstraction but suffers from implementation difficulties and limited parallelism. The second category focuses on idealized parallel machines, with algorithms that are easier to analyze and implement. The third category involves low-level systems where the programmer has direct control over hardware.
The author proposes a new approach that rejects the idea of a single, universal programming model. Instead, the concept of "algorithmic skeletons" is introduced, which are independent structures that describe particular styles of algorithms. These skeletons allow the programmer to specify a solution as an instance of the appropriate skeleton, simplifying the implementation process. The four skeletons presented are based on the notions of "fixed degree divide and conquer," "iterative combination," "clustering," and "task queues." Each skeleton is introduced in terms of the abstraction it presents to the user. Implementation on a square grid of autonomous processor-memory pairs is considered, and examples of problems that could be solved in terms of the skeleton are presented.
The strengths and weaknesses of the "skeletal" approach are assessed in the context of existing alternatives. The author argues that the skeletal approach provides a more practical and efficient way to implement parallel algorithms, as it allows the programmer to focus on the structure of the algorithm rather than the details of the implementation. The book concludes with a discussion of the future directions of research in parallel computing.This book presents a new approach to the design and implementation of high-level programming systems for parallel machines, based on the concept of "algorithmic skeletons." The author discusses the challenges of parallel programming, including problem decomposition, distribution, code and data sharing, communication, and synchronization. Existing systems are categorized into three types: highly abstract systems, idealized parallel systems, and low-level, restrictive systems. The first category provides a high-level abstraction but suffers from implementation difficulties and limited parallelism. The second category focuses on idealized parallel machines, with algorithms that are easier to analyze and implement. The third category involves low-level systems where the programmer has direct control over hardware.
The author proposes a new approach that rejects the idea of a single, universal programming model. Instead, the concept of "algorithmic skeletons" is introduced, which are independent structures that describe particular styles of algorithms. These skeletons allow the programmer to specify a solution as an instance of the appropriate skeleton, simplifying the implementation process. The four skeletons presented are based on the notions of "fixed degree divide and conquer," "iterative combination," "clustering," and "task queues." Each skeleton is introduced in terms of the abstraction it presents to the user. Implementation on a square grid of autonomous processor-memory pairs is considered, and examples of problems that could be solved in terms of the skeleton are presented.
The strengths and weaknesses of the "skeletal" approach are assessed in the context of existing alternatives. The author argues that the skeletal approach provides a more practical and efficient way to implement parallel algorithms, as it allows the programmer to focus on the structure of the algorithm rather than the details of the implementation. The book concludes with a discussion of the future directions of research in parallel computing.