Suivez

la liste

Contexte du stage

Patmos est un code-maquette de simulation de transport de particules pour la physique des réacteurs utilisant la méthode Monte-Carlo [1]. Cette méthode consiste à échantillonner aléatoirement les trajectoires des particules et leurs interactions avec le milieu dans lequel elles se déplacent, selon des lois de probabilités déterminées par la physique sous-jacente. Le Monte-Carlo n’introduit quasiment pas d’approximations dans la résolution de l’équation de transport et n’a pas besoin de discrétiser l’espace des phases, contrairement aux méthodes dites déterministes ; pour cette raison, le Monte-Carlo est considérée la méthode de référence dans le domaine.
Les probabilités déterminant les interactions particule-matière sont décrites par des grandeurs élémentaires appelées sections efficaces. Les sections efficaces proviennent de bibliothèques de données nucléaires, fournies en entrée de l’application. Toutefois, stocker la totalité des sections efficaces s’avère extrêmement coûteux en terme de consommation mémoire, notamment pour les applications multi-physiques, où des jeux de sections efficaces pour chaque isotope présent dans les compositions matérielles du réacteur et pour toute température (effets d’élargissement Doppler) doivent être utilisés pendant la simulation. L’élargissement Doppler « au vol » est une technique proposée récemment, permettant de calculer les sections efficaces à une température donnée à partir de données nucléaires à une température de référence, par le biais d’un calcul effectué à chaque collision des particules. Le fait de devoir stocker uniquement un jeu de sections efficaces par isotope (et non plus par isotope et par température) rend l’encombrement mémoire nettement moins important. Cette approche implique néanmoins une étape de calcul (l’élargissement Doppler au vol, à chaque collision) représentant une part importante du temps total de calcul de la simulation de la vie des particules.
Patmos est développé au CEA dans le but de s’adapter aux nouvelles architectures logicielles et matérielles [2]. Les architectures GPU sont fortement représentées dans le paysage des supercalculateurs modernes. Cette technologie offre une puissance de calcul conséquente, capable de réduire considérablement le temps de calcul d’une simulation. C’est pourquoi le portage du calcul de l’élargissement Doppler des sections efficaces sur GPU a été étudié dans des travaux de thèse [3] : cela permet de réduire considérablement le temps de calcul en comparaison de la réalisation de ce même calcul sur CPU. Cependant, les architectures GPU actuelles se composent toujours d’une partie CPU, indispensable au déroulement normal d’une application. L’implémentation actuelle de portage sur GPU permet d’utiliser les ressources GPU mises à disposition, mais implique une inactivité CPU (en termes de calcul) durant la phase de calcul sur GPU et donc une utilisation des ressources non optimale. Il est donc souhaitable de définir une stratégie de portage permettant d’exploiter la totalité des ressources, y compris CPU.

Description du sujet du stage

Pour résoudre le problème de l’inutilisation des cœurs CPU durant la phase de calcul sur GPU une approche hybride GPU/CPU est possible. Le nombre de sections efficaces à calculer dans une étape de calcul étant relativement élevé, il est aisé de répartir la charge de calcul sur les composants matériels (CPU et GPU). Néanmoins, la question de la proportion de calcul à porter sur GPU se pose. S’il est admis qu’une répartition équitable du calcul serait non optimale – le GPU étant à priori plus rapide – nous ne pouvons pas facilement et de manière précise définir à l’avance la meilleure répartition. La solution pour répondre à ce problème est donc un ordonnancement dynamique du calcul des sections efficaces. Pour cela, plusieurs approches ont été étudiées dans la littérature [4]. Dans le cas du calcul des sections efficaces nous nous intéressons notamment aux approches d’ordonnancement en fonction des performances relatives des CPU/GPU.
L’objectif de ce stage est de proposer un ordonnancement dynamique du calcul des sections efficaces sur CPU et GPU en utilisant une approche de performances relatives. En particulier, le stagiaire proposera une solution hybride pour l’implémentation CUDA en s’appuyant notamment sur l’API fournie [5]. Plusieurs algorithmes d’ordonnancement pourront être mis en œuvre. Ces derniers pourront notamment s’inspirer des solutions existantes dans la littérature [4]. Ce développement sera réalisé au sein d’application Patmos.
L’ordonnanceur sera évalué en termes de performances sur des cas représentatifs et sur une machine HPC. Ces tests permettront de mettre en lumière la plus-value de la solution proposée. Aussi, des tests de validation des résultats physiques seront effectués afin de garantir l’absence d’influence de l’ordonnancement sur la physique simulée.

Bibliographie - Références

[1] I. Lux, L. Koblinger, Monte Carlo particle transport methods (CRC press, 1990).
[2] E. Brun, S. Chauveau, F. Malvagi, PATMOS: A prototype Monte Carlo transport code to test high performance architectures, in Proc. M&C 2017, Jeju, Korea, April 16-20 (2017).
[3] T. Chang, Evaluation of programming models for anycore and/or heterogeneous architectures for Monte Carlo neutron transport codes, PhD thesis, Institut polytechnique de Paris (2020).
[4] Mittal, Sparsh, and Jeffrey S. Vetter, A survey of CPU-GPU heterogeneous computing techniques. ACM Computing Surveys (CSUR) 47, no. 4 (2015).
[5] Doc Nvidia CUDA : https://docs.nvidia.com/cuda/cuda-runtime-api/index.html

Profil du stagiaire

Master 2 ou 3ème année d’école d’ingénieur en informatique avec une spécialisation HPC (GPU, OpenMP). Une sensibilisation à la physique des réacteurs serait un plus appréciable.

Localisation du stage

Commissariat à l'énergie atomique et aux énergies alternatives (CEA), Centre de Saclay
91191 Gif-Sur-Yvette Cedex

Personne(s) contact(s) / Contact person(s)

Nom : Gonçalves
Prénom: Thomas
e-mail : thomas.goncalves@cea.fr