Abstract: 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.