Patterns for Parallel Software Design
Buy Rights Online Buy Rights

Rights Contact Login For More Details

More About This Title Patterns for Parallel Software Design


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 programsProvides 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 divisionPresents 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.


Foreword xiii

Preface xvii

About the Author xx

Acknowledgements xx

Contributor Biography xxii

Chapter 1 Software Patterns 1

The Concept of a Software Pattern 2

Pattern Description, Organization and Categorization 8

Summary 10

Chapter 2 A Brief Introduction to Parallel Programming 11

Parallel Programming 12

Factors that Influence the Performance of a Parallel Program 12

Advantages and Disadvantages of Parallel Programming 23

Summary 25

Chapter 3 Architectural Patterns for Parallel Programming 27

Parallel Pipes and Filters 28

Parallel Layers 41

Communicating Sequential Elements 54

Manager–Workers 67

Shared Resource 79

Summary 93

Chapter 4 Design Patterns for Communication Components 95

Shared Variable Pipe 96

Multiple Local Call 103

Message Passing Pipe 114

Multiple Remote Call 124

Shared Variable Channel 136

Message Passing Channel 145

Local Rendezvous 156

Remote Rendezvous 165

Summary 173

Chapter 5 Some Idioms for Synchronization Mechanisms 175

Semaphore 177

Critical Region 185

Monitor 192

Message Passing 199

Remote Procedure Call 208

Summary 217

Chapter 6 Two Case Studies 219

Blood Vessel Segmentation 220

Adaptive 3D Grid-Based Eulerian (Gasdynamic) Program 249

Summary 297

Chapter 7 Parallel Software Design 299

A General Parallel Software Design Process 300

A Pattern-Based Parallel Software Design Method 302

Problem Analysis 305

Coordination Design – Architectural Patterns 315

Communication Design – Design Patterns 327

Detailed Design – Idioms 340

Implementation and Evaluation 349

Summary 357

Chapter 8 Parallel Software Architecture 359

A Definition of Parallel Software Architecture 359

Parallel Software Design 361

Summary 366

Chapter 9 Directions in Patterns for Parallel Programming 367

The Situation in Software Design 368

Design Experience and Techniques 369

A Tangible Description for Parallel Software Systems 371

The Need for Measurement in Parallel Software Design 372

Final Remarks 374

Glossary 377

Notations 393

References 397

Index of Patterns 409

Index 411