This open access book is a modern guide for all C++ programmers to learn Intel 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 Intel Threading Building Blocks 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.
James Reinders served as a senior engineer with Intel Corporation starting in 1989, where he 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. James has managed software development groups, customer service and consulting teams, business development and marketing teams. James is sought after to keynote on parallel programming, and has authored or edited several books on parallel programming including Structured Parallel Programming (2012) and High Performance Parallelism Pearls, Vols 1 and 2 (2014, 2015).
Mike Voss is with the Developer Products Division at Intel and was the original architect of the Intel(R) Threading Building Blocks (Intel(R) TBB) flow graph API, a C++ API for expressing dependency, streaming, and data flow applications. He has co-authored over 40 published papers and articles on topics related to parallel programming, and frequently consults with customers across a wide range of domains to help them effectively use the threading libraries provided by Intel. He is currently championing the use of extensions to Intel TBB that enable software developers to coordinate the use of heterogeneous compute resources such as CPUs, integrated GPUs, FPGAs, and other domain-specific accelerators, and is one of the lead developers of Flow Graph Analyzer, a graphical tool for analyzing data flow applications targeted at both homogeneous and heterogeneous platforms.
From 1994 to 2001, Dr. Rafael Asenjo was an Assistant Professor in the Computer Architecture Department at University of Malaga, and has been an Associate Professor since 2001. He was Visiting Scholar in the University of Illinois at Urbana-Champaign (UIUC) in 1996 and 1997, and Visiting Research Associate in the same University in 1998. He also was Research Visitor at IBM T.J. Watson in 2008 and at Cray Inc. in 2011. He collaborated on the IBM XL-UPC compiler in 2008 and has contributed to the Cray's Chapel runtime development since 2011. He has served as General Chair for ACM PPoPP'16 and as an Organization Committee member as well as a Program Committee member for several High Performance Computing related conferences among others PPoPP, SC, PACT, IPDPS, HPCA, EuroPar and SBAC-PAD. His research interests are in parallel programming models and tools for heterogeneous architectures.