HPC code optimization for gamma ray experiments

Abstract

Avec l’explosion des besoins en calcul des projets de recherche en physique et en as-trophysique des hautes énergies, dans un contexte où la sobriété énergétique est devenuela norme, l’optimisation des codes scientifiques constitue un enjeu majeur. Dans cetteoptique, nous avons étudié les possibilités d’optimisation du programme de simulationMonte-Carlo CORSIKA 7, utilisé par des nombreuses communautés scientifiques, dontl’observatoire en astronomie gamma CTA.Dans le cadre de CTA, ces simulations sont découpées en dizaines de millier de tâches indé-pendantes et distribuées sur les centres de la grille de calcul européenne pour une consom-mation totale d’environ 100 millions d’heures CPU normalisées (HS06). Une contrainteforte du projet était donc de garantir la portabilité du code sur des centres de calcul équi-pés de différents modèles et générations de CPU. De plus, afin que la nouvelle version deCORSIKA soit adoptée rapidement par le projet CTA, l’objectif était également de re-produire les résultats numériques de la version d’origine. Compte tenu du cadre applicatifet de la nature du programme, nous avons cherché à optimiser les performances au niveaudu cœur CPU, à travers notamment des techniques de vectorisation SIMD, d’optimisationdes accès mémoire, etc.Le résultat final de ces travaux est un gain d’un facteur 1.26 en temps de calcul, ce quireprésente une économie d’environ 20 millions d’heures par an pour le projet CTA. Nousavons également vérifié la validité des résultats numériques obtenus avec cette nouvelleversion en les comparant avec ceux de la version d’origine.En nous appuyant sur ces travaux, nous avons par la suite contribué au projet COR-SIKA 8, visant à ré-écrire CORSIKA de façon plus modulaire et flexible en C++17, laversion d’origine étant écrite en Fortran77 et en C. Notre contribution principale a étéle développement d’un module dédié au processus physique d’émission Cherenkov, l’undes principaux modules utilisé par la collaboration CTA.Tout au long du travail d’optimisation et de développement nous nous sommes fortementappuyés sur plusieurs outils de profilage. L’expérience d’utilisation de ces différents outilsnous a conduit à proposer une nouvelle approche pour l’analyse de code basée sur lescompteurs de performance et la détection de phases. Nous avons implémenté en partiecette approche dans l’outil PALPATINE, destiné à un public de scientifiques non spé-cialistes en informatique, et dont l’objectif est de permettre de localiser rapidement lesparties du programme à optimiser tout en restant facile d’utilisation et portable sur ungrand nombre de processeurs.With the increase of the computing needs of high energy physics and astrophysicsexperiments, in a context where the energetic efficiency becomes the rule, the optimizationof scientific codes plays a major role. In this context, we have studied the optimizationpossibilities of the Monte-Carlo simulation software CORSIKA 7, widely used by severalscientific communities, like the CTA gamma-ray observatory.Within the CTA collaboration, massive simulations are realized by distributing tens ofthousands of independent computing tasks across the computing centers of the europeangrid, for an overall consumption of about 100 million normalized CPU hours (HS06). Astrong requirement of the project was to guarantee code portability across all these centersequipped with different models and generations of CPU. Moreover, in order to make thenew version of CORSIKA quickly adopted by the CTA collaboration, it was required toreproduce exactly the same numerical results than the original version. Given the currentuse case and the nature of the program, we have tried to optimize single-core performances,using different methods like SIMD vectorization, memory access optimization, etc.The final result of this work is a speed-up of 1.26 in execution time, which represents aneconomy of about 20 million normalized CPU hours per year for the CTA project. Thenumerical results have also been validated against the original version.Benefiting of this work, we have then contributed to the CORSIKA 8 project for there-writing of CORSIKA in a more modular and flexible way in C++17 language, theoriginal version being written in Fortran 77 and C. Our main contribution was thedevelopment of a new module treating the physics process of Cherenkov emission, one ofthe most CPU time consuming in CTA simulations. CTA simulations.All along the above-mentioned optimization and development work, we have been stronglyrelying on several profiling tools. The experience gained with all these tools motivated usto propose a new approach for code analysis, based on performance counters and phasedetection. We have implemented partly this approach in a new tool called PALPATINE,aiming to quickly identify the portions of code to optimize while remaining portable acrossseveral platforms and easy to use

    Similar works

    Full text

    thumbnail-image

    Available Versions

    Last time updated on 16/07/2023