Overview

  Home Overview People Publications Glossary:Parallel Computing

The pattern language is organized into four design spaces.  Generally one starts at the top in the Finding Concurrency design space and works down through the other design spaces in order until a detailed design for a parallel program is obtained.

Click on a design space name in the figure or list for more details.

Finding Concurrency
This design space is concerned with structuring the problem to expose exploitable concurrency. The designer working at this level focuses on high-level algorithmic issues and reasons about the problem to expose potential concurrency. 
Introduction to Finding Concurrency
Task Decomposition
Data Decomposition
Group Tasks
Order Tasks
Data Sharing
Design Evaluation
Algorithm Structure  
This design space is concerned with structuring the algorithm to take advantage of potential concurrency. That is, the designer working at this level reasons about how to use the concurrency exposed in working with the Finding Concurrency patterns. The Algorithm Structure patterns describe overall strategies for exploiting concurrency. 
Introduction to Algorithm Structure
Task Parallelism 
Divide and Conquer
Geometric Decomposition 
Recursive Data
Pipeline
Event-Based Coordination
Supporting Structures
This design space represents an intermediate stage between the Algorithm Structure  and Implementation Mechanisms design spaces. Two important groups of patterns in this space are those that represent program-structuring approaches and those that represent commonly used shared data structures. 
Introduction to Supporting Structures
SPMD
Master/Worker
Loop Parallelism 
Fork/Join
Shared Data 
Shared Queue
Distributed Array
Other supporting structures
Implementation Mechanisms
The Implementation Mechanisms design space is concerned with how the patterns of the higher-level spaces are mapped into particular programming environments. We use it to provide descriptions of common mechanisms for process/thread management and interaction. The items in this design space are not presented as patterns since in many cases they map directly onto elements within particular parallel programming environments. We include them in our pattern language anyway, however, to provide a complete path from problem description to code. 
Introduction to Implementation Mechanisms
UE Management
Thread Creation/Destruction
Process Creation/Destruction
Synchronization
Memory Synchronization and Fences
Barriers
Mutual Exclusion
Communication
MPI: Message Passing
OpenMP: Message Passing
Java: Message Passing
Collective Communication
Other Communication Constructs

 

01 June, 2004