cdd highlight job

(ERC ATMO project) Research Engineer position in High Performance Computing

Contexte & Rôle :

Le candidat retenu coordonnera et contribuera au développement de logiciels d’application liés au projet ERC ATMO. L’objectif est de produire et d’utiliser des outils de simulation haut de gamme conçus pour la prochaine génération des plus grands supercalculateurs (GPU, Xeon Phis, etc.) pour l’étude des dynamos convectives dans les étoiles, les naines brunes et les exoplanètes. Il/elle profitera de la librairie innovante Kokkos pour réaliser la portabilité des performances entre différentes architectures, et contribuera à l’incorporation de la librairie PDI dans le code de simulation ARK. Le candidat retenu contribuera à la mise en œuvre d’une simulation « grand défi » à grande échelle d’une dynamo convective sur le nouveau supercalculateur français Adastra.
Il/elle fera également partie des équipes d’experts HPC de la Maison de la Simulation et travaillera en collaboration avec une communauté scientifique internationale. Il/elle aura l’opportunité de travailler sur des codes HPC de niveau production fonctionnant sur les supercalculateurs les plus puissants.

Compétences requises :

  • Doctorat ou master dans un domaine scientifique fortement lié au HPC
  • Connaissance opérationnelle des techniques et du langage de programmation (Fortran90, C ou C++) pour le développement d’applications
  • Forte expérience en parallélisation d’applications (MPI, OpenMP) et en optimisation de codes scientifiques sur diverses architectures (SMP, MPP) fonctionnant en environnement Unix
  • Aptitudes à travailler en équipe

Avantages inclus :

Un financement supplémentaire pour les collaborations et l’équipement personnel est disponible. Les postes comprennent des avantages sociaux complets tels que des subventions pour le transport et le déjeuner, une assurance médicale, un congé de maternité et des prestations de retraite.


Pour postuler, veuillez envoyer un CV, une liste de publications à pascal.tremblin[at] et faire suivre 1 lettre de référence à la même adresse e-mail.

cdi highlight job

CNRS Research Engineer position in High Performance Computing

Maison de la Simulation is recruiting a Research Engineer specialised in high-performance computing. CNRS Interviews will open soon in June 2022. You can contact us now if you have any questions or if you are interested in the position. 

Laboratory: Maison de la Simulation (UAR3441, CEA Saclay, 91191 Gif-sur-Yvette Cedex) 
CNRS institute: INS2I 
Recruitment process opening date: June 2022
Official offer webpage: not yet available 

Position description

