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

Intended for

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++
Location (1)
Start date (1)
Duration 3 consecutive days
Frequency Once per year
Score
8.6
Price per participant € 2,180 excl. VAT. *
Keep me posted

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

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.

Certification

Participants will receive a High Tech Institute certificate for attending this training.

Download brochure

Remarks from participants

"Very useful training. Most important items I have learned: Open MP, Lockless, functional/ data parallelisation."

Steven Hoving – Thermo Fisher Scientific

"Exercises were really helpful to couple theory with practice."

Eria Lopez Valenzuela – Sioux Embedded Systems

"Very good, learned a lot."

Robin Degen – Promexx Technical Automation B.V.

"Theory / practice relation was very good."

Dries de Winter – Sioux Belgium

"Great crash- course for multicore programming."

Menno Scholte – Sioux Automation Technology