Speaker
Description
In this course we will introduce how to program for concurrency in C++, taking advantage of modern CPUs' ability to run multi-threaded programs on different CPU cores. We will briefly review the native C++ concurrency features for asynchronous execution, thread spawning and locking as well as a few other features useful for concurrent programming. The tutorial will show you how to use Intel's Threaded Building Block (TBB) library as a much higher level abstraction onto concurrency that allows concurrent applications to be developed much more quickly. We will examine TBB's basic templates for parallel programming, controlling loops and reductions in 1 and 2 dimensions. Then we will see how TBB's graph execution facilities that allow more sophisticated parallel workflows in a DAG to be run. Finally, we will look at the TBB task manager, that allows arbitrary workloads to be executed in parallel when injected into the system by a higher level component.
Students should be familiar with C++ and the standard template library. Some familiarity with makefiles and/or CMake would be useful.