Maison de la Simulation ( is a joint-laboratory (CNRS, CEA, Université Paris-Saclay, UVSQ) whose mission is to support scientific communities to efficiently exploit current and future supercomputers. Future supercomputers, in the context of the European Exascale project, will be equipped with innovative technologies for high-performance computing. New processors based on the RISC and ARM CPU architectures will emerge. Super-computing facilities will be equipped with a record number of compute nodes and heterogeneous nodes where the computing power will be concentrated on accelerators, GPUs, or FPGAs for example. You will join the multidisciplinary team of Maison de la Simulation, one of whose strengths is to bring together many profiles around high-performance computing: academics, researchers, engineers, from the world of computer science, physics, or applied mathematics.  

As part of the Maison de la Simulation team, one of your main missions will be to bring your expertise in software engineering and high-performance computing to the Smilei simulation code ( This code is intended for the numerical study of plasmas in extreme conditions, such as those encountered on so-called extreme light laser installations like the Apollon laser, or in certain astrophysical environments (solar wind, super-novae, pulsar, etc.) which require the performance of large-scale numerical simulations on the most advanced machines (GENCI and PRACE). It is a massively parallel open-source code, mostly written in C++ and used by many scientific teams around the world. Your short- and medium-term role will be to lead the HPC developments needed for the arrival of the next European exascale supercomputers (ARM optimisation, GPU porting). Your long-term role will be to become the main code architect. You will be responsible for the evolution and modernisation of its overall structure.  

You will carry out your mission in close collaboration with the scientific development teams present on the Saclay plateau (LLR and LULI laboratories at Ecole Polytechnique). You will contribute to the writing of scientific projects related to high performance computing and in this context, you will participate in the supervision of trainees, PhD students and engineers. 

Your work will be carried out in connection with the other scientific and technical activities of Maison de la Simulation. You will also carry out a technological watch activity and take part in the study of new emerging technologies for high-performance computing (new processors, new accelerators, new programming models, future quantum coprocessors, models based on automated learning, processing of massive data). Your expertise will reinforce the pool of competencies of the laboratory.  

According to your interests, you will lead training, animation, communication, and scientific popularisation activities of the laboratory activities. 

Activity summary

  • Lead application developments on the Maison de la Simulation’s flagship research themes to make full use of the major computing infrastructures at national or European level, 
  • Provide high-level expertise in the field of high-performance computing to researchers and advise them on the use of large-scale computing resources, 
  • Participate in European and national projects in areas related to HPC applications, including project management and staff supervision, 
  • Carry out training activities in the laboratory and ensure the transfer of knowledge and expertise to scientists (design and organisation of courses and training), 
  • Ensure a technological watch on emerging developments of the field (new hardware architectures, new programming models, etc.). 


  • Significant expertise in the development of parallel applications in distributed or shared memory, 
  • Optimisation of application software on various processor architectures (CPU, GPU, FPGA), 
  • Operational knowledge of advanced programming techniques and languages (C++ in particular), 
  • Knowledge of GPU accelerator programming techniques (e.g., OpenACC or CUDA) or new programming models (Kokkos, SYCL, oneAPI) will be a plus, 
  • English language: fluency in written and spoken scientific English (B1 to B2, Common European Framework of Reference for Languages).  

For any questions, please contact Mathieu Lobet (   

highlight job thesis

Funded PhD offer: Performance-portable support of complex discretization at extreme scale in modern C++

This PhD subject is intended for students holding a M2 (or engineer) degree in computer science or high-performance computing.

Advisor: Thomas Padioleau (+33 (0)1 69 08 10 37)
Director: Julien Bigot (+33 (0)1 69 08 01 75)
Keywords: parallel programming models, software engineering, modern C++, partitioned global address space, performance portability, GPU, extreme-scale parallelism


Extreme-scale simulation codes are typically developed in C or Fortran, parallelized with MPI and OpenMP. This approach has proven very successful for code portability during the last decades; but with the advent of GPU-based supercomputers, codes have to be ported to a new architecture for which a rewrite from scratch is often required.

Lots of efforts have been devoted recently to design programming models targeting (performance) portability between CPU and GPU including Kokkos, OpenACC, RAJA, or SYCL for
example. Some also target distributed memory parallelism like Co-array Fortran, HPX, UPC, UPC++, or XMP. These models rely on the same abstractions that were present in previous models: (multi-dimensional) arrays and (parallel) loops. Numerical applications then build higher-
level abstractions on top of these by taking into account the specifics of the hardware they target, hence limiting performance portability. Many concepts also remain implicit in the code so as not to pay a cost at execution; leading to issues with code maintainability and adaptability.

These issues can only be solved by directly providing higher-level abstractions to the numerical simulation codes. An interesting example is offered by numpy, xarray and dask.Array in Python. These libraries make it possible to express numerical computations in a very natural way thanks to the abstraction of mesh and data distribution they provide and to execute it on a variety of hardware architecture by adding just a few dedicated annotations. However, this ecosystem remains far from offering performances comparable with Fortran + OpenMP/MPI.


The goal of this PhD thesis is to evaluate if a solution based on C++ template metaprogramming can offer high-level (zero-cost) abstractions handling a large range of data discretization at compile time. The work will take place in the framework of the ddc library and will be evaluated on the very demanding simulation code GYSELA that leverage the largest existing super computers and manipulates multiple complex discretizations of its high-dimension data along execution. The approach will have to handle seamless replacement of discretization in code (e.g. structured uniform mesh to unstructured), while offering the best performance from each one. The approach will also have to handle parallelism at all levels: distributed-memory parallelism similarly to PGAS languages, shared-memory parallelism on both CPU and GPU, but also SIMD parallelism.


During the first phase of the work, the candidate will study the related bibliography (see an extract bellow), focusing on parallel programming models, and especially PGAS languages to get a good understanding of the involved concepts, understand the limitations of current approaches, and seize the benefits of existing softwares. In addition to academic publications, this first phase will be used to discover existing work in ddc and the needs identified as part of the rewrite of the GYSELA code.

Then, the work will focus on the conception of a programming model supporting the various features identified in the previous section. This work will start by focusing on single-node CPU and GPU parallelism before moving to multi-node distributed parallelism. The proposed concepts will be tested on academic cases using the usual evaluation criteria from the literature: portability, performance, lines of code, readability, etc.

Finally, the proposed solutions will be implemented in ddc and applied to the development of the next-generation production code GyselaX in collaboration with the team developing the code at CEA/IRFM, Cadarache and with collaborators working on performance optimization and portability in JAEA, Tokyo, Japan. They will be tested at scale on several supercomputers including systems amongst the most powerful in the world (Fugaku, Joliot-Curie, Adastra, …) but also on testbeds of new GPU accelerators in the framework of collaborations with vendors such as Intel. All results will be submitted to international peer-reviewed conferences and journals, such as SuperComputing, IPDPS, Cluster, JPDC, etc. for publication. The candidate will also be encouraged to participate in the writing of a proposal to the C++ standard comittee about the solutions found.


The successful candidate will master the following skills and knowledge:

  • strong interest in programming models in general and parallel programming models in particular,
  • proficiency and experience with modern C++ and template metaprogramming,
  • motivation for team-work in an international environment.

In addition, the following will be considered a plus:

  • knowledge and experience with GPU, parallel and high-performance computing,
  • interest for applied mathematics and numerical simulation,
  • experience with software engineering and library design.

cdd highlight job

Contrat d’apprentissage : Intelligence artificielle pour les simulations d’interaction Laser Plasma

Contrat d’apprentissage Master 1-2 ou école d’ingénieur 2ième année.
La mission porte sur l’utilisation des réseaux de neurones profonds dans le cadre de l’analyse in-situ de simulations HPC. Un premier modèle de type CNN sera a préparé sur la détection d’une bulle électronique pour un code d’interaction laser plasma.

Contact : Martial Mancip Martial.Mancip at .
Location: Maison de la Simulation (CEA Saclay, 91191 Gif-sur-Yvette

La Maison de la Simulation (MdS) est un laboratoire de recherche en simulation numérique. Ces activités concernent les domaines du calcul haute performance et de l’intelligence artificielle, des modèles de programmation et de la visualisation.

Avec l’augmentation très importante des performances des moyens de calcul, l’apprentissage profond (deep learning) devient un outil incontournable pour l’analyse des données produites sur les supercalculateurs.

Nous cherchons à construire une bibliothèque d’analyse haute performance in-situ grâce à de l’apprentissage profond couplé à une plateforme DASK.
La combinaison du parallélisme multi-noeuds DASK et d’un modèle d’apprentissage par renforcement permettra d’effectuer séparément le traitement asynchrone des données produites pendant la simulation, de réduire considérablement la nécessité de stocker les résultats intermédiaires, et d’augmenter les possibilités d’analyse hautes fréquences, sans impacter sur les performances. La détection d’événements sur le traitement des données permettra de déclencher de nouvelles analyses dans la simulation.
Les simulations HPC visées concernent le code SMILEI (interaction laser plasma) et nous visons de performance de type exascale lorsque ces machines seront disponibles. Les sorties de tels codes seront extrêmement coûteuses en temps de calcul comme en espace disque et le but de ces nouveaux outils est donc de les réduire, tout en augmentant les possibilités d’analyse hautes fréquences sur des phénomènes ciblés, encadrés dans le temps.
La détection d’un phénomène donné entraînera en retour de nouveaux post-traitements dans la simulation.
Un démonstrateur basé sur le code SMILEI à la MdS sera produit dans le cadre du projet de Centre d’Excellence Européen (CoE) récemment soumis PlaXma, avec une équipe d’une dizaine de personnes, dont cet(te) apprenti(e).

Le travail de la personne choisie pour l’alternance est de construire un premier modèle de type CNN sur la détection d’une bulle électronique, phénomène bien connu de la physique des plasmas.
Elle devra aussi produire un second réseau de neurones pour valider la disparition de la bulle.

Compétences requises
Notions sur le Deep Learning dont les réseaux de convolution.
Bonne programmation en Python.
Usage des bloc notes Jupyter.
Maîtrise de l’anglais technique.

Compétences souhaitées
Pratique de la plateforme Tensorflow / Keras.
Visualisation de données de simulations avec matplotlib ou équivalent.
Connaissances du monde du HPC : parallélisation, multi-threading, gestion des accélérateurs GPU.
Connaissances des librairies d’entrées/sorties dédiées au HPC : HDF5, NetCDF4, Xarray…
Connaissance de DASK.
Autres algorithmes d’IA pour la science des données de simulation.

highlight job thesis

PhD offer : Modèles de programmation innovants pour le développement d’applications scientifiques sur architectures exascales.

Ce sujet de thèse s’adresse aux étudiant.e.s dé d’un master 2 en informatique ou calcul scientifique avec une forte composante calcul haute-performance.

Directeur de thèse : Edouard Audit
Encadrant : Mathieu Lobet
Laboratoire : Maison de la Simulation, CEA Saclay (CEA Saclay, 91191 Gif-sur-Yvette Cedex)
Contact : Mathieu Lobet (
Link : PDF en français | English PDF version


Les supercalculateurs sont de plus en plus hétérogènes. Les nœuds de calcul se composent de plusieurs sockets CPU couplés à plusieurs accélérateurs le plus souvent GPGPU (General Purpose Graphics Processing Units). Cette hybridation des nœuds de calcul a progressivement commencé dans les années 2010 pour atteindre aujourd’hui presque 50% des 100 supercalculateurs les plus puissants au monde. Cette tendance s’accentue depuis quelques années dans un contexte d’amélioration croissante des technologies GPU pour le calcul et l’intelligence artificielle à la fois au niveau matériel (performance, consommation énergétique, mémoire embarquée) mais aussi logiciel (maturité des modèles de programmation, développement de bibliothèques, etc).  Si pendant longtemps NVIDIA a dominé le marché GPU du Calcul Haute Performance (HPC), d’autres acteurs viennent aujourd’hui diversifier les technologies disponibles comme AMD ou Intel. Ces nouvelles architectures sont notamment favorisées par la course à l’Exascale, visant à atteindre une puissance de calcul de 1018 opérations arithmétiques par secondes.

La démocratisation croissante des GPUs, notamment pour le calcul scientifique, s’est accompagnée de l’émergence de nouveaux modèles de programmation. Par simplification, nous distinguons suivant trois catégories majeures : les langages relativement bas niveau fournis par les constructeurs ou supportés par certains d’entre eux (CUDA, OpenCL, etc), les modèles à base de directive (OpenACC, OpenMP) et les modèles à haut niveau d’abstraction (Kokkos, RAJA, Alpaka, SYCL, etc). Tous ces modèles se comparent sur la base de plusieurs critères que sont la performance (par rapport à la puissance crête de la machine), la portabilité (capacité du code à pouvoir s’adapter à plusieurs architectures avec un minimum d’effort), la maturité du modèle, la facilité d’apprentissage, la facilité de mise en production, la maintenabilité, la modularité et plus encore. Avec l’arrivée de multiples architectures GPU, la portabilité est devenue un enjeu prioritaire dans le choix d’un modèle pour la modernisation ou l’écriture d’un code. Elle permet à partir d’une implémentation unique de tourner sur un grand nombre d’architectures à la fois CPU et GPU, mais aussi de s’assurer une compatibilité avec les futures technologies à venir. Les développeurs, souvent scientifiques, minimisent ainsi les efforts de réécritures au profit d’une meilleure productivité. 

Les modèles de programmation à haut niveau d’abstraction permettent, comme leur nom l’indique, d’abstraire les structures de données, la gestion de la mémoire et le parallélisme sur les architectures visées. Pour cela, ils utilisent en arrière-plan les langages bas niveau (backends CUDA par exemple) et au premier plan la puissance des derniers standards C++ (notamment C++17). Ils permettent en peu de lignes de code de proposer des implémentations à la fois portables et performantes. Développés depuis presque 10 ans pour certains, ils sont encore relativement peu utilisés dans le milieu scientifique sur des codes de production. Néanmoins, un grand nombre d’entre eux arrivent maintenant à maturité. Ils sont poussés et supportés par la plupart des constructeurs. 


Cette thèse a pour objectif premier l’exploration de ces nouveaux modèles de programmation dans un contexte de développement d’applications scientifiques pour les futures architectures exascales. Le modèle qui nous intéresse le plus est SYCL développé par le Khronos Group ( Il a l’avantage d’être aujourd’hui adopté par de nombreux constructeurs (AMD, Intel, XILINX et d’autres) et d’être ainsi supporté par de nombreuses bibliothèques logicielles parallèles. Il est l’un des principaux modèles proposés par Intel au sein de son implémentation DPC++ pour programmer ses futurs GPU (Ponte Vecchio) mais aussi ses futures cartes FPGA (Agilex). 

Le ou la candidate aura pour rôle d’explorer l’implémentation SYCL de plusieurs noyaux de calcul scientifique. Un des premiers noyaux envisagés correspond à la méthode “Particle-In-Cell” utilisée pour la simulation des plasmas dans plusieurs codes au CEA. D’autres noyaux provenant de codes développés ou supportés à la Maison de la Simulation pourront être explorés (astrophysique, dynamique moléculaire, dynamique des fluides). SYCL et les noyaux implémentés seront testés sur des systèmes en développement pour l’Exascale européen. Un partenariat avec SiPearl et Intel dans le cadre du projet EoCoE-III permettra de tester la solution sur des nœuds hétérogènes couplant le processeur ARM Rhea et les GPU Ponte Vecchio. Les futures architectures des autres constructeurs seront également testées progressivement avec l’arrivée des futures machines européennes et française. 

Le second objectif de la thèse sera d’explorer la programmation des accélérateurs FPGA (Field Programmable Gate Array) toujours dans un contexte scientifique. Dans un but de performance et d’efficacité énergétique, l’architecture FPGA pourrait devenir une technologie accélératrice pertinente aux côtés des CPUs et GPUs et peut-être équiper les futures machines post-exascale. De nombreux constructeurs poussent dans cette direction même si l’on est aujourd’hui encore en phase expérimentale dans un cadre HPC. Intel est ici encore un acteur en première ligne et propose depuis peu une nouvelle carte accélératrice Agilex programmable grâce au modèle de programmation DPC++ basé sur SYCL pour les applications industrielles et scientifiques. Le ou la candidate aura accès par l’intermédiaire d’un partenariat entre le CEA et Intel à des cartes Agilex afin d’étudier la performance des noyaux scientifiques sur ce type d’architecture.  

Pour chaque objectif, le modèle sera évalué suivant divers critères à définir plus précisément au cours de la thèse comme la portabilité réelle, la performance par rapport aux autres modèles de programmation, la facilité de prise en main, la maturité, la complexité du code obtenu, etc. En fonction de son affinité et de son avancement, le ou la candidate retenue pourra choisir les noyaux ou les architectures sur lesquels renforcer ses études. En revanche, le but n’est pas de développer un nouveau code scientifique. 

Cette thèse porte sur un sujet qui convient à un ou une candidate désireuse de mener un projet de recherche en informatique et de poursuivre ensuite sa carrière dans la recherche aussi bien que dans l’industrie. 


  • Connaissance approfondie de la programmation logicielle en C++ moderne
  • Connaissance en programmation parallèle (programmation des accélérateurs GPU est un plus)
  • Appétence pour la recherche
  • Bonne capacité à travailler en anglais (à l’écrit et à l’oral)
  • Un intérêt pour les mathématiques appliqués et la simulation numérique est un plus