Programming Multicore Processors

Course Length: Price:

Current Schedule:
3 days
$2495 (plus local applicable Tax)

This course is available ON DEMAND - please contact us about scheduling training.

To register for multiple courses, please go to the Complete Schedule

Course Overview

This course covers concepts and approaches for programming multicore processors in C/C++. From recognizing parallelism opportunities to designing multithreaded algorithms, this course teaches students how to deal with the necessary aspects of multithreading, synchronization, multicore processor caches, shared memory, and specialized methods for multithreaded programming using modern methods, such as OpenMP and Intel Threading Building Blocks.


  • A comprehensive training workshop: This course offers an in-depth overview of fundamental concepts, while offering advanced training and practical advice on C/C++ programming of multicore processors using modern methods.
  • Gain critical insights on how to improve your software's performance: This course is designed to give you key skills using specialized tools to help you to correctly architect, design, and develop efficient parallel applications for multicore processors.
  • Additional hands-on learning: This course provides laboratory sessions in writing multithreaded programs and exercises on practical parallelization of legacy software. It also includes walk-through laboratory excercises designed to increase you understanding of multithreading.

Course Objectives

  • Review theoretical background covering multicore processor architecture, concurrent programming, and parallel programming concepts and considerations.
  • Cover critical concepts such as implicit and explicit parallelism, atomicity, synchronization, shared memory, cache coherency, Amdahl's Law, Flynn's processor classifications, and Little's law in detail.
  • Recognize the best parallelism opportunities and explain the advantages of using threads to obtain concurrency using various analysis techniques, compositional approaches, and parallel design patterns.
  • Learn how to avoid synchronization pitfalls such as starvation, deadlock, live lock, and data races.
  • Learn how to implementand tune parallel algorithms.
  • Define and use different synchronization methods effectively, including mutexes/critical sections and condition variables.
  • Explain operating system interactions and the relationship between shared memory and threads.
  • Explain what aspects of the operating system affect programming, how to deal with shared memory effectively, CPU selection, CPU-specific binding of threads, thread specific data, and kernel-level scheduling.
  • Understand and use threads with specific technologies and programming methods, such as the Windows API, POSIX pthreads, Intel TBB, and OpenMP using C/C++ and the Intel Compiler.
  • Gain hands-on experience with the Intel Compiler to build and run multithreaded programs during the laboratories.
  • Learn best practices to deal with MT-unsafe libraries and how to write new thread-safe libraries.

Who should attend:

Software architects, software developers, software team leaders and managers seeking to understand and implement efficient software running on multicore processors. Knowledge of the C++ programming language and C++ software development experience is a prerequisite for this course.

We Also Recommend