Structured Parallel Programming: Patterns for Efficient Computation
- 7h 49m
- Arch D. Robison, James Reinders, Michael McCool
- Elsevier Science and Technology Books, Inc.
- 2012
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.
- 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
About the Authors
Michael McCool has research and application experience in the areas of data mining, computer graphics (specifically sampling, rasterization, texture hardware, antialiasing,shading, illumination, and visualization), medical imaging, signal and image processing, financial analysis,and languages and programming platforms for high productivity parallel computing. In order to commercialize research work into many-core computing platforms done while he was a professor at the University of Waterloo,in 2004 he co-founded RapidMind, which in 2009 was acquired by Intel. Currently he is a Software Architect with Intel working on Array Building Blocks and an Adjunct Associate Professor with the University of Waterloo. In addition to his university teaching, he has presented tutorials at Eurographics, SIGGRAPH, and SC on graphics and/or parallel computing.
James Reinders is a senior engineer who joined Intel Corporation in 1989 and has contributed to projects including the world's first TeraFLOP supercomputer (ASCI Red), as well as compilers and architecture work for a number of Intel processors and parallel systems. James has been a driver behind the development of Intel as a major provider of software development products, and serves as their chief software evangelist. James has published numerous articles, contributed to several books and is widely interviewed on parallelism.
Arch Robison is the architect of Threading Building Blocks.He was the lead developer for KAI C++, which established the state of the art for C++ optimization in the '90s. He has 12 software patents, 3 award winning entries in the International Obfuscated C Code Contest, and an Erdös number of 3. He is also the (uncredited) author of the TBB Tutorial and Design Patterns documents, as well as most of the TBB Reference manual, and wrote a chapter of the Intel Multi-core Programming book. He has presented TBB tutorials at OSCON, PADTAD, and HPCC07, and invited talks on TBB at LCPC, Texas A&M, U. Maryland, Indiana U., MIT, and UIUC. Finally, he has presented short classes (three 75 minute sessions) on parallel programming at UIUC.
In this Book
-
Preliminaries
-
Introduction
-
Background
-
Patterns
-
Map
-
Collectives
-
Data Reorganization
-
Stencil and Recurrence
-
Fork–Join
-
Pipeline
-
Forward Seismic Simulation
-
K-Means Clustering
-
Bzip2 Data Compression
-
Merge Sort
-
Sample Sort
-
Cholesky Factorization
-
Further Reading
-
Cilk plus
-
TBB
-
C++11
-
Glossary
-
Bibliography