Description: The frequency of a core in modern processors has been stagnating for more than a decade now. Hence, it becomes unavoidable to use multiple cores and computers in parallel to accelerate a computation. We start this course with a tour of C++, as it is the go-to language for many high-performance framework and scientific applications. We then study the class of embarrassingly parallel algorithms, using the C++ standard library (std::threads) and the OpenMP specification language. Afterwards, we take a deep dive into the peculiarities and challenges of nondeterminism with shared memory parallelism. We terminate the course with a focus on message passing using MPI.
This course is given in the Master in High Performance Computing at the University of Luxembourg. On this page, you can access all the recorded videos and laboratories. For the students in the MHPC, the course is self-paced—they unlock videos and labs progressively—and the laboratories are reviewed for correctness, performance and coding style. Students keep track of their progresses here. We assume programming knowledge.
Video credits: recorded with Paul Aromolaran, edited by Wei Huang. Thanks to the media center@uni.lu for their assistance in this project!