Internships at Maison de la Simulation

Internships available :

There is no available internships.

Past internships :

 Analyse de la robustesse numérique du logiciel GYSELA 6 mois Bac+5 Calcul massivement parallèle

Spécialité : Calcul massivement parallèle Niveau d'étude : Bac+5 durée : 6 mois

Gysela [4] est un code développé par le CEA en collaboration avec l’Université de Strasbourg, Inria et IPP Garching (Allemagne). Il met en œuvre un modèle dit «gyrocinétique» qui est devenu un outil essentiel pour décrire et comprendre la dynamique des plasmas de Tokamak. Ce modèle est par nature multidimensionnel (5D dans l’espace des phases) et donne lieu à des calculs extrêmement coûteux. Les 50 000 lignes de code en Fortran 90 (97%) et C (3%) ont donc été parallélisées en utilisant MPI et OpenMP. Gysela exploite dès aujourd’hui la puissance pétaflopique des plus grands supercalculateurs existant en tournant de manière routinière sur plus de 8k cœurs pendant plusieurs semaines (∼ 50 Mh.cœur annuelles). Dans le cadre d’un code de cette ampleur, la fiabilité des résultats est une question importante et complexe. Des travaux existants[3] ont notamment permis de développer une version déterministe de Gysela. C’est à dire que deux exécutions successives sur une même machine génèrent les mêmes résultats au bit près. Cette approche permet de comparer différentes versions du code pour assurer que les calculs restent cohérents. Elle est cependant limitée au cas où aucun changement n’a eu lieu dans la manière dont sont effectués les calculs et ne permet pas de valider le portage sur de nouvelles machines. La bibliothèque CADNA [1] (http://cadna.lip6.fr) est utilisée pour estimer la propagation d’erreurs d’arrondi dans les logiciels de calcul scientifique. Cette bibliothèque permet de détecter les instabilités numériques en cours de calcul et d’estimer la qualité numérique des résultats. CADNA consiste à effectuer les opérations flottantes trois fois avec des modes d’arrondi différents. Ainsi, à l’issue d’un calcul, on obtient trois valeurs à partir desquelles on peut estimer le nombre de chiffres exacts du résultat. CADNA fournit de nouveaux types numériques et de nouvelles définitions pour les opérateurs arithmétiques et les fonctions mathématiques qui intégrent l’estimation de la précision. L’utilisation de CADNA dans un code nécessite peu de modifications, celles-ci concernent essentiellement les déclarations de variables flottantes et les entrées/sorties. Le stage, qui consiste à contrôler la fiabilité numérique du logiciel GYSELA grâce à la bibliothèque CADNA, va se dérouler en trois étapes. • La 1e étape du stage est l’intégration de la bibliothèque CADNA dans une version séquentielle du logiciel GYSELA. Il s’agit d’une part d’insérer dans GYSELA les instructions nécessaires à l’utilisation de CADNA. D’autre part, des fonctionnalités pourront être ajoutées à CADNA pour pouvoir contrôler tous les types de calcul effectués dans GYSELA. • La 2e étape est l’analyse des informations fournies par CADNA sur la qualité numérique des résultats de GYSELA. Si des instabilités numériques sont détectées, il s’agit d’identifier les instructions qui en sont responsables et éventuellement de modifier le code pour améliorer la précision des résultats. Dans cette étape, il pourra être nécessaire d’analyser diverses parties (solveurs) du code indépendamment. • La 3e étape est l’utilisation de CADNA dans une version parallèle de GYSELA fondée sur la bibliothèque de communication MPI. La faisabilité de la validation de codes parallèles avec CADNA a été démontrée [2]. Néanmoins des modifications seront éventuellement apportées à GYSELA et CADNA. Enfin la qualité numérique des résultats obtenus en parallèle avec GYSELA sera analysée. Financement : Le montant horaire de la gratification est égal à 15% du plafond horaire de sécurité sociale en vigueur, soit de l’ordre de 500e. Dépôt des candidatures : Les candidatures doivent être adressées par courriel à Julien Bigot et à Fabienne Jézéquel sous forme d’un CV et d’une lettre de motivation détaillant les compétences. Les coordonnées de deux personnes capables de juger les capacités du candidat seront jointes à la candidature. Références [1] F. Jézéquel and J.-M. Chesneaux, CADNA : a library for estimating round-o error propagation, Computer Physics Communications, 178(12) : 933-955, 2008. [2] S. Montan, Sur la validation numérique des codes de calcul industriels, thèse de l’Univer- sité Pierre et Marie Curie, Paris, 2013. [3] J. Bigot, G. Latu, T. Cartier-Michaud, V. Grandgirard, C. Passeron, and F. Rozar, An approach to increase reliability of hpc simulation, application to the gysela5d code, ESAIM : Proc., 53 (2016), 248–270. [4] V. Grandgirard, J. Abiteboul, J. Bigot, T. Cartier-Michaud, N. Crouseilles, G. Dif-Pradalier, C. Ehrlacher, D. Esteve, X. Garbet, P. Ghendrih, G. Latu, M. Mehrenberger, C. Norscini, C. Passeron, F. Rozar, Y. Sarazin, E. Son- nendrücker, A. Strugarek, and D. Zarzoso, A 5d gyrokinetic full-f global semi- lagrangian code for ux-driven ion turbulence simulations, Computer Physics Communica- tions, 207 (2016), 35–68.

 Optimisation l’expérience utilisateur d’un code de simulation de dynamique des dislocations en vue de sa distribution en open source 4 mois Bac+4/5 Calcul massivement parallèle

Spécialité : Calcul massivement parallèle Niveau d'étude : Bac+4/5 durée : 4 mois

Encadrants : - Laurent Dupuy, CEA Saclay, Département des Matériaux pour le Nucléaire ( laurent.dupuy@cea.fr ) - Arnaud Durocher, CEA Saclay, Maison de la Simulation ( arnaud.durocher@cea.fr ) Mots clés : C++, génie logiciel, Calcul Intensif, Simulation Niveau : Bac + 4/5 Les matériaux de structure envisagés pour les systèmes nucléaires de production d’énergie du futur, que ce soit dans le cadre du forum GEN IV ou de la fusion thermonucléaire, seront soumis à des sollicitations importantes en termes de température et doses d’irradiation. Ces sollicitations conduisent à une modification progressive des propriétés mécaniques des matériaux, dont l’origine se trouve à l’échelle micronique. La simulation par Dynamique des Dislocations se trouve alors particulièrement bien adaptée à cette étude puisqu’elle permet de faire le lien entre les mécanismes physiques pertinents à cette échelle et le comportement mécanique du matériau. Dans cette optique, le CEA, le CNRS et l’INRIA développent depuis plusieurs années le code de Dynamique des Dislocations OPTIDIS [1], écrit en C++, dédié au calcul du comportement mécanique des matériaux sous irradiation. Ce code s’appuie pour cela sur le calcul intensif et notamment sur un parallélisme hybride MPI/OpenMP [2]. La mission proposée consiste à optimiser l’expérience utilisateur du logiciel de simulation physique en vue d’une diffusion open source aux acteurs de la recherche en mécanique des matériaux. Plusieurs travaux seront proposés : - Expérience utilisateur : refondre le système de paramétrisation afin de faciliter l’utilisation du logiciel. Il s’agit de proposer une nouvelle architecture logicielle pour la gestion des paramètres qui seront représentées par des fichiers XML. - Validation et Tests : améliorer les mécanismes de validation du logiciel par des tests unitaires afin d’augmenter sa fiabilité. Le dialogue avec les utilisateurs sera un élément clé afin de comprendre les besoins en terme de paramétrisation. Le candidat devra faire preuve d’un intérêt pour la simulation de phénomènes physiques et sera un élément clé dans le dialogue entre utilisateurs et développeurs. Des compétences en C++ et en génie logiciel sont nécessaires pour mener à bien les travaux proposés. Ce travail de stage s’effectuera au CEA Saclay à la Maison de la Simulation [3] sous la codirection d’Arnaud Durocher pour la partie informatique et de Laurent Dupuy pour la partie physique. Ce travail bénéficiera en outre de l’expertise de l’INRIA (équipe HIePACS [4]). Référence : [1] http://optidis.gforge.inria.fr/ [2] Arnaud Etcheverry, thèse : Simulation de la dynamique des dislocations à très grande échelle, Université de Bordeaux 1 (2015) [3] http://www.maisondelasimulation.fr/ [4] https://team.inria.fr/hiepacs/

 Mise en place d’un générateur de code C et Fortran à partir d’un schéma YAML 4 mois Bac+3 Génie logiciel

Spécialité : Génie logiciel Niveau d'étude : Bac+3 durée : 4 mois

Encadrants : Julien Bigot mail: julien.bigot@cea.fr Tel : 01 69 08 01 75 Corentin Roussel mail: corentin.roussel@cea.fr Tel : 01 69 08 60 26 Abel Marin–Lafleche mail: abel.marin-lafleche@maisondelasimulation.fr Tel : 01 69 08 07 34 Contexte La Maison de la Simulation [4] (MdlS) est un laboratoire commun du CEA, d’Inria, du CNRS et des Universités de Versailles Saint-Quentin et Paris-Sud situé sur le plateau de Saclay. Le laboratoire regroupe des activités de recherche en informatique à hautes performances (high performance computing – HPC) et en mathématiques appliquées avec une activité de support et de formation en direction des communautées de chercheurs utilisateurs de simulation scientifique haute-performance. Au sein de ce laboratoire est notamment développée une activité de recherche en génie logiciel sur les entrées-sorties adaptées au HPC. YAML[8] (YAML Ain’t Markup Language) est un langage utilisé pour la représentation de données structurées qui favorise la lisibilité et l’interopérabilité avec les langages de programmation "modernes" (C, C++, python, etc.). Au sein d’un document YAML on distingue deux types d’informations : le contenu des données et la structure des données présentes. Comparé à d’autres langages de balisages (XML, JSON, par example) le YAML à la particularité de minimiser l’utilisation de caractères supplémentaires pour décrire la structure des données. Cette réduction du nombre de caractères et l’utilisation de l’indentation pour représenter l’arborescence des données rend les fichiers YAML particulièrement facile à lire pour l’utilisateur. Paraconf [5] est une bibliothèque conçue et développée à la Maison de la Simulation dans le cadre du projet européen EoCoE [1] pour charger la configuration d’un code parallèle depuis un fichier YAML. Paraconf est basé sur la bibliothèque LibYAML[3], composant de base pour le support de YAML en python. LibYAML propose une API C à faible niveau d’abstraction au dessus de laquelle est mis en oeuvre le support python. Paraconf augmente ce niveau d’abstraction en supportant un langage de requête simple pour naviguer au sein de l’arbre YAML. La bibliothèque est écrite en C et fournit une API C ainsi qu’un binding Fortran. Paraconf est utilisé dans le code de dynamique moléculaire MetalWalls et dans la bibliothèque PDI [6]. Kwalify [2] est un langage de schéma pour YAML qui permet de décrire la structure d’un document YAML. Kwalify est notamment pris en charge par la bibliothèque pyKwalify [7] qui permet de vérifier qu’un document YAML correspond à la structure attendue. Objectifs L’utilisation de Paraconf au sein de PDI et MetalWalls a permis d’identifier des limitations de la bibliothèque et donc des pistes d’amélioration. Il a été noté que l’extraction des données depuis les fichiers YAML pour remplir les structure propre à ces codes est une opération répétitive et sujette aux erreurs. En effet, aussi bien le document YAML que le langage de requête de Paraconf sont interprétés dynamiquement et les erreurs ne peuvent pas être détectées lors de la compilation. Le chargement d’un fichier YAML dans des structure natives C ou Fortran correspondantes nécessite aussi l’exécution d’un ensemble d’opérations très mécaniques. Une bonne partie des erreurs dans le fichier YAML peut être détectée avant l’exécution grâce à un outil comme Kwalify. L’objectif du stage est d’offrir des fonctionnalités similaires pour le code de lecture du fichier et en particulier le langage de requête Paraconf. Au cours de ce stage, vous serez donc amené à mettre en place un compilateur en python basé sur pyKwalify qui génère : — les structures de données natives C ou Fortran correspondantes à la structure YAML décrite dans un schéma Kwalify, — le code permettant la lecture via Paraconf d’un fichier YAML pour remplir ces structures natives. Dans un premier temps, vous prendrez en main pyKwalify en produisant des schémas correspondant à l’utilisation de YAML au sein de PDI et MetalWalls ainsi que les structures natives correspondantes avec le code permettant de les remplir. Dans un second temps, vous développerez le générateur de code permettant de produire les structures et le code automatiquement depuis n’importe quel schéma. Vous veillerez à produire des tests permettant d’assurer que le générateur est fonctionel. Au cours de ces travaux, vous pourrez être amené à modifier Paraconf pour y ajouter le support d’opérations supplémentaires nécessaire à ces fonctionnalités. L’ensemble de ces travaux sera effectué au sein de la maison de la simulation, en lien avec les développeurs de PDI, de MetalWalls et de Paraconf. Liens et références [1] Eocoe : http://www.eocoe.eu/. [2] Kwalify : http://www.kuwata-lab.com/kwalify/. [3] Libyaml : http://pyyaml.org/wiki/LibYAML. [4] Mdls : http://www.maisondelasimulation.fr/. [5] Paraconf : https://gitlab.maisondelasimulation.fr/jbigot/libparaconf. [6] Pdi : https://gitlab.maisondelasimulation.fr/jbigot/pdi. [7] pykwalify : https://github.com/Grokzen/pykwalify. [8] Yaml : http://yaml.org/.

 Test de semi-convection pour l’hydrodynamique compressible et l'étude d'atmosphères exoplanètes 6 mois Bac+5 Hydrodynamique

Spécialité : Hydrodynamique Niveau d'étude : Bac+5 durée : 6 mois

Le candidat retenu développera et exécutera des simulations de calcul haute performance (HPC) de la convection « en doigt de sel » (hydrodynamique stratifiée avec des instabilités de poids moléculaire moyen) dans le cadre du projet ERC ATMO . L'application cible est la convection en doigt de sel déclenchée par des transitions chimiques (par exemple CO / CH4) dans l'atmosphère des naines brunes et des exoplanètes non-irradiées (Tremblin et al. 2016). L'objectif du stage est de mettre en œuvre une série de tests de l'instabilité convective en doigt de sel dans une atmosphère compressible stratifiée avec un gradient de poids moléculaire moyen instable. Les tests suivront ce qui a déjà été fait dans la littérature pour la convection atmosphérique standard (Hurlburt et al. 1984) et ouvrira la voie aux applications de naines brunes et d’exoplanètes. Il/elle fera partie de l'équipe ATMO à la Maison de la Simulation (laboratoire de simulation numérique de CEA) et travaillera également en collaboration avec les astrophysiciens du Département d'Astrophysique du CEA et des collaborateurs de la communauté scientifique internationale. Il / elle aura l'opportunité de travailler sur des codes HPC à un niveau de production fonctionnant sur les supercalculateurs les plus puissants. Contact: pascal.tremblin@cea.fr http://www.wilder.diskstation.me/erc-atmo/

 Programmation multi-niveaux répartie et parallèle sur superordinateur, par graphes de composants PGAS et de containers orchestrés à l’exécution 6 mois Bac+5 INFORMATIQUE

Spécialité : INFORMATIQUE Niveau d'étude : Bac+5 durée : 6 mois

1 - Contexte Les paradigmes de programmation et les langages actuels permettront de moins en moins de développer des programmes efficaces sur les nouveaux superordinateurs, grilles de calcul, data centers ou « cloud », en effet ces plateformes seront très larges avec un nombre de coeurs de calcul dépassant les dizaines de millions et il nécessaire de limiter leurs consommations électriques tout en assurant une résistance aux pannes. Pour faire face à ces enjeux, un nouveau paradigme de programmation est proposé, basé sur plusieurs niveaux de programmation. Ce paradigme de programmation par tâches/composants est basé sur un ordonnancement astucieux des composants sur les sous-ensembles de nœuds d’une machine. YML permet cela et est déployé déjà sur de nombreuses machines en France, au Japon et aux USA. Chaque composant peut être écrit utilisant divers langages, dont le langage PGAS XMP développé au Japon. Ce stage sera effectué à la « maison de la simulation » à Saclay dans le cadre du projet francogermanonippon MYX financé par les ANR, JST et DFG. 2 – Objectifs Dans ce cadre, il sera demandé en particulier : • de réaliser des expériences sur un superordinateur de programmes YML/XMP existants pour se familiariser avec le paradigme de programmation et la machine de test, en évaluant et analysant les performances en fonction de plusieurs paramètres (des contacts avec une équipe avec qui nous collaborons au Japon seront nécessaire), • d’étudier l’intégration dans le graphe de composants de containers permettant de faire du « big data ». L’objectif étant de mélanger des tâches de calculs et des tâches travaillant plus sur les données. YML permettant alors d’ordonnancer ensuite ces tâches en optimisant les échanges de données. • de développer des composant en XMP et des logiciels en « Yvette » dans le cadre de ces études, ainsi que des opérations de type Map-Reduce dans des containers. • d’effectuer alors des expérimentations avec un environnement en cours de développement pour cette programmation pour le High Performance Data Analysis (HPDA) et de conclure sur l’utilisation celui-ci dans le cadre de machines exascales pour ce domaine. Des échanges avec l’équipe de Satoshi Matsuoka au Tokyo Institute of Technologie sont prévus (Projet Tsubame)

 Calcul à grande échelle avec YML-XMP ; Exemple de la méthode PRR 6 mois Bac+5 Calcul massivement parallèle

Spécialité : Calcul massivement parallèle Niveau d'étude : Bac+5 durée : 6 mois

Ce stage se place dans le cadre du projet germano-franco-japonais MYX. Le principal objectif de ce projet est d’appliquer MUST, un outil de correction automatique d’erreurs dans des programmes parallèles, aux programmes décrits en langages YML et XMP. MUST est un logiciel de détection d’erreur conçu et développé par des chercheurs et/ou ingénieurs allemands. XMP est un langage parallèle japonais permettant de programmer selon le modèle de programmation PGAS (permettant la combinaison des deux modèles mémoire partagée et mémoire distribuée). YML 1 est un environnement de programmation à très grande échelle incluant un langage d’expression de graphe de composantes/tâches d’une application. Chacune des composantes pouvant s’écrire avec un langage de programmation parallèle (comme XMP, HPF, etc.) ou séquentiel (comme C, C++, Fortran, etc.). Le langage XMP est intégré dans une version récente de YML appelée YML-XMP. Les travaux de recherche et développement dans le cadre de ce projet incluent la programmation des applications numériques avec YML-XMP sur des systèmes distribués (comme la plateforme GRID’5000) ou sur des superordinateurs (comme ceux K computer, Oakforest-PACS au Japon, supercalculateur hybride au centre ROMEO à l’URCA France, Hooper à Berkeley aux USA) de la liste TOP500 2 et l’application de MUST sur des programmes qui résultent de ces travaux. Le premier objectif de ce stage est de programmer la méthode PRR [1] à l’aide de YML-XMP pour une ou plusieurs de ces plateformes parallèles et/ou distribuées. PRR est une méthode de calcul de quelques valeurs et vecteurs propres d’une matrice hermitienne de très grande taille. Il s’agit d’une méthode de projection itérative. Partant d’un vecteur initial choisi aléatoirement, elle permet de calculer une suite de vecteurs de Krylov engendrant un sous-espace de Krylov K m sur lequel le problème sera projeté. Le problème projeté dans le sous-espace sur K m sera de taille m avec m<

 Machine Learning & Analyse de donnée Pour le calcul de valeurs propres à grande échelle avec YML-XMP 6 mois Bac+5 Calcul massivement parallèle

Spécialité : Calcul massivement parallèle Niveau d'étude : Bac+5 durée : 6 mois

La récente frénésie qui entoure la machine learning est en grande partie due à l’accès plus facile aux puissances de calcul. L’objectif de ce stage est l’analyse de données pour le calcul de valeurs propres à grande échelle à l’aide de techniques de machine learning (apprentissage automatique). Les algorithmes modernes de calcul de valeurs propres manipulent un important nombre de paramètres interdépendants dont la causalité ne peut être appréhendée que à l’aide des heuristiques. L’apprentissage automatique offre une possibilité de découvrir la causalité entre ces paramètres permettant ainsi un gain du temps d’exécution extrêmement important pour les solvers correspondants et par voies de conséquence pour la résolution des problèmes applicatifs comme par exemple la détection de communautés dans les réseaux sociaux. Ce type de travail de recherche n’est possible que grâce à la possibilité d’accès aux moyens (logiciels et matériels) de calculs à grande échelle. Le logiciel YML 1 offre un tel environnement de programmation à grande échelle. Il inclue un langage d’expression de graphe de composantes/tâches d’une application. Chacune des composantes pouvant s’écrire avec un langage de programmation parallèle (comme XMP 2 , HPF, etc.) ou séquentiel (comme C, C++, Fortran, etc.). Le langage XMP est intégré dans une version récente de YML appelée YML-XMP. Les travaux de recherche et développement récent incluent la programmation des applications numériques avec YML-XMP sur des systèmes distribués (comme la plateforme GRID’5000) ou sur des superordinateurs (comme ceux K computer, Oakforest-PACS au Japon, supercalculateur hybride au centre ROMEO à l’URCA France, Hooper à Berkeley aux USA) de la liste TOP500 3 . Le premier objectif de ce stage est de programmer une méthode de Krylov avec le redémarrage comme par exemple ERAM ou IRAM (explicitly/implicitly restarted Arnoldi method) à l’aide de YML-XMP pour une ou plusieurs des plateformes parallèles et/ou distribuées ci-dessus. La causalité entre les paramètres de ces méthodes (tels que le vecteur initial, la taille de sous-espace, la stratégie de redémarrage, etc.) peut être étudiée par de nombreuses exécutions mais cela peut être fastidieux, voire impossible quand les données sont trop volumineuses et le nombre d’exécutions devient trop grand. Il est désormais impératif de trouver des méthodes d'analyse des données et de construction de modèles qui automatisent cette analyse d’interdépendance de ces paramètres. Cela peut se faire par la construction des algorithmes qui apprennent itérativement à partir des données et plus ces ils seront alimentés de données, meilleurs seront les résultats. Cela constitue l’objectif suivant de ce stage. Autrement dit, il s’agit de définir un algorithme d’apprentissage automatique pour l’étude de l’interdépendance des paramètres d’une des méthodes multiple ERAM/IRAM pour le calcul des éléments propres d’une très grande matrice. Cet algorithme intrinsèquement itératif devra permettre l’analyse de données, l’utilisation des résultats pour créer de nouveaux paramètres à introduire dans le processus d’apprentissage et de recommencer le processus encore et encore. Pour réaliser ce projet de stage, il est impératif que des moyens de calculs puissants comme des superordinateurs soient utilisés comme leur support du développement rapides et efficaces. Le langage de haut niveau de YML pour décrire le graphe des composantes et les langages XMP et C++ pour décrire ces composantes seront utilisés. Une des plateformes GRID’5000 et Oakforest-PACS, devra être utilisée. Les résultats devront permettre des conclusions sur la pertinence de l’approche et éventuellement, des suggestions à l’améliorations de certains aspects de YML. Ce sujet de stage innovant aussi bien du point de vu de méthodes numériques, celui de programmation parallèle/distribuée à grande échelle ainsi qu’au point de vue machine learning a de nombreuses applications dans des domaines industriels et académiques. [1] N. Emad, S. Petiton. Unite and conquer approach for high scale numerical computing, Journal of Computational Science, ISSN-1877-7503, 2016. 1 Conçu et réalisé en France ² XMP est un langage parallèle japonais permettant de programmer selon le modèle de programmation PGAS (permettant la combinaison des deux modèles mémoire partagée et mémoire distribuée). 3 https://www.top500.org/lists/2016/ Responsables du stage : Nahid EMAD (Nahid.Emad@uvsq.fr) Lieu de stage : Maison de la Simulation Digitéo Labs – Bat. 565, CEA/Saclay, 91191 Gif-sur-Yvette Cedex Rémunération : environ 500€/mois