Composante
ENSEIRB-MATMECA
Code interne
EI9IT390
Description
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.
Pré-requis obligatoires
Notions de parallélisme.
Connaissance du C/C++ (en particulier la gestion de la mémoire)
Informations complémentaires
Fonctionnement et optimisation de code pour les multicoeurs et les accélérateurs de calcul de type GPU.
Modalités de contrôle des connaissances
Évaluation initiale / Session principale - Épreuves
Type d'évaluation | Nature de l'épreuve | Durée (en minutes) | Nombre d'épreuves | Coefficient de l'épreuve | Note éliminatoire de l'épreuve | Remarques |
---|---|---|---|---|---|---|
Projet | Travail sur machine | 1 | ||||
Projet | Soutenance | 1 |