Programmation GPU
Ref: 3MD4110
Description
Ce cours a pour objectif de présenter l'algorithmique et la programmation à haute performance sur GPU, avec des mises en oeuvre sur des algorithmes de Machine Learning, et sur des plates-formes de calculs équipées de GPU.
Période(s) du cours
SM11
Prérequis
- Cours commun de 1A : Systèmes d'Information et Programmation (1CC1000)
- Cours commun de 1A : Algorithmique & Complexité (1CC2000)
- Cours de Programmation Avancée en C++ (3MD1020) de la mention SDI à Metz
- Cours d'Apprentissage Automatique (3MD1040) de la mention SDI à Metz
Syllabus
- Architecture des GPU
- Principes algorithmiques du parallélisme de données à grain fin sur GPU (modèles SIMD et SIMT)
- Programmation en CUDA
- Utilisation de la bibliothèque CUBLAS
- Optimisations de codes GPU et CPU-GPU, en CUDA
- Conception et mise en oeuvre d'un algorithme de K-means sur GPU
Composition du cours
Cours structuré en 3 parties :
- 2 parties de développement en CUDA (bases et concepts avancés), contenant chacune du cours et des mises en oeuvre sur machines
- une partie partie sur le développement en CUDA d'un algorithme de K-means, contenant un TD et des mises en oeuvre sur machines
Répartition globale : CM : 7h30, TD : 1h30, TP : 11h00 (total 20 HPE)
Plan du cours :
- Partie 1 : Architecture des GPU, et principes d'algorithmique et de programmation CUDA
- CM : 3h00, TD : 1h30, TP : 3h00
- Partie 2 : Optimisation de codes CUDA, et utilisation de bibliothèques
- CM : 4h30, TP : 3h00
- Partie 3 : K-means sur GPU
- TP Part-1 : 3h00, TP Part-2 : 2h00
Ressources
- Equipe enseignante : Stéphane Vialle.
- Plateforme de développement et d'exécution : serveurs de GPU du Data Center d'Enseignement du campus de Metz de CentraleSupélec.
- Environnements de développement CUDA de NVIDIA.
Résultats de l'apprentissage couverts par le cours
- A la fin de ce cours les élèves seront en mesure :
- AA1 : d'analyser l'adéquation d'une solution mathématique avec une implantation et une exécution sur GPU,
- AA2 : de concevoir un algorithme sur GPU, ou d'adapter un algorithme pour qu'il soit plus efficace sur GPU,
- AA3 : de concevoir des algorithmes hybrides CPU-GPU avec des recouvrement des transferts de données et des calculs
- AA4 : d'implanter des algorithmes et de mettre au point des codes sur GPU
- AA5 : d'analyser et de décrire synthétiquement des solutions sur GPU
Support de cours, bibliographie
- Slides de l'enseignant
- J. Sanders and E. Kandrot. "CUDA by Example: An Introduction to General-Purpose GPU Programming". NVIDIA. 2010.