nCore logo and header

NCT-100 Programming Multicore Processors

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

 

Length: 3 Days Cost: $2495

 

NCT-100 Brochure

 

Download PDF Brochure | Current Course Schedule | Contact nCore | Arrange Onsite Training

Testimonials for NCT-100


"I was extremely impressed and pleased with the breadth of material and the expertise of the instruction provided during the recent multicore course. The instructor's knowledge of the subject matter is exemplary, and the insights he provides are helpful in gaining a more intuitive understanding of multicore design, implementation and development."

Senior Member of Technical Staff

Sandia National Labs

 

"Throughout the entire course, the instructor’s extensive knowledge of the subject matter helps him tune the course material to the specific needs of the students. NCT-100 strikes the right balance between theory and practice and leaves the student with the theory to carefully design solutions to their parallel problems and the practical tools to know where to turn to implement them."

Senior Member of Technical Staff

Sandia National Labs

 

Sandia Case Studies

 

Download Sandia National Labs Case Study

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 pre-requisite for this course.

Benefits

  • 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 and 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 exercises designed to increase your understanding of multithreading.

Course Objectives

  • In-depth theoretical background covering multicore processor architecture, concurrent programming, parallel programming concepts and considerations.
  • 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 are covered in-depth.
  • 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.
  • How to avoid synchronization pitfalls such as starvation, deadlock, live lock and data races.
  • How to implement and tune parallel algorithms.
  • Define and use different synchronization methods effectively including mutexes/critical sections and conditional 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.
  • Hands on experience with the Intel Compiler to build and run multithreaded programs during the hands-on learning laboratories and case studies.
  • Best practices to deal with MT-unsafe libraries and how to write new thread-safe libraries.