ENSAE Paris - École d'ingénieurs pour l'économie, la data science, la finance et l'actuariat

Programmation parallèle pour le Machine Learning

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 : 

    1. CUDA, threads, gestion de la mémoire

    2. Pointeurs, interaction GPU/CPU, utilisation de __inline__, __globals__ 

    3. PyTorch : implémentation d’une extension 

Références