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.
Comme ces derniers sont massivement multithreadés, ils nécessitent la génération de binaires de calcul spécifiques qui exposent le parallélisme massif(noyaux), et la gestion de l’exécution concurrente entre les CPU génériques et les accélérateurs.
La migration des applications existantes vers les accélérateurs est donc un défi à la fois essentiel et ambitieux.
Le groupe de travail « Accélérateurs » du projet NumPEx a donc pour objectif d’aider les développeurs d’applications à programmer de manière productive et à exploiter efficacement les 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 dont les applications ont besoin. Par exemple, les opérations BLAS habituelles sont généralement prises en charge par les fabricants d’accélérateurs eux-mêmes, et les opérations d’algèbre linéaire plus complexes avec prise en charge de plusieurs accélérateurs peuvent être prises en charge par des bibliothèques tierces telles que Chameleon.
Il peut également exister des cadres complets permettant d’exprimer le calcul souhaité et de laisser une chaîne de compilation générer des binaires prêts pour l’accélérateur.
Dans de nombreux cas, cependant, les développeurs d’applications doivent porter leur propre code source sur les accélérateurs.
Pour ce faire, ils peuvent programmer directement dans le langage fourni par le fabricant (CUDA/HIP), au détriment de la portabilité, ou utiliser des approches de plus haut niveau telles que Kokkos ou OpenACC.
Dans tous les cas, l’exécution des noyaux de calcul résultants doit être optimisée en fonction du système ciblé.
Les travaux du projet NumPEx comprennent une contribution à 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 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 pour dresser un premier bilan 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 ».