The increasing needs for high-performance computing capabilities in real-time systems is pushing the need for the use of complex parallel and heterogeneous platforms. This complicates and even invalidates the use of traditional mechanisms to derive and provide real-time guarantees. Task-to-thread mapping is a key process, not only to provide an optimal performance by enhancing load balance and reducing the overheads of the parallel runtime system, but also to enable predictable execution.
To address these somehow contradictory requirements, this work leverages the OpenMP programming model and its implementation in the LLVM compilation framework by virtue of its programmability, performance, portability, and the recently demonstrated time-predictability. In this context, the paper provides an evaluation of different approaches to perform task-to-thread mapping, particularly comparing dynamic mapping, with mapping decisions made during execution, with a static mapping approach, where a fixed mapping is recorded in a preliminary execution, and then repeated in all executions. Static mapping is usually the preferred approach in real-time systems, due to being perceived as more predictable, whilst dynamic mapping is generally perceived as providing higher average performance.
The obtained results allow to understand that although dynamic mapping indeed provides in general higher performance, it also may provide less variability, thus partially addressing the predictability concern, and opening opportunities for dynamic mapping in real-time high-performance systems.