
Actions transversales
Groupe de travail sur l'accélérateur
Bienvenue dans notre groupe de travail sur l'accélérateur
De nos jours, 90 à 99 % des performances des machines à grande échelle proviennent des accélérateurs. Ceux-ci étant massivement multithreadés, ils nécessitent la génération de binaires de calcul spécifiques qui exploitent le parallélisme massif (noyaux), ainsi que la gestion de l’exécution concurrente entre les processeurs à usage général et les accélérateurs. La migration des applications existantes afin de tirer parti des accélérateurs constitue donc un défi à la fois essentiel et ambitieux. Le groupe de travail « Accelerator » du projet NumPEx a ainsi pour objectif d’aider les développeurs d’applications à mettre en place une programmation productive et une exploitation efficace des accélérateurs.
Dans les cas d’application les plus favorables, il existe déjà des bibliothèques qui fournissent les capacités de calcul requises par les applications ; par exemple, les opérations BLAS courantes sont généralement prises en charge par les fabricants d’accélérateurs eux-mêmes, tandis que les opérations d’algèbre linéaire plus complexes, nécessitant la prise en charge de plusieurs accélérateurs, peuvent être gérées par des bibliothèques tierces telles que Chameleon. Il peut également exister des frameworks complets permettant d’exprimer le calcul souhaité et laissant une chaîne de compilation générer des binaires prêts à être exécutés sur les accélérateurs. Dans de nombreux cas cependant, les développeurs d’applications doivent porter leur propre code source sur les accélérateurs. Cela peut se faire soit en programmant directement dans le langage fourni par le fabricant (CUDA/HIP), au détriment de la portabilité, soit à l’aide d’approches de plus haut niveau telles que Kokkos ou OpenACC. Dans tous les cas, l’exécution des noyaux de calcul ainsi obtenus doit être optimisée en fonction du système cible.
Les lots de travail du projet NumPEx portent notamment sur plusieurs aspects :
-
- Soutien à l’accélérateur pour les méthodes numériques et les algorithmes du projet
- Modèles de programmation basés sur la composition pour les accélérateurs
- Génération du noyau optimisée par le compilateur, générant différentes variantes
- Gestion de l’exécution des approches basées sur les tâches pour optimiser l’exécution
- Profilage et programmation de l’énergie
- Portabilité du déploiement de la version binaire résultante
Le groupe de travail « NumPEx Accelerator » prévoit de mener les actions suivantes :
-
- Alimenter un appel à projets pour compléter les contributions NumPEx
- Organiser des tutoriels sur les différentes approches (en collaboration avec le groupe de travail sur la formation NumPEx et le CExA).
- Organiser des ateliers avec les fabricants pour vérifier les propositions, les solutions et les feuilles de route.
- Organiser des ateliers sur les approches d’optimisation basées sur la compilation
- Organiser des ateliers sur les approches de programmation
- Fournir des exemples de ports d’application, sous forme de mini-applications, pour démontrer des méthodologies efficaces.
- Publier des documents d’analyse pour décrire la situation actuelle et justifier le portage d’applications.
Nos événements
Journées programmation GPU - 12-13 juin 2024
Les 12 et 13 juin 2024, le groupe a organisé un atelier afin de procéder à un premier état des lieux de la situation actuelle :
-
- Nous avons décrit les différentes approches disponibles
- Nous avons recueilli les réactions des programmeurs utilisant les différentes approches
- Nous avons réfléchi aux contributions qui pourraient compléter les plans NumPEx existants, afin d’alimenter un appel à projets « GPU ».

