DFP_Bann_Transformation_Numérique

Processeur graphique GPU - Architecture et programmation

Présentation

  • Ville
    • GRENOBLE Presqu'île
  • Durée 4 jours
  • Accessible en
    • Formation continue

Résumé

Mel22

Prochaine session : du 28 au 31 mai 2024

Objectifs

  • Connaître les éléments clés des architectures et de la programmation des GPU
  • Savoir porter et optimiser une application scientifique sur processeur graphique pour multiplier par 10 à 100 ses performances
  • Savoir programmer en CUDA sur GPU
  • Se familiariser avec le modèle de streaming CUDA et le multi GPU

Nos atouts pédagogiques

Cette formation s’appuie sur les moyens techniques que met à disposition l’école Grenoble INP - Phelma, UGA, en particulier pour sa filière SICOM « Signal, Image, Communication, Multimédia ».

Les intervenants sont des enseignants-chercheurs et chercheurs du département Image au sein du laboratoire Gipsa Lab, spécialistes reconnus dans le domaine de l’adéquation algorithme architecture.

 
Les plus de la formation :
 
  • Alternance entre apports théoriques et applications pratiques
  • 60 % de la formation se déroule sous forme de travaux pratiques avec des études de cas sur ordinateurs (1 poste par stagiaire)
  • les codes sources des exemples traités sont fournis lors de la formation
  • l’encadrement important lors des séances pratiques (au minimum 1 enseignant pour 5 stagiaires) permet une progression rapide adaptée à chacun
 
phelma
 

Admission

  • Tarif 2 600 €/personne
  • Accessible en :
    • Formation continue

Conditions d'admission


Pour qui ?
Cette formation s'adresse à des ingénieurs ou techniciens impliqués dans la conception de logiciels de traitement de données à fortes contraintes de performance.

Pré-requis : Connaissance de la programmation en Langage C.

Effectif : de 4 à 8 personnes

 

Programme

  • Durée des études 4 jours

Programme

Jour 1- Architecture des GPU


  • Historique des GPU, pipeline graphique
  • Architecture comparée des GPU (ATI, Nvidia, Intel) et Xeon Phy
  • Présentation de l’API CUDA et de la chaîne de compilation
  • Comparaison avec OpenCL
  • Modèle de programmation et d’exécution (blocs, warps)
  • Modèles de mémoires (textures, constantes, shared, globale, host)
  • Méthodologie de portage sur GPU

Après-midi : Travaux pratiques
  • Prise en main du GPU et de son environnement de développement sur des exemples du SDK Nvidia (rotation d'image, filtre convolutif, tri...)
  • Développement d’un filtre passe bas sur image en niveaux de gris avec textures

Jour 2 - Programmation parallèle des GPU et CPU


  • Points forts et faiblesses du modèle de programmation parallèle
  • Architecture détaillée des familles Nvidia
  • Multithreading, Hyperthreading
  • Structuration des données (tiling, gestion des scratchpads)
  • Précision des calculs
  • Communication parallèle (débit, latence)
  • Mémoires (types, accès, gestion) et cohérence des données (mémoires
  • Caches, partagées, globales, synchronisation)
  • Outils d’analyse de performance (optimisation, profiler, debug…)

Après-midi : Travaux pratiques

Développement d’un traitement de type Stencil avec mémoire shared, et réduction d’image avec histogramme

Jour 3 - Programmation avancée


  • Multi-GPU, fonctionnement asynchrone (streams)
  • Lien avec MPI/OpenMP,
  • Schémas de parallélisation (Stencils, Reduction, …)
  • Optimisation parallèle (profiler)
  • Lien CUDA / OpenGL
  • Nouveautés CUDA 8 et 9

Après-midi : Travaux pratiques
Développement d’un filtre complexe de détection de contour de Deriche avec mémoire shared et globale, avec lissage récursif et transposition optimisée

Jour 4 - Mises en situations pratiques


Développement d'une application multi-GPU

International

  • Stage à l'étranger Non

Débouchés