Structured Parallel Programming

Patterns for Efficient Computation


  • Michael McCool, Software Architect, Intel Corporation
  • James Reinders, Director, Chief Evangelist, Intel Software, Intel Corporation, Portland, OR, USA
  • Arch Robison, Senior Principal Engineer, Intel Corporation

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.
View full description


Software Developers, Computer Programmers, Software Architects


Book information

  • Published: June 2012
  • ISBN: 978-0-12-415993-8


"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

Table of Contents

1 Introduction
2 Background
Part I: Patterns
3 Patterns
4 Map
5 Collectives
6 Data Reorganization
7 Fork-Join
8 Pipeline
Part II: Examples
9 Forward Seismic Simulation
10 K-Means Clustering
11 Bzip2 Data Compression
12 Merge Sort
13 Sample Sort
14 Cholesky Factorization
Part III: Appendices
A Further Reading
B Cilk Plus
D C++11
E Glossary