Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism

Front Cover
"O'Reilly Media, Inc.", Jul 12, 2007 - Computers - 303 pages

Multi-core chips from Intel and AMD offer a dramatic boost in speed and responsiveness, and plenty of opportunities for multiprocessing on ordinary desktop computers. But they also present a challenge: More than ever, multithreading is a requirement for good performance. This guide explains how to maximize the benefits of these processors through a portable C++ library that works on Windows, Linux, Macintosh, and Unix systems. With it, you'll learn how to use Intel Threading Building Blocks (TBB) effectively for parallel programming -- without having to be a threading expert.

Written by James Reinders, Chief Evangelist of Intel Software Products, and based on the experience of Intel's developers and customers, this book explains the key tasks in multithreading and how to accomplish them with TBB in a portable and robust manner. With plenty of examples and full reference material, the book lays out common patterns of uses, reveals the gotchas in TBB, and gives important guidelines for choosing among alternatives in order to get the best performance.

You'll learn how Intel Threading Building Blocks:

  • Enables you to specify tasks instead of threads for better portability, easier programming, more understandable source code, and better performance and scalability in general
  • Focuses on the goal of parallelizing computationally intensive work to deliver high-level solutions
  • Is compatible with other threading packages, and doesn't force you to pick one package for your entire program
  • Emphasizes scalable, data-parallel programming, which allows program performance to increase as you add processors
  • Relies on generic programming, which enables you to write the best possible algorithms with the fewest constraints
Any C++ programmer who wants to write an application to run on a multi-core system will benefit from this book. TBB is also very approachable for a C programmer or a C++ programmer without much experience with templates. Best of all, you don't need experience with parallel programming or multi-core processors to use this book.

 

Contents

Why Threading Building Blocks?
1
Thinking Parallel
7
Basic Algorithms
29
Advanced Algorithms
65
Containers
80
Scalable Memory Allocation
101
Mutual Exclusion
110
Timing
130
Task Scheduler
133
Keys to Success
169
Examples
177
History and Related Projects
283
Index
297
Copyright

Other editions - View all

Common terms and phrases

About the author (2007)

James Reinders, Chief Evangelist of Intel Software Products, is a senior engineer who joined Intel Corporation in 1989 and has contributed to a number of projects, including the world's first TeraFLOP supercomputer (ASCI Red), compilers and architecture work for the iWarp, Pentium Pro, Pentium II, Itanium, and Pentium 4 processors. He has years of experience in processor architecture, optimizing compilers, parallel computer architecture, and making products for software developers. Reinders is also the editorial columnist for the monthly "The Gauntlet" at www.devX.go-parallel.com, as well as the author of the Intel Press book titled "VTune Performance Analyzer Essentials" and contributor to the new book "Multi-Core Programming."

Bibliographic information