Optimisation des flux de données massifs dans les code parallèles

Transcription

Optimisation des flux de données massifs dans les code parallèles
Optimisation des flux de données massifs dans les
code parallèles en vue de l’Exascale,
application au code Gysela
Encadrant
Co-encadrant
Directeur
Co-directrice
Localisation
:
:
:
:
:
Julien Bigot (MdlS) [email protected], Tel : 01 69 08 01 75
Guillaume Latu (IRFM) [email protected], Tel : 04 42 25 63 57
Edouard Audit (MdlS) [email protected], Tel : 01 69 08 42 35
Virgine Grandgigard (IRFM) [email protected], Tel : 04 42 25 61 19
Maison de la Simulation (MdlS)
MdlS Maison de la Simulation, bât. 565, CEA Saclay, 91191 Gif-sur-Yvette Cedex
IRFM IRFM/SIPP/GP2B, bât. 513, CEA Cadarache, 13108 St-Paul-les-Durance Cedex
Résumé
La thèse ici proposée vise à étudier et résoudre des problèmes rencontrés dans la gestion de flux de
données massifs au sein des code parallèles et en particulier du code Gysela. L’objectif est de concevoir,
mettre en œuvre et évaluer de nouvelles approches pour concilier des objectifs qui peuvent sembler
antagonistes : (a) optimiser les performances des flux de données, (b) assurer la portabilité de ces
performances et (c) améliorer la lisibilité et la maintenabilité du code les décrivant.
Le premier point qui sera envisagé concerne la gestion des points de reprise afin d’améliorer la
tolérance aux pannes des codes et de permettre des changements dynamique de parallélisation et de
taille de maillage. Ce point s’appuiera sur l’évaluation d’approches existantes au sein de bibliothèques
et sur le développement de nouvelles approches tirant parti de la physique sous-jacente dans les codes.
Le second point concerne le découplage des IOs du code principal afin de faciliter le développement
de nouvelles sorties efficaces dans les codes. Ce point s’appuiera sur des bibliothèques existantes pour
le couplage de code et devrait mener à la définition d’une approche générique adaptable à une large
palette de codes.
L’ensemble des développements effectués auront vocation à être reversés dans le code Gysela ainsi
que dans les diverses bibliothèques utilisées.
Optimization of massive data-fluxes in parallel
codes in prevision for Exascale,
application to the Gysela code
Supervisor
Co-supervisor
Director
Co-director
Localization
:
:
:
:
:
Julien Bigot (MdlS) [email protected], Tel : 01 69 08 01 75
Guillaume Latu (IRFM) [email protected], Tel : 04 42 25 63 57
Edouard Audit (MdlS) [email protected], Tel : 01 69 08 42 35
Virgine Grandgigard (IRFM) [email protected], Tel : 04 42 25 61 19
Maison de la Simulation (MdlS)
MdlS Maison de la Simulation, bât. 565, CEA Saclay, 91191 Gif-sur-Yvette Cedex
IRFM IRFM/SIPP/GP2B, bât. 513, CEA Cadarache, 13108 St-Paul-les-Durance Cedex
Abstract
The Ph.D. proposed here aims to study and solve problems faced in handling the massive data
fluxes appearing in parallel codes and especially the Gysela code. The goal is to design, implement
and evaluate new approaches to tackle seemingly antagonistic aims : (a) optimize performances of
data-fluxes, (b) ensure the portability of those performances and (c) improve the readability and
maintainability of the code describing them.
The first aspect that will be tackled is the handling of check-points in order to improve the fault
tolerance of codes and enable dynamic changes of parallelization and mesh sizes. This aspect will rely
on an evaluation of approaches existing in libraries and on the conception of new approaches leveraging
the underlying physics of the codes. The second aspect is related to the decoupling of IOs and main
code so as to ease the development of efficient new outputs in codes. This aspect will rely on existing
libraries for code coupling and should lead to the definition of a new generic approach that can fit a
large range of codes.
All developments made in the context of this thesis should be upstreamed in the Gysela code as
well as in the various used libraries.
Contexte
La Maison de la Simulation (MdlS) est un laboratoire commun du CEA, d’Inria, du CNRS
et des Universités de Versailles Saint-Quentin et Paris-Sud. Le laboratoire regroupe des activités de
recherche en informatique à hautes performances et en mathématiques appliquées avec une activité
d’ingénierie en lien avec les codes de simulation scientifique des domaines applicatifs. Au sein de ce
laboratoire est notamment développée une activité de recherche sur les flux de données ainsi qu’une
activité d’optimisation et de génie logiciel autour du code Gysela.
L’Institut de Recherche sur la Fusion Magnétique (IRFM), est un institut de recherche du
CEA situé à Cadarache. Au sein de cet institut est étudiée la physique complexe qui gouverne les
réacteurs pour la fusion nucléaire de type Tokamaks comme notamment ITER. La compréhension
des instabilités qui se développent dans le plasma au sein de ces réacteurs est un enjeu majeur afin
de les maîtriser pour optimiser le confinement de chaleur et ainsi l’efficacité. Les instabilités dues
aux gradients de température des ions (ion temperature grandient – ITG) nécessitent notamment
l’utilisation de simulation numérique et c’est dans ce but qu’a été conçu le code Gysela.
Gysela[5, 1] 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). Des tests dédiés ont montré une efficacité relative de plus de
90% au delà de 1.8 millions de threads. L’ajout de la simulation des électrons en plus des ions, un
enjeu majeur pour le code dans les années à venir, nécessitera toutefois des ressources encore plus
importantes (facteur 1000). Il est donc essentiel d’améliorer encore l’extensibilité du code et de le
préparer à un déploiement sur les futures machines Exascale. Pour ce faire, des remaniements sont
nécessaires aussi bien au niveau des méthodes numériques ou de l’algorithmique parallèle que des
aspects plus proches du système incluant les entrées et sorties de données. Il est particulièrement
important que ces changements permettent de conserver un niveau de maintenabilité et de portabilité
raisonnable pour le code.
Objectifs
Au cours de cette thèse, vous serez amené à travailler sur les flux de données au sein des codes
massivement parallèles. Vos travaux auront pour point de mire l’arrivée des machines Exascales pour
lesquelles les performances des transferts de données ne devraient pas avoir augmenté au même rythme
que la puissance de calcul. Dans ce cadre, vous devrez concevoir, mettre en œuvre et évaluer de
nouvelles approches pour concilier des objectifs qui peuvent sembler antagonistes : (a) optimiser les
performances des flux de données, (b) assurer la portabilité de ces performances et (c) améliorer la
lisibilité et la maintenabilité du code les décrivant.
Vos travaux se focaliseront sur deux des principaux types de flux rencontrés dans la majorité des
applications parallèles et qui ont des caractéristiques distinctes : ceux liés aux points de reprise et ceux
liés aux résultats de simulation. Les point de reprise consistent en une sauvegarde régulière sur disque de
l’état complet de la simulation. Ils permettent de reprendre la simulation depuis un état intermédiaire
et ainsi d’assurer une tolérance à d’éventuelles pannes du calculateur ou de respecter les contraintes des
environnements d’exécution. Les résultats de simulation sont les données effectivement utilisées par les
scientifiques pour comprendre le comportement de l’objet simulé. Ces données consistent généralement
en des données dérivées (post-traitement) des grandeurs nécessaires à la progression de la simulation.
Si l’objectif pour l’écriture des points de reprise est avant tout la performance étant donné leur taille,
les résultats de simulation nécessitent aussi la prise en compte d’autres aspects comme la portabilité
des fichiers entre machines ou une facilité de développement de leur calcul pour que les utilisateurs
des codes puissent aisément en dériver de nouveaux.
Votre cas d’étude sera le code Gysela qui est à la pointe d’un point de vue parallélisation et rencontre
donc déjà nombre de problèmes. Dans ce code, la principale donnée manipulée décrit la distribution
des particules dans l’espace des phase 5D (fonction de distribution). Les point de reprise nécessitent
l’écriture sur disque de l’intégralité de cette donnée (typiquement de l’ordre du Toctets) et les résultats
de simulation prennent la forme de diagnostiques qui représentent des grandeurs physiques moyennées,
allant du 0D au 3D et correspondant entre autres à des moments de la fonction de distribution, tels que
les densités, température, pression, flux, etc... Les point de reprise sont typiquement écrits toutes les 10
à 12h et les diagnostiques beaucoup plus fréquemment afin de pouvoir analyser à posteriori l’évolution
du plasma dans le temps. Ces derniers sont calculés directement au sein du code, ce qui est coûteux en
temps de calcul mais nécessaire car la sauvegarde de l’intégralité de la fonction de distribution à cette
fréquence n’est absolument pas envisageable, aussi bien pour des raisons de performance que d’espace
disque.
Le premier point que vous traiterez est une prise en charge plus performante et sophistiquée de la
gestion des points de reprise afin notamment de permettre leur écriture plus fréquente pour s’adapter
à des taux de pannes annoncés croissants. Vous pourrez vous appuyer sur de nouvelles approches
proposées au sein de bibliothèques telles que sionlib[3] à la place de HDF5 actuellement pour leur
écriture. Vous évaluerez des stratégies ayant pour but de permettre un changement de parallélisation
entre la génération des points de reprise et la reprise effective. Vous étudierez l’utilisation de techniques
de compression s’appuyant une compréhension de la physique sous-jacente pour optimiser la taille des
données générées et pour permettre une modification des maillages utilisés durant les simulations (en
définissant des opérateurs de restriction/propagation).
Le second aspect concerne le découplage du code calculant les valeurs nécessaires à l’avancement
de la simulation d’une part et de celui traitant les flux de données d’autre part. Ce travail pourra
s’appuyer sur les travaux existants au sein la bibliothèque XIOS et conçus pour le couplage de codes.
L’approche que vous proposerez devra permettre d’intégrer au code des opération de traitement de flux
de données développées indépendamment en minimisant l’impact sur le code lui-même. Cette approche
devrait par exemple pouvoir prendre en charge des opérations de traitement de flux de données telles
que le calcul des valeurs dérivées pour les diagnostiques ou la compression de la fonction de distribution
pour les points de reprise par exemple.
L’ensemble des nouvelles approches conçues et des développements effectués dans le cadre de cette
thèse ont vocation à être mis en œuvre et validés au sein du code Gysela, de la bibliothèque XIOS[4]
ainsi que dans PDI [2], une interface dont le développement commence à la Maison de la Simulation
et qui vise à découpler les codes de calcul des stratégies d’IO. Ces travaux prendront pour cadre le
centre d’excellence européen EoCoE.
Liens et références
Maison de la Simulation http://www.maisondelasimulation.fr/
IRFM http://irfm.cea.fr/
EoCoE http://www.maisondelasimulation.fr/Phocea/Vie_des_labos/Ast/ast_theme.php?id_ast=
106
[1] Gysela. http://gyseladoc.gforge.inria.fr/.
[2] Pdi. https://gitlab.maisondelasimulation.fr/jbigot/pdi.
[3] sionlib.
http://www.fz-juelich.de/ias/jsc/EN/Expertise/Support/Software/SIONlib/
_node.html.
[4] Xios. http://forge.ipsl.jussieu.fr/ioserver.
[5] Julien Bigot, Virginie Grandgirard, Guillaume Latu, Chantal Passeron, Fabien Rozar, and Olivier
Thomine. Scaling GYSELA code beyond 32K-cores on Blue Gene/Q. In ESAIM : PROCEEDINGS, volume CEMRACS 2012 of 43, pages 117–135, Luminy, France, July 2012.