1 of 1

Machine Learning-Driven Adaptive OpenMP For

Portable Performance on Heterogeneous Systems

1

Scientific Achievement

Customized configurations of software execution variants for different machines can enable optimal performance on heterogeneous supercomputers. Manual configuration customization leads to portability challenges. Our extensions to OpenMP, a mainstream HPC programming model, customize the configurations of scientific applications running on heterogeneous computers fully through automated machine learning-driven runtime adaptation.

Results on CPU-GPU execution adaptation:

XSbench on Power9+v100 vs. Intel+P100

Technical Approach

  • Designing a set of OpenMP language extensions to communicate semantics related to code variant generation, model building, and runtime adaptation
  • Extending the Apollo runtime library to support adaptation within a single execution and across multiple executions
  • Prototyping efficient compiler transformation using ROSE, then Clang/LLVM
  • Evaluation using 3 types of adaptations (CPU-GPU selection, GPU threads, Co-scheduling) of 6 benchmarks running on 3 different GPU machines

Chunhua Liao, Anjia Wang, Giorgis Georgakoudis, Bronis R. de Supinski,Yonghong Yan, David Beckingsale, and Todd Gamblin, Extending OpenMP for Machine Learning-Driven Adaptation, Eighth Workshop on Accelerator Programming Using Directives (WACCPD), Nov. 2021. (LLNL-CONF-826432) https://doi.org/10.1007/978-3-030-97759-7_3

Giorgis Georgakoudis, Konstantinos Parasyris, Chunhua Liao, David Beckingsale, Todd Gamblin, Bronis de Supinski, Machine Learning-Driven Adaptive OpenMP For Portable Performance on Heterogeneous Systems, ACM Transactions on Architecture and Code Optimization (submitted), Feb. 2023

New OpenMP directives supporting CPU-GPU execution adaptation:

leveraging directive variants defined by metadirective

Significance and Impact

Traditional adaptation workflows involve tedious and error-prone manual generation of code variants, to collect performance data for building models that guide runtime adaptation. Our seamlessly integration of this complex workflow into a programming model significantly improves programmer productivity and application portability.