Structured Parallel Programming

1st Edition

Patterns for Efficient Computation

Print ISBN: 9780124159938
eBook ISBN: 9780123914439
Imprint: Morgan Kaufmann
Published Date: 25th June 2012
Page Count: 432
64.50 + applicable tax
45.95 + applicable tax
36.99 + applicable tax
59.95 + applicable tax
Compatible Not compatible
VitalSource PC, Mac, iPhone & iPad Amazon Kindle eReader
ePub & PDF Apple & PC desktop. Mobile devices (Apple & Android) Amazon Kindle eReader
Mobi Amazon Kindle eReader Anything else

Institutional Access


Programming is now parallel programming. Much as structured programming revolutionized traditional serial programming decades ago, a new kind of structured programming, based on patterns, is relevant to parallel programming today. Parallel computing experts and industry insiders Michael McCool, Arch Robison, and James Reinders describe how to design and implement maintainable and efficient parallel algorithms using a pattern-based approach. They present both theory and practice, and give detailed concrete examples using multiple programming models. Examples are primarily given using two of the most popular and cutting edge programming models for parallel programming: Threading Building Blocks, and Cilk Plus. These architecture-independent models enable easy integration into existing applications, preserve investments in existing code, and speed the development of parallel applications. Examples from realistic contexts illustrate patterns and themes in parallel algorithm design that are widely applicable regardless of implementation technology.

Key Features

  • The patterns-based approach offers structure and insight that developers can apply to a variety of parallel programming models
  • Develops a composable, structured, scalable, and machine-independent approach to parallel computing
  • Includes detailed examples in both Cilk Plus and the latest Threading Building Blocks, which support a wide variety of computers


Software Developers, Computer Programmers, Software Architects

Table of Contents




Chapter 1. Introduction

1.1 Think Parallel

1.2 Performance

1.3 Motivation: Pervasive Parallelism

1.4 Structured Pattern-Based Programming

1.5 Parallel Programming Models

1.6 Organization of this Book

1.7 Summary

Chapter 2. Background

2.1 Vocabulary and Notation

2.2 Strategies

2.3 Mechanisms

2.4 Machine Models

2.5 Performance Theory

2.6 Pitfalls

2.7 Summary

PART I. Patterns

Chapter 3. Patterns

3.1 Nesting Pattern

3.2 Structured Serial Control Flow Patterns

3.3 Parallel Control Patterns

3.4 Serial Data Management Patterns

3.5 Parallel Data Management Patterns

3.6 Other Parallel Patterns

3.7 Non-Deterministic Patterns

3.8 Programming Model Support for Patterns

3.9 Summary

Chapter 4. Map

4.1 Map

4.2 Scaled Vector Addition (SAXPY)

4.3 Mandelbrot

4.4 Sequence of Maps versus Map of Sequence

4.5 Comparison of Parallel Models

4.6 Related Patterns

4.7 Summary

Chapter 5. Collectives

5.1 Reduce

5.2 Fusing Map and Reduce

5.3 Dot Product

5.4 Scan

5.5 Fusing Map and Scan

5.6 Integration

5.7 Summary

Chapter 6. Data Reorganization

6.1 Gather

6.2 Scatter

6.3 Converting Scatter to Gather

6.4 Pack

6.5 Fusing Map and Pack

6.6 Geometric Decomposition and Partition

6.7 Array of Structures vs. Structures of Arrays

6.8 Summary

Chapter 7. Stencil and Recurrence

7.1 Stencil

7.2 Implementing Stencil with Shift

7.3 Tiling Stencils for Cache

7.4 Optimizing Stencils for Communication

7.5 Recurrence

7.6 Summary

Chapter 8. Fork–Join

8.1 Definition

8.2 Pro


No. of pages:
© Morgan Kaufmann 2012
Morgan Kaufmann
eBook ISBN:
Paperback ISBN:


Intel Recommended Reading List for Developers, 2nd Half 2013 – Books for Software Developers, Intel
Intel Recommended Reading List for Developers, 1st Half 2014 – Books for Software Developers, Intel


"I've been dreaming for a while of a modern accessible book that I could recommend to my threading-deprived colleagues and assorted enquirers to get them up to speed with the core concepts of multithreading as well as something that covers all the major current interesting implementations. Finally I have that book."

— Martin Watt, Principal Engineer, Dreamworks Animation