Implementation of a particle merging process in the PIC code Smilei

Maison de la Simulation has participated to the implementation of a particle merging process in the Particle-in-Cell (PIC) code Smilei. Smilei is an open-source and highly parallel code dedicated to laser-plasma simulation. It is developed by several labs (LLR, LULI) in France. It is nonetheless used in many other countries in Europe and in the World.

In PIC codes, dealing with macro-particles represents the major part of the code and is therefore the most time-consuming part in running simulations.  Basically, more particles means slower computation although the correlation is not linear with vectorization. Consequently, most optimization strategies today focus on managing particles the most efficient as possible. Some simulation scenario induce particle growth such as laser interaction with ionization, magnetic shower or electron-positron pair cascading. These simulation cases reveal very difficult to simulate with long simulation times. In extreme cases, when the growth is exponential, the only possible solution is merging particles. This enables to maintain the number of particles at a reasonable level to achieve the simulation.

Description of the particle merging process of M. Vranic.

The method of M. Vranic et al. has been implemented with different optimization choices in all dimensions. It is schematically described in the figure above. Furthermore, an advanced documentation of the adapted algorithms is available on the official Smilei website. Nonetheless, this first implementation is still considered as a beta and constitutes the first step toward the comparison of different future methods. Moreover, it can induce numerical artifacts in the momentum distributions. The method should hence be used with caution.

The following video illustrates the use of the merging. This is the simulation of the collision of 2 counter-propagating extremely intense laser plane wave that induce a pair cascading phenomenon at the middle of the simulation from a seed.

Modèle d’enveloppe dans le code Smilei

Le code Particle-In-Cell opensource et collaboratif Smilei s'est récemment vu enrichir d'un nouveau modèle physique appelé modèle d'enveloppe. Francesco Massimo et Arnaud Beck (LLR) ont développé ce nouveau modèle sur la base de la littérature existante et les équipes de la Maison de la Simulation ont participé à l'optimisation de ce module. Ce modèle approxime la propagation d'un laser et son action sur le milieu ambiant afin de gagner en temps de calcul. Il permet de faire des simulations 3D pour un coût légèrement supérieur à celui du 2D. Ce modèle peut être utilisé dans une géométrie 3D cartésienne aussi bien que dans une géométrie cylindrique. Il se prête bien à la simulation de l'accélération d’électrons en onde  de sillage par exemple. C'est ici la raison de son développement.

Ce modèle d'enveloppe a été utilisé pendant le grand challenge sur le calculateur Irene Joliot-Curie. Il permettra notamment de simuler des expériences sur le laser multi-petawatt Apollon du plateau de Saclay. Il a fait l'objet d'une publication dans le journal Plasma Physics and Controlled Fusion en 2019 par F. Massimo et son équipe que vous pouvez retrouver sur ce lien.

Lien vers l'article publié dans le journal Plasma Physics and Controlled Fusion en 2019 par F. Massimo et al.
Lien vers l'article publié dans les proceedings de la 13ème conférence Computational Accelerator Physics en 2019 par F. Massimo et al.

Participation du code Smilei au grand challenge Jean Zay

Le calculateur Jean Zay est en ce moment en cours de préparation à l'IDRIS pour le début du Grand Challenge début juillet. Jean Zay est un calculateur acquis par GENCI auprès de Hewlett-Packard Entreprise (HPE) pour une puissance théorique de 14 Petaflops. Il est équipé de deux partitions. La première est composé de 1528 nœuds bi-socket Intel Cascade Lake. La deuxième est une partition hybride équipée de 261 nœuds CPU bi-socket similaires auxquels s'ajoutent 4 GPUs Nvidia V100 par nœuds. Ce calculateur est destiné à la fois aux applications HPC et aux applications d'intelligence artificielle.

Pour rappel, un Grand Challenge est une ouverture de la machine quelques mois avant sa mise en production pour en tester les capacités. Un certain nombre de codes sont sélectionnés sur appel à projet. Les équipes scientifiques pourront dès lors utiliser avec très peu de concurrence sur les ressources l’intégralité de la machine. En échange, les applications fournissent un retour sur les performances globales et aident les ingénieurs à corriger les bugs et autres problèmes.

