Parallélisme multi-architecture avec la bibliothèque C++/Kokkos
Du lundi 11 décembre 2023 à 14h00 au mercredi 13 décembre 2023 à 17h00
Formation
Le Cerfacs est certifié Qualiopi pour ses actions de formation
Durée : 2,5 jours / 17 heures
Session de formation en présentiel
Descriptif
Cette formation s'adresse aux développeurs d'applications en calcul haute performance qui souhaitent refactorer leurs codes pour les rendre portables et performants sur la majorité des architectures matérielles de calcul utilisées sur les supercalculateurs nationaux et européens, que ce soient des CPU multi-coeurs (x86, ARM64, …) ou GPU (Nvidia /AMD / Intel). Nous présenterons la bibliothèque C++/Kokkos développée principalement aux Etats-Unis dans le cadre du projet ECP (Exascale Computing Project) en illustrant les avantages apportés par cette bibliothèque par rapport aux solutions alternatives, notamment l'approche utilisant la programmation en mémoire partagée par directives (OpenMP target, OpenACC). La portabilité de performance est devenue, ces dernières années, une préoccupation majeure en calcul scientifique dans un contexte où la pérennité et la maintenance des codes est de plus en plus difficiles.
Objectif de la formation
Fournir une introduction aux concepts et abstractions proposés par la bibliothèque C++/Kokkos et son écosystème afin de développer des applications parallèles en mémoire partagée utilisant au mieux les ressources matérielles d'un nœud de calcul.
Objectifs pédagogiques
À l’issue de la formation, les participants devront être capables :
- d’installer la bibliothèque C++/Kokkos et d’intégrer son utilisation dans un code de calcul existant
- d’écrire les noyaux de calcul et de manipuler les conteneurs de données Kokkos
- d’utiliser des outils de profilage afin de vérifier les performances
- de rechercher et utiliser la documentation de Kokkos pour utiliser les fonctions avancées de la bibliothèque,
- de mettre en oeuvre la bibliothèque dans un cas applicatif complexe.
Modalités pédagogiques
La formation est une alternance d’exposés théoriques et de travaux pratiques. Un QCM permet l’évaluation finale. La salle de formation est équipée d’ordinateurs, le travail peut se faire en sous-groupe de deux personnes.
Formateur référent : Pierre Kestener
Public cible
Ce cours s'adresse à toute personne du domaine du HPC (ingénieurs, doctorants, post-doctorants) désirant ré-usiner, refactorer des codes de calcul existants, ou commencer de nouveaux codes en intégrant la portabilité multi-architecture (CPU / GPU) au cœur du processus de développement.
Prérequis
Afin de pouvoir suivre cette formation vous devez :
- être salarié d’une entreprise européenne, une attestation de l’employeur est demandée,
- être diplômé Bac + 5 ou plus
- connaître les bases du langage C++, niveau intermédiaire
- connaître la programmation parallèle en mémoire partagée (notions de base d’OpenMP et/ou multithreading par exemple)
- avoir un intérêt pour le calcul haute performance
- avoir un niveau B2 sur l'échelle européenne CECRL car la formation peut avoir lieu en anglais ou en français selon l'auditoire.
Il n’est pas nécessaire de connaître la programmation GPU/CUDA ; un rappel des concepts de base sera fourni en début de formation.
Afin de s'assurer que les prérequis sont bien satisfaits, nous vous prions de bien vouloir répondre aux questionnaires suivants . Vous devez obtenir 75% de bonnes réponses pour vous inscrire à cette formation.
Questionnaire : https://forms.gle/HZwCM9Jbt2bM8LTr8
Inscription
Je certifie avoir obtenu au moins 75% de bonnes réponses, je m’inscris
Limite d'inscription : 15 jours avant le début de chaque formation
Avant de vous inscrire, merci de nous signaler toutes contraintes particulières dont vous souhaiteriez nous faire part (horaires, santé, indisponibilité…) à l’adresse e-mail suivante : training@cerfacs.fr
Tarifs
Cette formation, financée dans le cadre du projet européen EuroCC2, est gratuite mais réservée aux salariés des entreprises membres de l’Union Européenne. Elle est normalement au prix catalogue de 1360 € HT. Néanmoins, votre inscription est conditionnée au versement d’une caution de 200 Euros. Cette somme vous sera restituée en fin de formation si votre participation a bien été effective. Sinon, elle sera conservée en compensation du préjudice causé en laissant inutilement des personnes sur liste d’attente.
Programme
Lundi 11 décembre, de 14h00 à 17h00
- Rappel sur les architectures matérielles CPU / GPU, sur les mesures de performances (bande passante mémoire, FLOPs) pour comprendre la difficulté d'écrire du code portable. Exercice pratique.
- Introduction générale à la bibliothèque Kokkos, origine, vue d'ensembles des concepts et abstractions : le modèle de machine abstrait (host/device), le modèle de programmation
- Exemples d'applications, code de productions utilisant déjà C++/Kokkos
- Exercice pratique : compiler et installer la bibliothèque Kokkos pour le paralélisme CPU/OpenMP et GPU/CUDA; choix du compilateur, intégration dans un project CMake; utilisation d'un modulefile sur supercalculateur
Mardi 12 décembre, de 9h00 à 17h00
- Écriture de noyaux de calcul C++/Kokkos: boucles parallèles for, reduce et scan.
- Concept d'espace d'exécution, d'espace mémoire et de politique d'exécution unidimensionelle, multidimensionnelle
- Mise en oeuvre des conteneurs de données de type tableaux multidimensionnels (Kokkos::View) et table de hashage/dictionnaire (Kokkos::UnorderedMap)
- Mise en oeuvre des outils de profiling: Kokkos::Tools
Mercredi 13 décembre, de 9h00 à 17h00
- Utilisation avancée de C++/Kokkos : le parallélisme hiérarchique (mise en œuvre d'équipes de threads d'exécution). Exemples d'applications.
- Mise en œuvre dans une application de type CFD
- Couplage MPI/Kokkos pour les applications distribuées, introduction à Kokkos/RemoteSpace
- Ecosystème Kokkos: algèbre linéaire (KokkosKernels), pykokkos (bindings python)
- Kokkos pour les applications Fortran : utilisation du module Kokkos/FLCL (Fortran Language Compatibility Layer)
Evaluation des acquis
Un examen final aura lieu à la fin de la formation.