DFG & SNSF (2017 - 2020)
Applications of ever-increasing complexity combined with rapidly growing volumes of data create an insatiable demand for computing power. However, the operational and procurement costs of the supercomputers needed to run them are tremendous. Minimizing runtime and energy consumption of a code is therefore an economic imperative.
Tuning complex HPC applications requires the clever exploration of their design and configuration space. Especially on supercomputers, however, this space is so large that its exhaustive traversal via performance experiments is too expensive, if not impossible. Performance models, which describe performance metrics such as the execution time as a function of parameters such as the number of cores or the size of the input problem in an equation, allow this space to be explored more efficiently.
Unfortunately, creating performance models manually is extremely laborious if done for large real-world applications. Further, to ensure that applications are free of performance bugs, it is often not enough to analyze any single aspect, such as processor count or problem size. The effect that the one varying parameter has on performance must be understood not only in a vacuum, but also in the context of the variation of other relevant parameters, including algorithmic options, input characteristics, or tuning parameters such as tiling.
Recent advances in automatic empirical performance modeling, i.e., the generation of performance models based on a limited set of performance experiments, aspire to bridge this gap. However, while models with one parameter can be handled quite easily, performance modeling with multiple parameters poses significant challenges, namely (i) the identification of performance-relevant parameters, (ii) the resource-aware design of the required performance experiments, (iii) the diversity of possible model functions, and (iv) the efficient traversal of a complex high-dimensional model search space.
In this project, we will develop an automatic empirical approach that allows performance modeling of any combination of application execution parameters. Solution components to tackle the above challenges include prior source-code analysis and a feedback-guided process of performance-data acquisition and model generation. The goal are insightful performance models that enable a wide range of uses from performance predictions for balanced machine design to detailed performance tuning. Our approach will help application developers understand complex performance tradeoffs and ultimately improve the performance of their code.
We will integrate our method into the open-source performance-modeling tool Extra-P, which is currently restricted to models with only a single parameter. Finally, as a specific application of our approach, we will devise a novel co-design method that will replace error-prone and time-consuming back-of-the-envelope calculations to define the requirements for future machine procurements.
Technische Universität Darmstadt
Laboratory for Parallel Programming
(Prof. Dr. Felix Wolf, spokesman)
Scalable Parallel Computing Lab
(Prof. Dr. Torsten Hoefler)