Objectif :
Cette formation permet de se familiariser avec les outils et stratégies de programmation parallèle disponibles dans l’écosystème du langage C++.
Bénéfices attendus :
Connaître les métriques utiles du parallélisme.
Se familiariser avec la programmation sur multi-cœurs.
Se familiariser avec la programmation distribuée.
Public :
Ingénieurs, techniciens et scientifiques désirant s’initier à la programmation parallèle.
Une première expérience en C++ est nécessaire.
Programme :
Introduction
Historique des architectures modernes
Historique du langage
Positionnement dans l’écosystème logiciel
Éléments de base du parallélisme
Loi de Moore
Classification de Flynn
Compute bound ou Memory bound
Scalabilité forte : Loi d’Amdahl
Scalabilité faible : Loi de Gustafson-Barsis
Métrique de performance : accélération
Métrique de performance : efficacité
Métrique de Karp-Flatt
Mise en pratique : exercices, évaluation
Programmation multi- threading
Principes généraux
Multi-threading en C++ standard
Synchronisations : mutex, condition variable, atomique
Promesses et Futures : calcul asynchrone
Programmation multi-threads via OpenMP
Mise en pratique : exercices, évaluation
Programmation distribuée
Le standard MPI
Communications synchrones
Communications collectives
Communications asynchrones
Mise en pratique : exercices, évaluation