Parallel programming

PHYS-743

Media

This file is part of the content downloaded from Parallel programming.

Course description

This two-week intensive course introduces the fundamental concepts, tools, and APIs for debugging, testing, and parallelizing scientific applications on modern HPC clusters. You will learn how to efficiently develop and run scientific codes on both shared-memory (OpenMP) and distributed-memory (MPI) architectures.

The first week combines lectures and guided hands-on sessions, covering topics from sequential code optimization to parallel programming with OpenMP and MPI. Using a simple numerical solver as a running example, you will apply standard tools such as gdb, valgrind, perf, and Intel Amplifier to analyze and improve performance, culminating in a hybrid parallel implementation.

The second week focuses on a personal project, where you will apply the techniques learned to your own (or a provided) scientific application. By the end of the course, you will be able to design, analyze, and parallelize real-world scientific programs effectively on HPC systems.

Prerequisites: Basic programming knowledge in C, C++, Fortran, or Python.
Note: GPUs and accelerators are not covered in this course.
Students must bring their own laptop.



General Information

All the course material can be obtained from the Parallel Programming course GitLab.


You can directly obtain the source code for the exercises and course examples using the following links.

Exercises:

> git clone https://gitlab.com/epfl-parallel-programming/parallel-programming-exercises.git

Examples from the course:

> git clone https://gitlab.com/epfl-parallel-programming/parallel-programming-lecture-codes.git

The slides can be directly downloaded from the section below.

Monday

Introduction, software development cycle, node optimization


Tuesday

Parallel programming theory, shared memory programming with OpenMP


Wednesday

Distributed memory programming with the Message Passing Interface API (MPI)


Thursday

Distributed memory programming with advanced MPI


Friday

Hybrid programming : MPI + OpenMP

Projects presentation


Week 2 + 3 : from November 21 to November 30

Personal project weeks

Students have 2 weeks to finish a personal project on their code