Programmation parallèle pour le Machine Learning
Enseignant
Crédits ECTS :
3
Heures de cours :
18
Heures de TD :
0
Langue :
Français
Modalité d'examen :
mém.
Objectif
Ce cours est enseigné par Xavier Dupré et Matthieu Durut.
Ce cours aborde la programmation sur CPU (le processeur de calcul classique) et GPU (celui des cartes graphiques). Le but est de parvenir à écrire des programmes efficaces en tirant partie de l’architecture du matériel.
Une première partie du cours présente l’architecture d’un ordinateur, et en particulier tout ce qui permet tout ce qui permet à des programmes informatiques de s’exécuter en parallèle et de communiquer entre eux.
Les séances qui suivent mettent en pratique ces notions, avec d’abord de la programmation en C++ sur CPU avec des exemples d’implémentation efficace d’algorithmes, et ensuite de la programmation sur GPU.
Plan
Éléments d’architecture : hardware, mémoire partagée, ordre de grandeur vitesse CPU, communication
Exécution parallèle : algorithmes répartis, multithread, race condition, verrou
Parallélisation sur CPU : outils de développement, exemples de programmes parallèles, application à des algorithmes de machine learning (Random Forest etc.)
Programmation GPU :
CUDA, threads, gestion de la mémoire
Pointeurs, interaction GPU/CPU, utilisation de __inline__, __globals__
PyTorch : implémentation d’une extension
Références
Plateforme utilisée pour les TP : SPP Cloud