Performance portability is the holy grail in modern High-Performance Computing (HPC) systems due to the heterogeneity in the processor architectures and their rapid evolution. Efficiently utilizing diverse and ever-changing hardware is complex and limits domain experts not proficient in computer science and parallel programming. High-level parallel programming models, like OpenMP and Kokkos, offer a good trade-off between performance, programmability and portability. Performance portability is the next target to enable portability through minimal or no changes in the source code. OpenMP is a great candidate to bring this quality due to its capabilities for exploiting various forms of parallelism across different hardware architectures, the huge community developing OpenMP applications, and the latest extensions towards performance portability based on function and directive variants. This work extends OpenMP function variants to allow the parallel runtime system to gather metrics and use them to dynamically decide among the set of function specializations provided by the user. This allows taking into account dynamic conditions of the system, like the workload of a device at a given time and the memory consumption of a given implementation. This work includes an implementation of the proposal in LLVM and its evaluation using a number of benchmarks and configurations. This technique is evaluated in terms of CPU, GPU and memory usage against vanilla OpenMP variants, showing the significant gains it can obtain in different evolving scenarios.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Adaptive Parallelism in OpenMP Through Dynamic Variants

  • Adrian Munera,
  • Guerau Dasca,
  • Eduardo Quiñones,
  • Sara Royuela

摘要

Performance portability is the holy grail in modern High-Performance Computing (HPC) systems due to the heterogeneity in the processor architectures and their rapid evolution. Efficiently utilizing diverse and ever-changing hardware is complex and limits domain experts not proficient in computer science and parallel programming. High-level parallel programming models, like OpenMP and Kokkos, offer a good trade-off between performance, programmability and portability. Performance portability is the next target to enable portability through minimal or no changes in the source code. OpenMP is a great candidate to bring this quality due to its capabilities for exploiting various forms of parallelism across different hardware architectures, the huge community developing OpenMP applications, and the latest extensions towards performance portability based on function and directive variants. This work extends OpenMP function variants to allow the parallel runtime system to gather metrics and use them to dynamically decide among the set of function specializations provided by the user. This allows taking into account dynamic conditions of the system, like the workload of a device at a given time and the memory consumption of a given implementation. This work includes an implementation of the proposal in LLVM and its evaluation using a number of benchmarks and configurations. This technique is evaluated in terms of CPU, GPU and memory usage against vanilla OpenMP variants, showing the significant gains it can obtain in different evolving scenarios.