Schéma du principe de l'accélération d’électrons à double étage. Un premier faisceau d'électrons accélérés est créé dans un jet de gaz par un laser. Le faisceau est ensuite redirigé dans une seconde onde de sillage généré par un laser dans un canal plasma. Le deuxième étage augmente l'énergie des électrons mais nécessite une longue distance de propagation.

La Maison de la Simulation est partenaire du code Particle-In-Cell Smilei sélectionné pour le Grand Challenge Jean Zay. Le code Smilei est open-source, massivement parallèle et optimisé pour ce type d'architecture. Le code tournera sur la partition CPU seulement. Le projet scientifique est porté par Arnaud Beck du laboratoire LLR et portera sur la simulation de l'accélération de faisceaux d’électrons en onde de sillage laser dans un plasma. Plus spécifiquement, les scientifiques du LLR souhaitent simuler une configuration dite à double étage afin de se rapprocher des expériences qui seront menés sur le laser multi-petawatt Apollon du plateau de Saclay. Les simulations devraient pouvoir exploiter des données expérimentales du faisceau laser pour la simulation réaliste du première étage. Les simulations exploiteront les dernières implémentations en terme de modèle et les dernières optimisations vectorielles.

 

Optimisation SIMD du code Smilei

L'importance de la vectorisation

Les processeurs Intel de dernière génération utilise la vectorisation dite SIMD pour Single Instruction Multiple Data. Cette technologie présente dans chaque cœur de calcul permet d'effectuer pour le même coût qu'une instruction scalaire une addition et une multiplication sur un vecteur de données allant jusqu’à 8 flottants double précision. On comprend dès lors qu'un facteur d'accélération important peut être perdu sans la vectorisation. Pour les codes fonctionnant sur CPU Intel et souhaitant atteindre les meilleures performances par cœur, être capable d'utiliser la vectorisation est essentiel. Hors sur de nombreux algorithmes, le passage du scalaire au vectoriel peut s'avérer inefficace voir tout simplement impossible en l'état (le compilateur atteignant ses limites). Il est alors nécessaire pour les développeurs de retravailler les algorithmes pour bénéficier de la vectorisation. Cela passe le plus souvent par une réécriture afin d'éviter les problèmes de mise en cache, les accès mémoires aléatoires et les concurrences d'accès.

Description de la notion de vectorisation SIMD. FMA signifie Fused Multiply Add et correspond à l'instruction qui assimile une multiplication et une addition à la fois.

L'optimisation du code Smilei

Les équipes de la Maison de la Simulation ont travaillé sur l'optimisation SIMD du code de simulation Smilei en collaboration avec les équipes scientifiques du LLR et du LULI. Le code Smilei est un code Particle-In-Cell open-source collaboratif massivement parallèle dédié principalement à la simulation de l'interaction laser-plasma mais il est aussi utilisé en astrophysique de laboratoire et en fusion.

L’optimisation du code s'est achevée dans le cadre du grand challenge Irene Joliot-Curie. Pour rappel, les grands challenges donnent accès aux machines de calcul avant leur ouverture officiel dans le but de tester le bon fonctionnement du matériel et des logiciels. Il nous a permis de tester les nouveaux opérateurs vectoriels sur des cas de production en utilisant plusieurs dizaines de millier de cœur Skylake.

Nous avons également développé une méthode de vectorisation adaptative en espace et en temps permettant de déterminer localement le plus efficace entre avoir un opérateur scalaire ou vectoriel. En effet, nous avons découvert que les opérateurs vectoriels n'avaient pas d’intérêt pour une charge faible en particules par patch, le patch étant le plus petit grain de décomposition de la grille (différence finie) en espace. Pour peu de particules, les anciens opérateurs restent les plus rapides. Cela vient du fait que la vectorisation nécessite une certaine quantité d’éléments (ici, les particules) à traiter pour être très efficace.

Ces résultats ont été publiés dans Computer Physics Communication et sont accessible en ligne sur ce lien. La vidéo ci-dessous illustre l'utilisation de la vectorisation adaptative sur de larges cas. Les simulations ont été réalisées sur le calculateur Irene Joliot-Curie.

Article publié dans Computer Physics Communication.