Performance-Portable Design Patterns: A gallery and community hub
Performance-portability is key to leveraging the heterogeneous computing power of today's supercomputers. Nevertheless, support for features differs between hardware and software stacks. Furthermore, many hardware-specific restrictions apply. While performance-portability libraries like Kokkos, RAJA, Hemi, YAKL, etc., provide abstractions for the common elements (e.g., parallel for loops) of performance-portable code, it is left up to the developer to leverage these effectively. Therefore, developers still need a lot of hardware-specific knowledge and finesse to write code that is truly performance-portable. Software design patterns can encapsulate complexity and allow developers to focus on the design of their applications. The patterns also facilitate understanding of code written by others by providing a clear scope and purpose. Unfortunately, many of the patterns currently used in software designed for CPUs cannot be used in a performance-portable way due to hardware restrictions.
BSSw Fellow Jakob Bludau will focus on creating a gallery of design patterns that work for performance-portable programming. The gallery will serve as a place to discuss and curate the patterns within the HPC community. The patterns originate from performance-portable, open-source code, where they are already used, and are displayed in an abstract, "as simple as possible, as complex as necessary" manner.
Jakob is a postdoctoral research associate at Oak Ridge National Laboratory, working on performance-portable software for fluid dynamics and solid mechanics. He is a core developer of the Kokkos performance-portability library. He obtained his Ph.D. from the Technical University of Munich in 2024. His thesis focused on numerical fluid mechanics for rotorcraft–ship interaction using GPUs.


