Support d'exécution pour l'ordonnancement et l'équilibrage de tâches de calcul pour les applications HPC distribuées

par Clement Fontenaille

Projet de thèse en Informatique

Sous la direction de Devan Sohier et de Éric Petit.

Thèses en préparation à Paris Saclay , dans le cadre de Sciences et Technologies de l'Information et de la Communication , en partenariat avec LI-PaRAD - Laboratoire d'Informatique - Parallélisme Réseaux Algorithmes Distribués (laboratoire) et de université de Versailles-Saint-Quentin-en-Yvelines (établissement de préparation de la thèse) depuis le 01-01-2017 .


  • Résumé

    Le calcul scientifique est l'un des principaux vecteurs d'innovation de ces dernières décennies, qu'il s'agisse de simuler les changements climatiques, modéliser les propriétés aérodynamiques d'un prochain avion, développer de nouvelles stratégies financières, réaliser les effets spéciaux de blockbusters, simuler le cerveau humain, la circulation sanguine dans le coeur, développer de nouvelles molécule pharmacologique, ou bien encore séquencer et dataminer l'ADN de millions d'individus. Le calcul scientifique est devenu omniprésent dans nos sociétés. Ainsi, les besoin en calcul vont grandissants avec l'utilisation de platesformes informatiques toujours plus puissantes. Tandis que les applications scientifiques continuent de s'améliorer par raffinement de leurs modèles mathématiques et autres optimisations algorithmiques, le pendant informatique se complexifie considérablement, à tel point qu'il devient difficile d'exploiter correctement l'intégralité des ressources de calcul offertes. Les modèles de programmation parallèle actuels tels MPI [1] et OpenMP [2] montrent de sévères lacunes. En effet, initialement conçus pour des machines modérément parallèles, ils sont focalisés sur l'expression d'un parallélisme homogène et synchrone, deux propriétés qui impactent déjà considérablement les performances des applications actuelles – de nos jours, atteindre les 10% de la performance crête d'un système est considérée comme une performance raisonnable – et sont totalement incompatibles avec le passage à l'échelle nécessaire à l'exploitation des architectures à venir. Du fait de l'adhérence forte entre la façon dont sont développées ces applications et le mode d'utilisation des modèles de programmation parallèles, de nombreux efforts portent sur le maintien des codes existant, dits legacy, sans remettre en cause l'approche du parallélisme déjà en oeuvre. Ces propositions sont de fait peu pérennes. D'autres propositions s'attaquent dès à présent à la levée de verrous, avec des modèles de parallélisme par tâches [3] [4]. Elles s'accompagnent d'approches d'équilibrage de charge employant des politiques de vol de travail en environnement partagé [5] [6], ou distribué [7] [8]. Par ailleurs, certains explicitent les dépendances de données à un grain fin, relâchant ainsi des sursynchronisations [9] [10]. Enfin de nombreux travaux portent sur l'usage de modèles de communication asynchrones ne sollicitant qu'un acteur (RDMA), tel Partitioned Global Address Space, PGAS [11] [12]. Ils proposent une approche alternative intuitive à la vision actuel de MPI de la programmation distribuée par passage de message. Les mises en application de ce modèle [13] [14] [15] présentent d'ores et déjà des gains significatifs et ouvrent des perspectives intéressantes pour l'exploitation de l'asynchronisme et du recouvrement communicationcalcul dans les code HPC [16]. Deux applications réelles présentant les propriétés typiques des applications HPC seront utilisées en support : YALES2 et AETHER. YALES2 [17] est un simulateur d'écoulement de fluides développé par le Coria, avec qui collaborent le laboratoire Exascale Comupting Research (IntelCEAUVSQ) et l'UVSQ, en particulier dans le projet FP7EU exa2ct. Ce code d'environ 300K lignes est utilisé industriellement par les sociétés SNECMA et TURBOMECA du groupe SAFRAN. Il intervient par exemple dans le design de moteur d'avion, d'hélicoptère ou de fusée, mais aussi en aerodynamique ou bien encore dans la simulation de coeur humain: http://www.coriacfd. fr/index.php L'application AETHER de Dassault Aviation, 130K lignes de code, est une application sur laquelle l'UVSQ possède aussi une forte expérience [18] [19]. AETHER est un code d'aérothermodynamique et accoustique pour la simulation d'avion. Ainsi, au travers de cas applicatifs concrets, ces travaux auront une grande visibilité et un fort impact scientifique et industriel. Par ailleurs, afin de garantir la pérennité des résultats produits et leur diffusion au plus grand nombre, le runtimes ainsi que les démonstrateurs produits seront diffusés en opensource sur le modèle du travail effectué avec Dassault Aviation: https://github.com/EXAPARS Objectif Ce sujet de doctorat s'inscrit dans cette dynamique. Les travaux envisagés ont pour ambition de contribuer au passage des applications scientifiques et aux runtimes à l'échelle exascale. Un des objectifs principaux sera de découpler l'implémentation des applications des environements de programmation parallèle actuels en proposant un support d'exécution modulaire permettant d'exploiter de manière efficace le parallélisme sur les plateformes matérielles à large échelle comportant d'une dizaine de milliers à un million de coeurs de calcul repartis sur un grand nombre de noeuds de calcul. Afin de répondre efficacement à la rupture architecturale dans les machines à venir, il est nécessaire de revoir en profondeur notre manière de programmer en parallèle, en particulier la complexité des systèmes ne peut plus être exposée à l'utilisateur nonexpert. C'est donc sur l'environnement d'exécution que reposera la charge d'exploiter efficacement l'ensemble du système. Un élément clef de notre approche est de permettre la reconfiguration de notre support d'exécution spécifiquement à un type d'application donné grâce à son architecture modulaire. Le codesign support d'exécutionapplication permettant de tirer parti au mieux des particularités en terme de charge et de régularité des différentes classes d'application de calcul intensif. En effet, le coût d'adaptation du support d'exécution sera alors bien inférieur au coût de développement et d'exploitation de l'application permettant un retour sur investissement rapide. De nombreux outils visent à fournir une solution d'abstraction pour le calcul scientifique répondant à des besoins spécifiques. La multiplicité de ces outils et des dépendances qu'ils représentent et leur capacité d'interopérabilité posent de nouvelles contraintes, tandis que la complexité de mise en oeuvre d'outils strictement génériques génériguqes (matlab) ne leur permet pas de prétendre à passer à l'échelle des codes de simulations numériques actuels. Notre approche propose donc une abstraction de l'ordonnancement et du modèle de parallélisme, spécialisée et adaptable pour les spécificités des architectures visées, et disponible pour la résolution d'un large éventail de problèmes typiques rencontrés dans le HPC. Afin de garantir l'impact et la visibilité de notre approche, nous nous focalisons sur deux applications utilisées industriellement par les sociétés SNECMA et TURBOMECA du groupe SAFRAN et Dassault Aviation. Ces travaux sont fortement soutenus par le Coria, développeur du code YALES2. Les applications choisies sont représentatives de problèmes numériques typiques, ce qui prédit un fort impact sur de nombreux autres codes applicatifs. Organisation des travaux de recherche Lors de cette thèse, l'objectif premier sera de supporter des modèles de parallélisme plus étendus que celui en place afin de pouvoir proposer des stratégies d'ordonnancement spécialisées sur d'autres types de problèmes. Pour ce faire, il s'agira d'instaurer un modèle de programmation de tâches de calcul hiérarchiques suivant un parallélisme strict (dit aussi forkjoin). Le doctorant débutera par l'expérimentation poussée des environnements de programmation parallèle par tâches gérant les dépendances de données de manière explicite identifiés lors d'une phase de bibliographie large mêlant des approches orientées système et des approches orientées langage telles que Kaapi [10], OmpSS [22], OpenStream [6], StarPU [23], Parsec [9], CNC [24], Pydron [25]. Ces expériences ont pour but de fixer les contraintes et extensions de langage nécessaires et d'optimiser la réutilisation de l'existant. Cette extension sera appliquée à deux cas de figures bien différents : sur l'assemblage matriciel de l'application AETHER de Dassault Aviation, et à la propagation des particules lagrangiennes, l'une des sousparties de l'application YALES2 parmi les plus consommatrice en temps d'exécution. On pourra ainsi explorer le gain que peut avoir l'utilisation de ces techniques à l'échelle d'un code industriel. Dans un second temps, il s'agira de concevoir des stratégies d'ordonnancement multiéchelles basé sur les tâches en combinant du parallélisme en mémoire partagée (utilisation de thread) à celui du modèle à passage de message en distribué (utilisation de processus). De nombreux défis seront alors ouverts, en terme de langage, de compilation et d'environnement de programmation afin de fournir un environnement d'exécution efficace. En fin de thèse, suivant les développement effectués, des travaux préliminaires seront envisagés pour l'utilisation de l'environnement d'exécution mis au point dans un langage de plus haut niveau et dans les machines virtuelle. En effet, ce type de langage offre un niveau d'abstraction permettant d'encapsuler naturellement le travail et les données et donc ainsi de les manipuler, transporter et synchroniser plus aisément. Bien que ce type de langage amène un surcoût inhérent aux services offerts (ramassemiette, programmation objet, etc.), il devient négligeable devant le gain en programmabilité et portabilité, et d'autant plus devant l'impact global que pourra avoir notre approche sur des applications parallèles sortant du domaine du HPC traditionnel, avec en particulier celles typées Big Data.

  • Titre traduit

    Runtime support for scheduling and load balancing of task based distributed HPC applications


  • Résumé

    Scientific computing has been one of the main vectors of innovation for the last few decades, simulating climate change, modeling the aerodynamic properties of an aircraft, developing new financial strategies, realizing blockbusters' special effects , simulating the human brain, the heart's blood flow, developping new pharmacological molecules, or sequence and dataminer the DNA of millions of individuals. Scientific computing have become ubiquitous in our societies. Thus, the need for computing increases with the use of ever more powerful computing platforms. While scientific applications continue to improve by refinement of their mathematical models and other algorithmic optimizations, the computational counterpart is getting considerably more complex, making it difficult to fully exploit the available computational resources. The current main parallel programming models such as MPI [1] and OpenMP [2] show severe shortcomings. Indeed, initially designed for moderately parallel machines, they are focused on the expression of a homogeneous and synchronous parallelism, two properties that already considerably impact performance of current applications nowadays, reliably reaching 10% of the peak performance of a given system is considered a reasonable result and are totally incompatible with the scalability requirements of future architectures. Due to the strong adherence between the way applications are developed and the mode of use of the parallel programming models, many efforts focus on maintaining existing legacy codes without questionning the already implemented approach of parallelism . These proposals are in fact not very perennial. Other proposals now tackle locks removal, with taskbased parallelism models[3] [4]. They are enabled by load balancing approaches employing worksharing policies in a shared [5] [6], or distributed [7] [8] memory environment. On the other hand, some fine graind explicit data dependencies approach minimize oversynchronizations [9] [10]. Finally, many studies focus on the use of asynchronous communication models requiring only one actor (RDMA), such as the Partitioned Global Address Space, PGAS [11] [12]. They propose an intuitive alternative to the current MPI vision of distributed messagepassing programming. Implementation of this model [13] [14] [15] has already exhibited significant gains and opens up interesting prospects for the exploitation of asynchronism and communicationcomputing overlap in HPC [16]. Two real applications with the typical properties of HPC applications will be used as support: YALES2 and AETHER. YALES2 [17] is a fluid flow simulator developed by Coria with whom the Exascale Comupting Research Laboratory (IntelCEAUVSQ) and the UVSQ collaborate, particularly in the FP7EU exa2ct project. This code of about 300K lines is used industrially by the companies SNECMA and TURBOMECA SAFRAN group. It is involved, for example, in the design of aircraft engines, helicopters or rockets, but also in aerodynamics or in the simulation of human hearts: http://www.coriacfd. fr/index.php The Dassault Aviation AETHER application, 130K lines of code, is an application on which the UVSQ also has a strong experience [18] [19]. AETHER is a aerothermodynamic and acoustic code for aircraft simulation. Thus, through concrete application cases, this work will have a high visibility and a strong scientific and industrial impact. Moreover, in order to guarantee the durability of the results produced and their distribution to the greatest number, the runtimes as well as the demonstrators produced will be diffused in opensource on the model of the work carried out with Dassault Aviation: https://github.com/ EXAPARS Goal This doctoral subject is part of this dynamic. The considered work aims to contribute to the transition of scientific applications and runtimes to the exascale parallelisme scale. One of the main objectives will be decoupling applications implementations from the current parallel programming environments by proposing a modular execution support allowing to efficiently exploit the available parallelism of the large scale hardware platforms comprosed of ten thousands to one million compute cores spread over a large number of compute nodes. In order to respond efficiently to architectural breakdown in upcoming machines, it is necessary to thoroughly review our parallel programming models. In particular the complexity of the systems can no longer be exposed to the nonexpert user. It is on the execution environment that the burden of operating the entire system effectively lies. A key element of our approach is to allow the specific reconfiguration of our runtime to a given type of application thanks to its modular architecture. The executionapplication codesign approach supports this approach, making it possible to benefit as much as possible from the peculiarities of different application classes among intensive computing, both in terms of charge and regularity. Indeed, the cost of adapting the execution medium will be much lower than the cost of developing and operating applicationspecific solutions, allowing a rapid return on investment. Many tools aim to provide an abstraction solution for scientific computation that meet specific needs. The multiplicity of these tools, the dependencies they enforce and their capacity for interoperability create new constraints, while the complexity of implementing strictly generic tools (e.g matlab) does not allow scaling up to the scale reached by numerical simulation codes. Our approach proposes an abstraction of the scheduling and parallelism model, specialized and adaptable for the specificities of the targeted architectures, and available for the resolution of a wide range of typical problems encountered in the HPC. To ensure the impact and visibility of our approach, we focus on two applications used industrially by the companies SNECMA and TURBOMECA SAFRAN Group and Dassault Aviation. This work is strongly supported by Coria, developer of the YALES2 code. The selected applications are representative of typical numerical problems, which predicts a strong impact on many other application codes. Organization of research work In this thesis, the first objective will be to support models of parallelism more extensive than the one in place in order to propose specialized scheduling strategies on other types of problems. To do this, it will be necessary to establish a hierarchical computational tasks programming model implementing strict parallelism (also called forkjoin). The PhD student will begin with the extensive experimentation of the parallel programming environments by managing the explicit tasks data dependencies identified during a broad bibliography phase combining systemoriented approaches and languageoriented approaches such as Kaapi [10], OmpSS [22], OpenStream [6], StarPU [23], Parsec [9], CNC [24], Pydron [25]. These experiments aim at fixing the constraints and language extensions needed and optimizing the reuse of existing ones. This extension will be applied to two very different scenarios: on the matrix assembly of Dassault Aviation's AETHER application, and on the propagation of Lagrangian particles, one of the most time consuming subparts of the YALES2 framework. It will thus be possible to explore the speedup enabled by these techniques at the scale of an industrial code. Second, it will be necessary to design taskbased multiscale scheduling strategies by combining shared memory parallelism with that of distributed memory messaging model. Many challenges will then be opened in terms of language, compilation and programming environment in order to provide an efficient software environment. At the end of the thesis, according to the development carried out, preliminary work w ill be envisaged for the use of the execution environment developed in a language of higher level and/or in virtual machines. Indeed, this type of language offers a level of abstraction allowing to naturally encapsulate work and data and thus to manipulate, transport and synchronize them more easily. Although this type of language brings inherent additional costs for the services offered (garbage collection, objectoriented programming, etc.), it becomes negligible regarding the gain in programmability and portability, and regarding the overall impact of our Approach on parallel applications outside the traditional HPC field, e.g Big Data.