
Formation : Introduction Ă OpenACC et OpenMP GPU
Responsable : Thibaut Véry
Intervenants : Thibaut Véry, Olga Abramkina, Xuezhou Lu
Cette formation de 3 jours vous permet de maßtriser la programmation GPU avec les directives OpenACC et OpenMP 5.0 en C/Fortran, en comprenant les architectures hybrides, les concepts clés, les compromis de performance et les outils de profilage pour implémenter efficacement ces approches sur des applications réelles.
Les objectifs détaillés de la formation sont les suivants :
- 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, tels que NSight.
- Comprendre les différences entre OpenACC et OpenMP target, et choisir le langage le plus adapté à chaque situation.
- Public concerné
- Pré-requis
- Durée et modalités
- Contenu de la formation
- Supports de cours
- Prochaines sessions
Public concernĂ©â
Ingénieurs, chercheurs et développeurs souhaitant maßtriser la programmation GPU avec des directives de parallélisation. Cette formation s'adresse à toute personne impliquée dans le calcul haute performance qui désire acquérir une expertise en OpenACC et OpenMP 5.0 pour optimiser ses applications sur architectures hétérogÚnes GPU/CPU.
PrĂ©-requisâ
Pour tirer le meilleur parti de cette formation, vous devez disposer des connaissances suivantes :
- Obligatoire : Connaissance et utilisation de la programmation en Fortran 90/95 et/ou C, incluant la compilation et l'exécution de programmes
- Optionnel : Connaissances de base en OpenMP et/ou MPI pour mieux comprendre les concepts de parallélisation
DurĂ©e et modalitĂ©sâ
Cette formation dure 3 jours, avec un accueil le 1er jour à 9h00 puis des horaires de 9h30 à 17h30. Elle a lieu uniquement en présentiel dans les locaux de l'IDRIS à Orsay (91).
Assistanceâ
Minimale : 8 personnes ;
Maximale : 20 personnes.
Contexteâ
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.
Contenu de la formationâ
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 succincte 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 asynchrone 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).
Pour une exĂ©cution efficace des parties pratiques, celles-ci se dĂ©rouleront sur le supercalculateur Jean Zay. Une station de travail avec accĂšs au calculateur de l'IDRIS est mise Ă disposition des apprenants. Une expĂ©rience dans lâutilisation dâun supercalculateur, tout comme un accĂšs prĂ©alable Ă celui-ci, ne sont pas requis.
Support de coursâ
Tous les supports de cours, y compris les diapositives, les notes et les exercices pratiques, sont fournis sous la licence suivante : Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0). Pour plus de détails sur la licence, veuillez consulter cette page.
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.
Supports de cours (en anglais)â
Pour consulter les dates des prochaines sessions de cette formation, rendez-vous sur la page suivante :
Inscription
Personnel CNRS/EPSCP/université française | Participants externes |
Vous ĂȘtes personnel du CNRS, d'une universitĂ© française ou d'un Ă©tablissement public Ă caractĂšre scientifique, culturel et professionnel (EPSCP) ? Votre inscription est gratuite via notre serveur. | Nos formations sâadressent Ă tous les professionnels des entreprises, organismes publics et particuliers. |