Stage : Génération de code parallèle à base de tâche en contexte HPC
Le service ANL (Analyse, Numérique et Logiciels) est chargé de la conception, du développement, de la réalisation et de la maintenance des codes et d'outils de simulation numérique pour le calcul haute performance (HPC). Il est amené à réaliser des logiciels, des codes de simulations et de la R&D pour le programme simulation de la DAM.
Mathématiques, information scientifique, logiciel
Stage
Génération de code parallèle à base de tâche en contexte HPC
Les architectures spécialisées des nouveaux supercalculateurs (accélérateur, carte graphique…) offrent des progrès significatifs en terme de performance de calcul et de consommation énergétique. Néanmoins, programmer ces architectures de façon performante et pérenne reste un défi à relever. Pour tenter d'y parvenir, le CEA-DAM travaille sur le Domain Specific Language (DSL) NabLab et l'environnement de développement associé (https://github.com/cea-hpc/NabLab.git).Cet environnement permet d'écrire un code de simulation numérique en langage NabLab en profitant de toutes les commodités apportées par un IDE (complétion, coloration syntaxique, détection d'erreur, proposition de corrections, évaluation des variables, débogueur). Il permet ensuite de générer du code optimisé pour les architectures ciblées.Le stage consiste à optimiser les performances du code généré à partir de NabLab sur des programmes existants. Nous nous intéresserons particulièrement aux versions C++ multi-threadées.
6 mois
Dans un premier temps, le stagiaire devra prendre en main l'environnement d'exécution des machines de calcul du CEA, DAM et analyser les performances du code généré pour les exemples fournis. Ensuite, le travail consistera à améliorer les performances du code généré par NabLab afin d'accroître le potentiel de parallélisation des applications. Notamment, l'intégration d'un modèle de programmation parallèle à base de tâches avec OpenMP sera étudié pour améliorer l'équilibrage de charge dynamique à travers le moteur exécutif. La construction des tâches se basera alors sur les informations obtenues dans la représentation intermédiaire (i.e. les dépendances) de NabLab afin de générer le code associé.Une étude de portabilité de cette solution sur GPU (directives target OpenMP) pourra également être menée afin d'étendre celle-ci aux architectures hétérogènes.
BAC+5 (Master/Ingénieur) en InformatiqueAlgorithmique parallèleC , C++ avancéProgrammation OpenMP task,targetJava,XtextMaster 2
25-03-2024
Sélectionnez le secteur qui vous intéresse ci-dessous et n'oubliez pas votre adresse email!