48. Lightweight, Reusable Models for Dynamically Tuning Data-Dependent Code
Authors: David A. Beckingsale (Lawrence Livermore National Laboratory)Olga Pearce (Lawrence Livermore National Laboratory)Todd Gamblin (Lawrence Livermore National Laboratory)
Abstract: Increasing architectural diversity has made performance portability extremely important for parallel simulation codes. Emerging C++ frameworks like RAJA and Kokkos allow developers to write kernels that can be tuned for different architectures at compile time. However, production codes use adaptive techniques like AMR, and a code's behavior depends not only on the host architecture, but also on the input problem and dynamic factors like run-time adaptation. Existing auto-tuning approaches can handle slowly evolving applications effectively, but make decisions too slowly to be executed each time control passes over a loop. We have developed Apollo, an auto-tuning extension for RAJA that uses pre-trained decision models to dynamically tune data-dependent code at runtime, with auto-generated decision models being evaluated before each kernel. We apply Apollo to applications ranging from simple hydrodynamics benchmarks to a production multi-physics code, and show that it can achieve speedups from 1.1x to 4.8x, depending on the application.
Two-page extended abstract: pdf