Contents

Home Up Contents Bibliography Errata Papers Other Publications

 

(Click on a chapter for more details)

  1. Introduction
    Introduction
    Parallel Programming
    Design Patterns and Pattern Languages
    A Pattern Language for Parallel Programming
  2. Background and Jargon of Parallel Computing
    Concurrency in Parallel Programs Versus Operating Systems
    Parallel Architectures: A Brief Introduction
    Flynn's Taxonomy
    A Further Breakdown of MIMD
    Summary
    Parallel Programming Environments
    The Jargon of Parallel Computing
    A Quantitative Look at Parallel Computation
    Communication
    Summary
  3. The Finding Concurrency Design Space
    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
  4. The Algorithm Structure Design Space
    Introduction
    Choosing an Algorithm Structure Pattern
    Target Platform
    Major Organizing Principle
    The Algorithm Structure Decision Tree
    Re-Evaluation
    Example
    Medical Imaging
    Molecular Dynamics
    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
  5. The Supporting Structures Design Space
    Introduction
    The Program Structuring Patterns
    Patterns Representing Data Structures
    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
    SIMD
    MPMD
    Client-Server Computing
    Concurrent Programming with Declarative Languages
    Problem-Solving Environments
  6. The Implementation Mechanisms Design Space
    Overview
    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
  7. A Brief Introduction to OpenMP
    Core Concepts
    Structured Blocks and Directive Formats
    Worksharing
    Data Environment Clauses
    The OpenMP Runtime Library
    Synchronization
    The Schedule Clause
    The Rest of the Language
  8. A Brief Introduction to MPI
    Concepts
    Getting Started
    Basic Point-to-Point Message Passing
    Collective Operations
    Advanced Point-to-Point Message Passing
    MPI and Fortran
    Conclusion
  9. A Brief Introduction to Concurrent Programming in Java
    Creating Threads
    Anonymous Inner Classes
    Executors and Factories
    Atomicity, Memory Synchronization, and the volatile Keyword
    Synchronized Blocks
    Wait and Notify
    Locks
    Other Synchronization Mechanisms and Shared Data Structures
    Interrupts
  10. Bibliography
  11. Glossary