Parallel Programming

About The Course

This course is a practical introduction to parallel programming. The course explains the basic concepts of programming for parallel computers and focuses on the two common parallel programming models: the message passing model in combination with MPI, and the shared memory model in combination with both OpenMP and (POSIX) threads. You will learn how to divide a set of computations into parallel tasks; how to coordinate the execution of those tasks; how to transfer data between the tasks; and how to resolve dependencies between the tasks.

The course mixes theory with practical, hands-on exercises. These exercises enable you to apply newly learned knowledge in smaller and larger contexts, and thus provide an opportunity to understand different aspects related to parallel programming. Some of the exercises involve implementing the same algorithm with different programming models so that the differences between those models become more apparent.

After completing the course, you should be able to design and implement parallel algorithms using a programming model that provides the best match with the algorithm and the target hardware. You should be able to assess the performance of the implementation and solve all kinds of practical problems that will pop up during the implementation of the algorithm.

Program Details

  • Parallel Computer Architectures
  • Performance Characteristics
  • Parallel Programming Models
  • Parallel Program Design
  • Message Passing with MPI
  • Point-to-Point Communication
  • Collective Communication
  • Programming with OpenMP
  • Parallel Regions
  • Parallel Reduction
  • Critical Sections and Atomic Operations
  • Programming with Threads
  • Spawning and Joining Threads
  • Mutexes
  • Condition Variables
  • Final Exercise

Classroom 

This course is scheduled for 4 work days. The dates of the course are organized upon inquiry.

This course is available in the classroom format.

Prerequisites and level

  • Experience with the C programming language is required. In particular, you must be familiar with the type system, basic statements, pointers, arrays, dynamic memory allocations, functions and structures.

  • Not sure? Please contact us.

Intended For

The training course is aimed at students, researchers and professional software developers who seek to take advantage of multi-core processors and other kinds of parallel computers.

Participants of the classroom course receive a personal physical certificate upon the completion of the course.

Example certificate:

Select Course Format

Classroom

Price on request
  • Face-to-face with instructors
  • On-site or in Rijswijk
  • Printed course materials
  • Lunch included
  • 1-year access to self-paced course
  • For teams of minimum 4 people

Related Courses In Programming

Parallel Programming

Training Courses Parallel Programming About The Course This course is a practical introduction to parallel programming. The course explains the basic concepts of programming for

Read More »

Jive

Training Courses Jive About The Course DRG provides both a regular Jive introduction course and custom-made courses that are aimed at specific topics. The introduction

Read More »