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.