You are previewing Patterns for Parallel Software Design.
O'Reilly logo
Patterns for Parallel Software Design

Book Description

Essential reading to understand patterns for parallel programming

Software patterns have revolutionized the way we think about how software is designed, built, and documented, and the design of parallel software requires you to consider other particular design aspects and special skills. From clusters to supercomputers, success heavily depends on the design skills of software developers.

Patterns for Parallel Software Design presents a pattern-oriented software architecture approach to parallel software design. This approach is not a design method in the classic sense, but a new way of managing and exploiting existing design knowledge for designing parallel programs. Moreover, such approaches enhance not only build-time properties of parallel systems, but also, and particularly, their run-time properties.

  • Features known solutions in concurrent and distributed programming, applied to the development of parallel programs

  • Provides architectural patterns that describe how to divide an algorithm and/or data to find a suitable partition and link it with a programming structure that allows for such a division

  • Presents an architectural point of view and explains the development of parallel software

Patterns for Parallel Software Design will give you the skills you need to develop parallel software.

Table of Contents

  1. Copyright
  2. Dedication
  3. Acknowledgments
  4. Foreword
  5. Preface
  6. Software Patterns
    1. 1.1 The Concept of a Software Pattern
    2. 1.2 Pattern Description, Organization and Categorization
    3. 1.3 Summary
  7. A Brief Introduction to Parallel Programming
    1. 2.1 Parallel Programming
    2. 2.2 Factors that Influence the Performance of a Parallel Program
    3. 2.3 Advantages and Disadvantages of Parallel Programming
    4. 2.4 Summary
  8. Architectural Patterns for Parallel Programming
    1. 3.1 Parallel Pipes and Filters
    2. 3.2 Parallel Layers
    3. 3.3 Communicating Sequential Elements
    4. 3.4 Manager–Workers
    5. 3.5 Shared Resource
    6. 3.6 Summary
  9. Design Patterns for Communication Components
    1. 4.1 Shared Variable Pipe
    2. 4.2 Multiple Local Call
    3. 4.3 Message Passing Pipe
    4. 4.4 Multiple Remote Call
    5. 4.5 Shared Variable Channel
    6. 4.6 Message Passing Channel
    7. 4.7 Local Rendezvous
    8. 4.8 Remote Rendezvous
    9. 4.9 Summary
  10. Some Idioms for Synchronization Mechanisms
    1. 5.1 Semaphore
    2. 5.2 Critical Region
    3. 5.3 Monitor
    4. 5.4 Message Passing
    5. 5.5 Remote Procedure Call
    6. 5.6 Summary
  11. Two Case Studies
    1. 6.1 Blood Vessel Segmentation
    2. 6.2 Adaptive 3D Grid-Based Eulerian (Gasdynamic) Program
    3. 6.3 Summary
  12. Parallel Software Design
    1. 7.1 A General Parallel Software Design Process
    2. 7.2 A Pattern-Based Parallel Software Design Method
    3. 7.3 Problem Analysis
    4. 7.4 Coordination Design - Architectural Patterns
    5. 7.5 Communication Design - Design Patterns
    6. Detailed Design - Idioms
    7. 7.7 Implementation and Evaluation
    8. Summary
  13. Parallel Software Architecture
    1. 8.1 A Definition of Parallel Software Architecture
    2. 8.2 Parallel Software Design
    3. 8.3 Summary
  14. Directions in Patterns for Parallel Programming
    1. 9.1 The Situation in Software Design
    2. 9.2 Design Experience and Techniques
    3. 9.3 A Tangible Description for Parallel Software Systems
    4. 9.4 The Need for Measurement in Parallel Software Design
    5. 9.5 Final Remarks
  15. Glossary
  16. Notations
  17. References
  18. Index