Implementation details such as assumed loop schedules and storage mappings in general purpose programming languages continue to obfuscate algorithms and complicate performance portability. This is especially the case for supercomputers where besides scheduling and storage mappings there are implementation details involving multiple levels of parallels, check pointing, adaptive mesh refinement, approximation thresholds, power, … and the list goes on. A number of approaches including OpenMP pragmas and C++ template meta-programming aim to separate implementation details from the algorithm specification. The problem is that these approaches are typically domain specific, ad hoc, and do not compose with other separation-of-concerns approaches. What we need are performance programming languages that enable the orthogonal specification of implementation details for a range of performance metrics including execution time, time to solution, accuracy, power usage, etc.
In this talk, I present multiple examples of how orthogonal specification of implementation details occurs in existing programming models including past work my group has done. I also present a vision for evolving such approaches into performance programming language and how this vision aligns with the ECP and AI for Science efforts at the DOE.
Bio: Michelle Strout is a professor in the Department of Computer Science at the University of Arizona. Prof. Strout’s main research area is high performance computing and her research interests include compilers and run-time systems, scientific computing, and software engineering. Michelle received an NSF CAREER Award for her research in parallelization techniques for irregular applications, such as molecular dynamics simulations. She received a DOE Early Career award to fund her research in separating the specification of scientific computing applications from the specification of implementation details such as how to parallelize such computations. Some of Prof. Strout’s research contributions include the Universal Occupancy Vector (UOV) for determining storage mappings for any legal schedule in a stencil computation, the Sparse Polyhedral Framework (SPF) for specifying inspector-executor loop transformations, dataflow analysis for MPI programs, parameterized and full versus partial tiling with the outset and insets, and loop chaining for scheduling across stencil loops.
Please use this link to attend the virtual seminar: