Diplômes intégrant cet élément pédagogique :
Descriptif
In this course, we will introduce the basics of “classical” high-performance computing (HPC) in the context of applied mathematics.
It will be based on the three main pillars of HPC:
1) Single-core performance:
Students will be made familiar with the basics of computer architectures such as the Instruction Set Architecture (ISA), Memory access, Caches, Registers, Stack, Pipelining, Superscalar execution, SIMD. This allows them to understand the single-core performance of programs.
2) Shared-memory systems:
Students will be made familiar to shared-memory HPC systems and their parallelization models. For practical aspects, we will use the OpenMP programming model with its fork-join and tasking models.
3) Distributed-memory systems:
In this part, the students will learn how to use MPI to parallelize their programs on large scale super computers.
Besides these three main pillars, students will be made familiar to theoretical concepts such as scalability models (Amdahl, Gustafson), Flynn's taxonomy, von-Neumann architecture, etc.
Different lab assignments allow the students to gain a practical understanding of high-performance computing.
Pré-requis recommandés
Programming language:
- Either being already familiar with the C or C++ programming language
- OR being willing to do a short tutorial about C on your own.
Computer fundamentals:
- Binary/hexadecimal systems, floating point numbers
- Using Linux-based computers, ssh access to other computers, bash (or being willing to learn this)
Informations complémentaires
Langue(s) : FrançaisEn bref
Période : Semestre 8Crédits : 3
Volume horaire
- Cours magistral - Travaux dirigés : 9h
- TP : 18h