(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 |