The book "Algorithmic Skeletons: Structured Management of Parallel Computation" by Murray I. Cole explores the challenges and solutions in designing high-level programming systems for parallel computing. The author argues that the traditional approach of providing a single, universal programming model is incompatible with the goal of uniformly efficient parallel implementation. Instead, he proposes a new approach called "algorithmic skeletons," which draws inspiration from functional programming and higher-order functions.
In the first chapter, Cole reviews existing systems and categorizes them into three types: highly abstract systems, idealized parallel systems, and low-level and restrictive systems. Each category has its advantages and disadvantages in terms of user-friendliness, implementation complexity, and performance.
The second chapter introduces the concept of algorithmic skeletons, which are independent "skeletons" that describe the structure of specific algorithmic techniques. These skeletons are designed to be used as templates for solving problems, with the programmer specifying only the problem-specific details. The author emphasizes that these skeletons should be structured in a way that forces the programmer to use one of the well-known algorithmic techniques as the central structure of every program, even though the programmer's visualization of these structures should be non-parallel.
The subsequent chapters present four candidate skeletons: the Fixed Degree Divide & Conquer Skeleton, the Iterative Combination Skeleton, the Cluster Skeleton, and the Task Queue Skeleton. Each skeleton is introduced with its abstract specification, implementation issues, and examples of problems that can be solved using it. The author also discusses the implementation on a square grid of autonomous processor-memory pairs and analyzes the strengths and weaknesses of the skeletal approach in the context of existing alternatives.
Overall, the book aims to provide a new framework for designing high-level programming systems that can efficiently exploit massively parallel hardware while maintaining a high level of abstraction and machine independence.The book "Algorithmic Skeletons: Structured Management of Parallel Computation" by Murray I. Cole explores the challenges and solutions in designing high-level programming systems for parallel computing. The author argues that the traditional approach of providing a single, universal programming model is incompatible with the goal of uniformly efficient parallel implementation. Instead, he proposes a new approach called "algorithmic skeletons," which draws inspiration from functional programming and higher-order functions.
In the first chapter, Cole reviews existing systems and categorizes them into three types: highly abstract systems, idealized parallel systems, and low-level and restrictive systems. Each category has its advantages and disadvantages in terms of user-friendliness, implementation complexity, and performance.
The second chapter introduces the concept of algorithmic skeletons, which are independent "skeletons" that describe the structure of specific algorithmic techniques. These skeletons are designed to be used as templates for solving problems, with the programmer specifying only the problem-specific details. The author emphasizes that these skeletons should be structured in a way that forces the programmer to use one of the well-known algorithmic techniques as the central structure of every program, even though the programmer's visualization of these structures should be non-parallel.
The subsequent chapters present four candidate skeletons: the Fixed Degree Divide & Conquer Skeleton, the Iterative Combination Skeleton, the Cluster Skeleton, and the Task Queue Skeleton. Each skeleton is introduced with its abstract specification, implementation issues, and examples of problems that can be solved using it. The author also discusses the implementation on a square grid of autonomous processor-memory pairs and analyzes the strengths and weaknesses of the skeletal approach in the context of existing alternatives.
Overall, the book aims to provide a new framework for designing high-level programming systems that can efficiently exploit massively parallel hardware while maintaining a high level of abstraction and machine independence.