ECTS
6 crédits
Composante
ENSEIRB-MATMECA
Code interne
EI9CISA
Liste des enseignements
Langages du parallélisme
Composante
ENSEIRB-MATMECA
Ce cours présente les différents langages de parallélisme utilisés aujourd'hui pour paralléliser les applications de simulation.
Le cours sera découpé en trois parties. Les deux premières parties présenteront le modèle Message Passing Interface et OpenMP. La troisième partie étudiera la programmation hybride MPI+X.
Multicoeurs et accélérateurs de calcul
Composante
ENSEIRB-MATMECA
Le cours est décomposé en 2 parties. L'une sur le fonctionnement des multicoeurs généralistes, l'autre sur le fonctionnement des accélérateurs graphiques.
L'objectif de ce cours sera d'une part de présenter ces architectures, et d'autre part d'apprendre à les programmer efficacement à l'aide :
- de flags de compilation
- d'extensions du compilateur (SIMD, fonction intrinsèques),
- d'annotations de code (OpenACC),
- de langages specifiques (CUDA),
- de bibliothèques optimisées (CUBLAS),
- d'outils d'analyse de performances,
- de support d'exécution à base de tâches (StarPU) pour articuler les multicoeurs généralistes et les accélérateurs graphiques.
La description du fonctionnement de ces architectures sera mise en oeuvre par le biais de microbenchmarks, pour bien comprendre le lien entre le code écrit, le code généré par les compilateurs et leurs performances.
Des TPs seront consacrés à l'écriture, au debug, et à l'optimisation de code accéléré sur GPU et sur multicoeurs, ainsi qu'a l'analyse des performances.
Outils et environnements pour le HPC
Composante
ENSEIRB-MATMECA
Apprentissage des outils du HPC, utilisation des clusters de calculs, job schedulers (slurm)
Outils d'analyse des programmes HPC (Intel Vtune, Nvidia nvprof, ...)