A General-Purpose Mapper Module for Adaptive OpenMP Runtime Support
Ilias K. Kasmeridis, Vassilios V. Dimakopoulos · 2019
The latest versions of the OpenMP specifications have introduced constructs that enable programmers to utilize heterogeneous compute units alongside the main multicore cpu. They allow offloading specific regions of the program code to any of the available computational devices; the offloaded code may itself generate parallelism by employing suitable OpenMP constructs. While the concept seems ideal, co-processors and accelerators, especially embedded ones, often have limited resources or capabilities to provide efficient OpenMP support. Designing an OpenMP infrastructure for such devices can be a real challenge. A very effective solution has been proposed in the form of compiler-assisted, adaptive runtime support that is tailored to each specific application. In this work, we present a general-purpose mapper module, which has the ability to select the best runtime configuration given a) a set of metrics that profile the application and are obtained by compile-time analysis and b) a set of device-specific decision rules, which an implementor provides for a device, written in a customized language.