The Evolution of HPC Software Development Methodologies and Performance Analysis Tools

Srinivasan Ramesh
Date and time: 
Fri, May 28 2021 - 1:00pm
Srinivasan Ramesh
University of Oregon
  • Allen Malony (Chair)
  • Hank Childs
  • Boyana Norris

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.