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.