Dynaflow RESEARCH GROUP
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 really 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.