(Click on a chapter for more details)
| Introduction | |
| Parallel Programming | |
| Design Patterns and Pattern Languages | |
| A Pattern Language for Parallel Programming |
| Concurrency in Parallel Programs Versus Operating Systems | |||||||
Parallel Architectures: A Brief Introduction
| |||||||
| Parallel Programming Environments | |||||||
| The Jargon of Parallel Computing | |||||||
| A Quantitative Look at Parallel Computation | |||||||
| Communication | |||||||
| Summary |
| About the Design Space | |
| Overview | |
| Using the Decomposition Patterns | |
| Background for Examples | |
| The Task Decomposition Pattern | |
| The Data Decomposition Pattern | |
| The Group Tasks Pattern | |
| The Order Tasks Pattern | |
| The Data Sharing Pattern | |
| The Design Evaluation Pattern |
| Introduction | |||||||||
Choosing an Algorithm Structure Pattern
| |||||||||
Example
| |||||||||
| The Task Parallelism Pattern | |||||||||
| The Divide and Conquer Pattern | |||||||||
| The Geometric Decomposition Pattern | |||||||||
| The Recursive Data Pattern | |||||||||
| The Pipeline Pattern | |||||||||
| The Event-Based Coordination Pattern |
Introduction
| |||||||||||
| Forces | |||||||||||
| Choosing the Patterns | |||||||||||
| The SPMD Pattern | |||||||||||
| The Master/Worker Pattern | |||||||||||
| The Loop Parallelism Pattern | |||||||||||
| The Fork/Join Pattern | |||||||||||
| The Shared Data Pattern | |||||||||||
| The Shared Queue Pattern | |||||||||||
| The Distributed Array Pattern | |||||||||||
Other Supporting Structures
|
| Overview | |||||||||||
UE Management
| |||||||||||
Synchronization
| |||||||||||
Communication
|
| Core Concepts | |
| Structured Blocks and Directive Formats | |
| Worksharing | |
| Data Environment Clauses | |
| The OpenMP Runtime Library | |
| Synchronization | |
| The Schedule Clause | |
| The Rest of the Language |
| Concepts | |
| Getting Started | |
| Basic Point-to-Point Message Passing | |
| Collective Operations | |
| Advanced Point-to-Point Message Passing | |
| MPI and Fortran | |
| Conclusion |
Creating Threads
| |||||
| Atomicity, Memory Synchronization, and the volatile Keyword | |||||
| Synchronized Blocks | |||||
| Wait and Notify | |||||
| Locks | |||||
| Other Synchronization Mechanisms and Shared Data Structures | |||||
| Interrupts |