Parallel Programming at Your Fingertips with Intel® Threading Building Blocks

In this video you will get an overview about Intel® Threading Building Blocks also known as Intel® TBB. Intel® Threading Building Blocks (Intel® TBB) is a widely used C++ library for shared-memory parallel programming and heterogeneous computing (intra-node distributed memory programming). The library provides a wide range of features for parallel programming, including generic parallel algorithms, concurrent containers, a scalable memory allocator, work-stealing task scheduler, and low-level synchronization primitives. Intel TBB is a library only solution for task-based parallelism and does not require any special compiler support. It ports to multiple architectures including Intel® architectures, ARM, and POWER.

Hi, my name is Sharmila. Today, we are going to talk about Intel threading building blocks, also known as Intel TBB. Let's get started. 

A new era of advanced computing is coming around the corner, with the development of multi-core process. We are in a world where every discipline, be it cancer research, genomics, or climate modeling, is constantly demanding our computation resources. These applications need to start taking full advantage of the processing part of multi-core machines, a capability beyond the reach of sequential codes. Existing legacy codes need to be rewritten to take full advantage of multi-threading, vectorization, and memory efficiency. 

With Intel TBB, you can embrace parallelism and be prepared for this new era in computing. TBB is a C++ threading library that has been around for 10 years. It's highly templatized, and helps you add parallelism to your application. 

Parallelism is a way for your single application to take advantage of all the CPU cores available in your machine simultaneously. Intel TBB allows you the flexibility to build different levels of parallelism in your code. 

You can start small by converting all your generic algorithms, such us For, For-Each, Reduce, Sort, et cetera, in your code into parallel functions, or make a giant leap into the world of heterogeneous computing with the help of features like flow graph. 

TBB can help your development process by abstracting away the complexity of parallel programming from the hands of the user. It does this by using a highly sophisticated work scheduling engine called Task Scheduler, a scalable memory allocator, and concurrent containers. 

Task Scheduler allows parallel algorithms to execute as optimally as possible. If one thread completes all its tasks, it can go and steal the tasks from other worker threads that have more tasks in their queue. This ensures that the CPUs on your system stay busy, as long as there is work to be done. 

The scalable memory allocator is a very powerful feature, which allows you to avoid some common problems with parallel applications, like global lock, by allowing threads to do their own local memory management in parallel. 

Concurrent containers provide thread safe scalable alternatives to standard template library, like vectors and queues, which are not typically thread safe. TBB helps synchronize these concurrent containers by adding methods that allow multiple access points from a single statement. 

Finally, there is the flow graph that helps you represent multiple types of parallelism in your application, like task parallelism and data parallelism. 

Thank you for watching. If you want to download the TBB library, follow the links below, and don't forget to like this video and subscribe.