Résumé
Mel22
Prochaine session : du 26 au 29 septembre 2023
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
A+Augmenter la taille du texteA-Réduire la taille du texteImprimer le documentEnvoyer cette page par mail
- Ville : GRENOBLE
- Tarif : 2 600 €/personne
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
Contacts
A+Augmenter la taille du texteA-Réduire la taille du texteImprimer le documentEnvoyer cette page par mail
- 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 pratiquesDé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 pratiquesDé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
A+Augmenter la taille du texteA-Réduire la taille du texteImprimer le documentEnvoyer cette page par mail
A+Augmenter la taille du texteA-Réduire la taille du texteImprimer le documentEnvoyer cette page par mail
A+Augmenter la taille du texteA-Réduire la taille du texteImprimer le documentEnvoyer cette page par mail