SRC03. Discovering Optimal Execution Policies in KRIPKE using RAJA
Student: William Killian (University of Delaware)
Supervisor: Adam J. Kunen (Lawrence Livermore National Laboratory)
Abstract: Newer architectures create application porting problems for legacy physics applications. With architectures changing frequently (multicore, many-core, GPU), applications need to be adaptable to many different architectures. KRIPKE is a proxy application whose primary purpose is to research how data layout, programming paradigms, and architectures affect the implementation and performance of Sn transport. We create policy generation tools that emit RAJA policies to generate over 850,000 versions of KRIPKE. RAJA provides a performance portability layer with high-level C++ constructs to allow its users to quickly change execution policies for CPUs and GPUs. We use hill-climbing and subspace search strategies to explore this space without the need for exhaustive search. With hill-climbing, we explore 10% of the total versions while achieving 95.6% of optimal performance. The subspace search strategy yields 98.8% of optimal while only exploring 20% of all versions. Overall, we improved the best existing version of KRIPKE by 19.5%.
Two-page extended abstract: pdf