Performance Portability Using a Tool-Chain to Exploit Separation of Concerns
DescriptionMulti-scale, multi-physics scientific and engineering simulation codes take years to develop and optimize. At the same time effective utilization of high performance computing (HPC) resources has always been a balancing act between portability and performance. Increasing heterogeneity and ongoing deep architecture changes in the HPC platforms from one generation to the next further complicate this balancing act. Abstractions within the applications codes that could utilize an ecosystem of tools such as unifiable expression of arithmetic, code transformations and runtime systems provide one possible approach that could deliver portability without significant performance loss. This presentation will outline one such approach which is applicable to a class of scientific codes that solve partial differential equations with predominantly explicit methods. The tool-chain was developed for Flash-X, a composable code that serves multiple domains. Fortran is the dominant language for the code, which precluded the use of C++ based performance portability solutions. Our tool-chain exploits separation of concerns to keep individual tools simple while being able to deliver an effective performance portability solution.
TimeMonday, June 2617:30 - 18:00 CEST
Computer Science, Machine Learning, and Applied Mathematics