Evaluation of Programming Models for Manycore and / Or Heterogeneous Architectures for Monte Carlo Neutron
Total Page:16
File Type:pdf, Size:1020Kb
Evaluation of programming models for manycore and / or heterogeneous architectures for Monte Carlo neutron NNT : 2020IPPAX099 transport codes Thèse de doctorat de l’Institut Polytechnique de Paris préparée à l’École polytechnique École doctorale n◦626 École doctorale de l’Institut Polytechnique de Paris (ED IP Paris) Spécialité de doctorat: Informatique, Données et Intelligence Artificielle Thèse présentée et soutenue à Saclay, le 01/12/2020, par TAO CHANG Composition du Jury : Michael HEROUX Professeur, Sandia National Laboratories and St. John’s University Rapporteur Jean-François MEHAUT Professeur, Université Grenoble Alpes Rapporteur Raymond NAMYST Professeur, Université de Bordeaux Examinateur Marc VERDERI Directeur de recherche, Laboratoire Leprince Ringuet de l’IPP Président Emmanuelle SAILLARD Chargé de recherche, Le Centre de Recherche INRIA Bordeaux Examinateur Francieli ZANON BOITO Maitre de Conférences, Université de Bordeaux Examinateur 626 Christophe CALVIN Expert International, CEA Saclay Directeur de thèse Emeric BRUN Ingénieur de recherche, CEA Centre Marcoule Encadrant This thesis is dedicated to my family who have raised me to be the person I am today. I hope that this achievement makes you happy. Acknowledgements First and foremost, I would like to express my deep and sincere gratitude to my thesis supervisor, Christophe CALVIN, for the continuous support of my Ph.D study throughout the past three years, for his motivation, enthusiasm and vision which have deeply inspired me every time I got stuck on research. I am extremely grateful for having the opportunity to study and work under his guidance. I would like to thank my advisor, Emeric BRUN, for his patience, insightful comments and hardware support. I am grateful for his aids on helping me carrying out tests on the Cobalt-hybrid, Cobalt-v100 platforms. Moreover, I thank him and Philippe Thierry for providing me an Intel NUC machine to accomplish my research work. I thank the rest of my thesis committee: Michael HEROUX and Jean-François MEHAUT, for being my reviewers and writing me the literature of review and Raymond NAMYST, Marc VERDERI, Emmanuelle SAILLARD, Francieli ZANON BOITO, for being the examiners at my thesis defense. My sincere thanks also goes to Fausto MALVAGI, the director of my laboratory SERMA/LTSD in CEA Saclay and Edouard Audit, the director of Maison de la Simulation, for allowing me studying and working in two places throughout the research. I would also like to express my gratitude to my fellow labmates in these two laboratories, for their administrative, academical and hardware supports as well as insightful talks with me. I would like to thank David Chamont for offering me access to the GridCL platform and being my academical advisor. I thank Pierre Kestener for giving his useful comments on the implementation of Kokkos in the Monte Carlo neutron transport code. I thank Serge G. Petiton, for guiding my master internship in Maison de la Simulation and enlightening me the first glance of research in the field of HPC. I am very much thankful to my parents and twin brother for their love and sacrifices for supporting me continu- ously to chase my dream. Titre : Evaluation´ de modeles` de programmation pour les architectures manycore et / ou het´ erog´ enes` pour les codes de transport neutronique Monte Carlo Mots cles´ : Architectures manycore, Architectures het´ erog´ enes,` Transport des particules Resum´ e:´ Dans cette these` nous nous proposons de solutions et les comparer en terme de perfor- d’evaluer´ les differents´ modeles` de programmation mance, de portabilite´ de la performance, de facilite´ disponibles pour adresser les architectures de type de mise en œuvre et de maintenabilite.´ Les architec- manycore et / ou het´ erog´ enes` dans le cadre des tures cibles sont les CPU ‘classique’, Intel Xeon Phi codes de transport Monte Carlo. On considerera` dans et GPU. Les modeles` de programmation les plus per- un premier temps un cas test d’application simple tinents seront ensuite mis en place dans un code de mais representatif´ pour couvrir un eventail´ assez large transport Monte Carlo. Title : Evaluation of programming models for manycore and / or heterogeneous architectures for Monte Carlo neutron transport codes Keywords : Manycore architectures, Heterogeneous architectures, Particles transport Abstract : In this thesis we propose to evaluate the range of solutions and compare them in terms of different programming models available for addres- performance, portability of performance, ease of im- sing manycore and / or heterogeneous architectures plementation and maintainability. The target architec- within the framework of the Monte Carlo transport tures are ‘classic’ CPU, Intel Xeon Phi and GPU. The codes. A simple but representative application test most relevant programming models will then be set up case will be considered in order to cover a fairly wide in a Monte Carlo transport code. Institut Polytechnique de Paris 91120 Palaiseau, France Résumé La simulation du transport de neutrons de Monte-Carlo est une méthode stochastique largement utilisée dans le domaine nucléaire pour les calculs de référence. Au lieu d’introduire des approximations mathématiques et physiques pour simuler un système du monde réel, la méthode de Monte-Carlo regroupe les comportements des particules par échantillonnage statistique, ce qui entraîne de manière significative un coût de calcul énorme. Afin d’alléger ce coût, l’utilisation de supercalculateurs pour les simulations de Monte-Carlo est devenue une tendance pour de nombreux chercheurs et développeurs. Cependant, comme de plus en plus d’architectures modernes (multi-core / manycore, architectures hétérogènes) émergent à un rythme assez rapide, il n’est pas anodin de développer des applications portables complètes sur toutes ces architectures, de plus, d’optimiser et de maintenir l’application en continu donc pour obtenir des perfor- mances préférables sur eux. D’un côté, le développement et la durée de vie d’une application sont bien supérieurs au temps de développe- ment d’architectures informatiques. Ainsi, concevoir une application pour une architecture donnée n’a pas de sens car après le développement de l’application, il y a de fortes chances que l’architecture ait déjà évolué. De l’autre côté, il est nécessaire que les applications soient évolutives et maintenables par le plus de personnes possible, per- mettant à ces personnes qui ne sont pas familiarisées avec le HPC de développer des codes capables de fournir de bonnes performances. Pour répondre à l’évolution de la portabilité des performances, certains langages de programmation de haut niveau tels que OpenACC, OpenMP offload ont été proposés pour permettre à l’application de bien fonctionner sur une large gamme d’architectures sans de gros frais de développement et de maintenance. La plupart de ces modèles de programmation sont dédiés aux architectures basées sur des accélérateurs avec l’augmentation massive du parallélisme multi-niveaux qui représente la tendance sous-jacente des architectures de calcul. Dans cette thèse, nous nous intéressons au développement d’un code de transport de neutrons Monte-Carlo portable ciblant des architectures hybrides (CPU + GPU) avec l’utilisation de modèles de programmation hybrides. Concernant l’évaluation de la portabilité des performances, certaines métriques ont déjà été proposées pour évaluer quantitativement le compromis entre performance et portabilité. Cependant, il existe peu de recherches traitant de l’évaluation des codes de transport de neutrons de Monte-Carlo sur les supercalculateurs en termes de portabilité des performances, en outre, de portabilité des performances productibles. Ainsi, nous avons l’intention de donner une évaluation explicite en termes de portabilité, de performance, ainsi que de productivité pour un mini-benchmark de simulation de transport de neutrons de Monte-Carlo. Le mini-benchmark slabAllNuclides a été implémenté sur un prototype de transport de neutrons de Monte- Carlo développé au CEA, appelé PATMOS. Une version de déchargement hétérogène du code a été développée via une méthode basée sur l’historique et une méthode basée sur des pseudo événements. Plusieurs modèles de programmation (thread OpenMP, OpenMP offload, OpenACC, CUDA, Kokkos et SYCL) ont été implémentés pour l’évaluation et les tests ont été réalisés sur différentes architectures (x86 ou OpenPower + GPU). Un ensemble de métriques a été adopté pour évaluer notre simulation Monte-Carlo de déchargement hétérogène en termes de portabilité, de performances et de productivité. L’analyse des métriques a été réalisée avec la proposition d’une métrique générique et son qui atténue les défauts des métriques d’origine, les rendant plus adaptables pour gérer la comparaison numérique des applications en termes de portabilité des performances et de portabilité de la productivité à travers une variété d’informatique architectures. En un mot, l’objectif de la thèse est d’évaluer les métriques existantes en termes de portabilité, de performance et de productivité et de proposer des améliorations de ces métriques sur un exemple d’application réelle réalisant une simulation de transport de neutrons de Monte-Carlo. Les principaux objectifs sont les suivants: 1. proposer un nouvel algorithme de suivi des particules, la méthode pseudo event-based. 2. analyser et régler les performances de la version CUDA. 3. mettre en œuvre des codes de transport de neutrons Monte-Carlo portables via des modèles de programma- tion de haut niveau. 4. proposer et analyser une métrique générique et ses variantes. 5. évaluer les implémentations portables des codes de transport Monte-Carlo par la métrique générique. Contents List of Figures iv List of Tables vi Glossary viii 1 Introduction 1 1.1 Motivations . 1 1.2 Objectives . .......... 2 1.3 Outline . ........... 2 2 Parallel Computing 4 2.1 General Terminology . 4 2.1.1 Von Neumann Architecture . 4 2.1.2 Flynn’s Taxonomy . 5 2.1.3 Parallel Speedup . 8 2.1.4 Scalability . 10 2.2 Memory Architectures . 11 2.2.1 Shared Memory . 11 2.2.2 Distributed Memory . 12 2.2.3 Hybrid Memory . 13 2.3 Computing Architectures . 13 2.3.1 Hardware Characteristics .