The student will be provided with the skills of parallel and distributed computing. He/She will learn the major parallel distributed architectures and parallel distributed programming paradigms, environments and tools. He/She will be also introduced with some concepts of administration of parallel machines.
Program
Overview of parallel distributed machines (shared-memory machines, distributed-memory machines, coprocessors and GPU accelerators, large-scale environments – A case study: Grid’5000).
Parallel distributed algorithm design and programming
Paradigms of parallel and distributed programming (task parallelism, data parallelism, shared memory paradigm, message passing paradigm).
Parallel distributed programming environments and tools (OpenMP, MPI, Cuda).
Fundamental problems of parallel distributed programming (task / data partitioning, load balancing, scheduling, fault tolerance, performance evaluation).
Getting started with parallel machine administration through Grid'5000 (resource reservation, application deployment, monitoring, fault tolerance, etc.).
Towards the exascale era: challenges and alternatives of massively parallel and heterogeneous programming.
Acquired skills
The student will learn how to design and implement parallel and/or distributed computing applications (using MPI, OpenMP, and Cuda). The course will also allow the student to discover the required tools for the deployment and execution of those applications, and the evaluation of their performances on parallel/distributed small- and large-scale machines (networks of workstations, clusters of multi-core/GPU processors, and computational grids).
Exam and grades
An exam mark (Exam/ 20) and a practical project mark (PP / 20), applying the formula MARK = (Exam + PP) / 2.
- Enseignant: Nouredine Melab