Book Description
This book is a modern guide for all C++ programmers to learn Threading Building Blocks (TBB). Written by TBB and parallel programming experts, this book reflects their collective decades of experience in developing and teaching parallel programming with TBB, offering their insights in an approachable manner. Throughout the book the authors present numerous examples and best practices to help you become an effective TBB programmer and leverage the power of parallel systems.
Pro TBB starts with the basics, explaining parallel algorithms and C++'s built-in standard template library for parallelism. You'll learn the key concepts of managing memory, working with data structures and how to handle typical issues with synchronization. Later chapters apply these ideas to complex systems to explain performance tradeoffs, mapping common parallel patterns, controlling threads and overhead, and extending TBB to program heterogeneous systems or system-on-chips.
What You'll Learn: Use Threading Building Blocks to produce code that is portable, simple, scalable, and more understandable; Review best practices for parallelizing computationally intensive tasks in your applications; Integrate TBB with other threading packages; Create scalable, high performance data-parallel programs; Work with generic programming to write efficient algorithms.
Who This Book Is For: C++ programmers learning to run applications on multicore systems, as well as C or C++ programmers without much experience with templates. No previous experience with parallel programming or multicore processors is required.
This open book is licensed under a Creative Commons License (CC BY-NC-ND). You can download Pro TBB ebook for free in PDF format (130.2 MB).
Table of Contents
About the Authors
Acknowledgments
Preface
Part 1
Chapter 1
Jumping Right In: "Hello, TBB!"
Chapter 2
Generic Parallel Algorithms
Chapter 3
Flow Graphs
Chapter 4
TBB and the Parallel Algorithms of the C++ Standard
Chapter 5
Synchronization: Why and How to Avoid It
Chapter 6
Data Structures for Concurrency
Chapter 7
Scalable Memory Allocation
Chapter 8
Mapping Parallel Patterns to TBB
Part 2
Chapter 9
The Pillars of Composability
Chapter 10
Using Tasks to Create Your Own Algorithms
Chapter 11
Controlling the Number of Threads Used for Execution
Chapter 12
Using Work Isolation for Correctness and Performance
Chapter 13
Creating Thread-to-Core and Task-to-Thread Affinity
Chapter 14
Using Task Priorities
Chapter 15
Cancellation and Exception Handling
Chapter 16
Tuning TBB Algorithms: Granularity, Locality, Parallelism, and Determinism
Chapter 17
Flow Graphs: Beyond the Basics
Chapter 18
Beef Up Flow Graphs with Async Nodes
Chapter 19
Flow Graphs on Steroids: OpenCL Nodes
Chapter 20
TBB on NUMA Architectures
Appendix A
History and Inspiration
Appendix B
TBB Précis
Glossary
Index