Introduction à OpenACC et OpenMP GPU

Responsable :

Objectifs :

  • Comprendre les architectures hybrides accélérées (GPU) et les contraintes de programmation associées.
  • Utiliser les directives OpenACC et OpenMP 5.0 pour paralléliser des codes existants ou en écrire de nouveaux en C/Fortran.
  • Appréhender les concepts clés de ces langages de programmation, tels que les directives, les clauses, les régions parallèles, et la gestion des données.
  • Comprendre les avantages et les inconvénients de l'utilisation de ces approches en termes de portabilité, de performances, de complexité et de facilité d'implémentation.
  • Être capable de mettre en œuvre ces concepts sur des exemples concrets issus d'applications réelles, telles que la simulation numérique.
  • Évaluer les performances de ces codes en utilisant des outils de profilage et d'analyse de performances, tels que NSight.
  • Comprendre les différences entre OpenACC et OpenMP target, et choisir le langage le plus adapté à chaque situation.

Public concerné :

Ingénieurs et chercheurs

Pré-requis :

  • connaissance et utilisation de Fortran 90/95 ou C
  • (optionnel) connaissance de base en OpenMP et/ou MPI

Durée et modalités :

Cette formation dure 3 jours.

Accueil : 9h00 Horaires : de 9h30 à 17h30

Elle a lieu uniquement en présentiel dans les locaux de l'IDRIS à Orsay (91)

Assistance :

maximale : 20 personnes, minimale : 8 personnes.

Programme :

Depuis le début de la décennie 2010, l'utilisation des cartes graphiques (GPU) comme dispositifs d'accélération de certains types de calculs a crû de façon rapide et, alors qu'elles avaient été initialement conçues pour les jeux vidéo, leur utilisation pour le calcul scientifique a connu une progression régulière.

Plusieurs approches ont été développées pour permettre aux scientifiques d'exploiter la puissance de calcul des GPU. Dans un premier temps, des langages de programmation spécifiques aux architectures (par exemple CUDA pour NVidia) ou génériques (comme OpenCL) ont été mis à disposition des programmeurs. Ces langages sont de bas niveau et nécessitent une réécriture importante des codes de calculs.

OpenACC et OpenMP (target) utilisent des directives pour annoter les codes et permettre l'utilisation des GPU. Les modifications apportées aux codes sont moins intrusives et permettent d'obtenir des résultats très souvent proches des langages bas niveau. C'est cette approche que nous présentons lors de cette session.

Le cours est divisé en plusieurs modules qui permettent d'aborder différentes notions essentielles à la programmation sur GPU avec des directives :

  • Bien débuter : Présentation succinctes des directives principales pour être capable rapidement d'exécuter du code sur les cartes graphiques.
  • Analyse de code : Présentation des outils de profilage de code sur GPU et CPU pour identifier les parties importantes pour un portage progressif d'un code CPU.
  • Gestion des données : Les transferts de données entre CPU et GPU sont l'un des principaux facteurs limitant les performances. Ce module présente les directives qui permettent de les optimiser.
  • Programmation modulaire : Présentation des directives nécessaires pour porter un code modulaire.
  • Optimisation des noyaux de calculs : Présentation des clauses avancées pour la gestion des noyaux de calculs.
  • Recouvrements calculs/transferts : Exécution asynchrones des noyaux et transferts.
  • Multi-GPU : Utilisation de plusieurs GPU lors des calculs avec un couplage des directives GPU avec MPI et/ou OpenMP CPU

50 % du temps sera consacré aux travaux pratiques (langage C ou Fortran)

Ressources pédagogiques

Le cours est écrit avec des Jupyter Notebooks afin de rendre la pratique plus interactive et pouvoir intégrer des exercices simples en plus des travaux pratiques. Ces notebooks en C et Fortran sont mis à disposition ainsi qu'un document PDF les agrégeant.

Les fichiers sources des exercices et travaux pratiques sont également mis à disposition.

Équipement :

supercalculateur de l'IDRIS

Intervenants :

S’inscrire à cette formation :

Pour vous inscrire à cette formation, contactez CNRS Formation Entreprises : . Toutefois, si vous êtes personnel du CNRS ou d'une université française, votre inscription est gratuite via notre serveur : https://cours.idris.fr

Accéder à la fiche de cette formation dans le catalogue CNRS Formation entreprises : https://cnrsformation.cnrs.fr/introduction-openacc-et-openmp-gpu?axe=162