Evolution of HPC Software Development and Accompanying Changes in Performance Tools
Srinivasan Ramesh
Committee: Allen Malony (chair), Hank Childs, Boyana Norris
Area Exam(May 2021)
Keywords: modules, components, services, coupled applications, data management

High-Performance Computing (HPC) software is rapidly evolving to support a wide variety of heterogeneous applications. Traditionally, HPC applications are built using the message-passing interface (MPI) and operate in a bulk-synchronous manner. The complexity of scientific software development and emerging classes of workloads have driven the HPC community to adopt increasingly modular software development frameworks. On the one hand, the modularization of HPC software makes programming these systems more manageable. On the other hand, HPC performance tools have had to be constantly updated to keep up with how HPC software is built and deployed. This paper presents an overview of the fundamental driving forces and technologies that have resulted in the evolution of HPC software development over the last three decades. The techniques that performance tools have implemented to keep up with these changes are also discussed. Finally, this paper presents some avenues for future work, highlighting the critical areas that performance tools must address to remain relevant.