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.
Jadual kandungan
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
Mengenai Pengarang
Jorge Luis Ortega-Arjona is a lecturer at Departamento de Matemáticas, Facultad de Ciencias, UNAM.