Performance modeling is an integral part of the research process for computational scientists. It enables them to understand how different factors contribute to the final runtime of an application. This understanding is crucial to developing efficient scientific applications and simulations. While important, performance modeling is difficult as there are a large number of factors that may contribute to final performance. Factors such as the algorithm, problem size, implementation, architecture, and systems software stack all impact performance in an often complex relationship. Analytical models can be employed to study these causal variables and performance, however, they are difficult to scale up to a large number of input variables. Additionally, the relationship between the causal variables and performance may be unknown or complex, making it challenging to derive an analytical model. Fortunately, machine learning (ML) can help address these challenges as ML algorithms excel at modeling unknown and complex relationships. Furthermore, ML-based performance models can handle a large number of input variables, making them ideal for modeling complex scientific codes. By training ML models on historical performance data, computational scientists can develop accurate models that can predict the performance of new applications and simulations under different scenarios. However, current ML-based modeling approaches are limited to modeling one or two sources of performance data, such as hardware counters or application features. This limitation prevents models from making use of all available causal variables that may impact performance. In this thesis I introduce novel approaches to modeling performance that can make use of all available data sources. I further present performance latent spaces that can be used to model various output metrics, such as runtime and energy usage, at once. Finally, I present methods to effectively utilize these performance models by integrating them into batch schedulers and large language models.
Daniel Nichols is a fifth year Ph.D. student working with the Parallel Software and Systems Group at the University of Maryland and advised by Professor Abhinav Bhatele. His research interests lie at the intersection of high-performance computing and machine learning, where he focuses on applying machine learning to computer systems problems that arise in supercomputing. His work enables more efficient use of supercomputers through intelligent job scheduling and resource placement, large language model-guided performance optimizations and machine learning driven performance modeling. He is a recipient of the 2024 ACM-IEEE CS George Michael Memorial HPC Fellowship.