Lectures, discussions, and exercises. On the last day, “Effective Multicore” is an interactive session where we revisit the topics from a different angle. Course material: USB stick with VM and exercises; book with course notes, handouts, exercises, solutions, and cheat sheets.
Well-performing multithreaded code is still a mystery to many. This 3-day course teaches participants how to benefit from the power of modern multicore processors by understanding the ins-and-outs of parallelism, the parallel programming paradigms, applying parallel patterns and avoiding common pitfalls.
This training is available for open enrollment as well as for in-company sessions. For in-company sessions, the Multicore programming in C++ training can be adapted to your situation and special needs.
Objective
After successful completion of the course, the participant thoroughly understands how parallelism is implemented in modern CPUs. The participant can explain how modern C++ and supporting libraries help to keep complexity under control. The participant knows about
- Hardware architecture and modern CPU bottlenecks
- C++11+ parallelism and concurrency
- Reduce locking complexity and suffer less performance loss due to locking
- Berkeley’s parallel pattern library
- OpenMP and other programming libraries
- Achieving speedups through parallelism
Target audience
This course is intended for C++ software engineers, designers, and architects who need to design bug-free fast-performing code that utilizes its underlying hardware well.
Prerequisites:
- Experience in software development
- Basic understanding of operating systems
- Reasonable understanding of modern C++
Program
Day 1:
- Modern multicore computer architecture and concurrency;
- Threading extensions in C++11 and newer;
- Locking done wrong and right;
- RAII and libguarded.
Day 2:
- OpenMP;
- Task and data parallelism;
- How to recognize concurrency opportunities;
- The Berkeley parallel pattern language;
- How to recognize and remedy parallelism blockers and data corrupters;
- Parallelism anti-patterns.
Day 3:
- Using Vectorization;
- Threadsafe API design;
- Threading libraries;
- “Effective Multicore”.
Every day has lectures and at least two larger supporting exercises.
Methods
Certification
Participants will receive a High Tech Institute certificate for attending this training.
Remarks from participants