Influence in OpenMPΒΆ

Many OmpSs and StarSs ideas have been introduced into the OpenMP programming model. The next figure summarizes our contributions in the standard:

../_images/omp_contributions.png

Starting from version 3.0, released on May 2008, OpenMP included support for asynchronous tasks. The reference implementation, which was used to measure the benefits that tasks provided to the programming model, was developed at BSC and consisted on the Nanos4 run-time library and the Mercurium source-to-source compiler.

Our next contribution, which was included in OpenMP 4.0 (released on July 2013), was the extension of the tasking model to support data dependences, one of the strongest points of OmpSs that allows to define fine-grain synchronization among tasks. This feature was tested using Mercurium source-to-source compiler and the Nanos++ RTL.

In OpenMP 4.5, released on November 2015, the tasking model was extended with the taskloop construct using Nanos++ as the reference implementation to validate these ideas. BSC also contributed to version 4.5 adding the priority clause to task and taskloop constructs, and the Nanos++ RTL was used to validate the new interface included in the OpenMP standard with respect to third party tools.

OpenMP 5.0, released on November 2018, included several featured influenced by the OmpSs-2 programming model and implemented and tested through the Nanos6 runtime system:

  • task reductions as a way to use tasks as the participants of a reduction operation.

  • iterators and multidependences mechanisms to specify a variable number of dependences for a task instance.

  • taskwait dependences to relax the set of descendants to wait for before proceeding with the taskwait construct.

  • mutexinoutset, also known as commutative in OmpSs-2, a new type of dependence to support mutually exclusive tasks.

  • Detached tasks and data affinity support.

OpenMP 5.1, released on November 2020, included support for the concurrent clause and taskloop dependences.

OpenMP 6.0, released on November 2024, included support for free-agent threads, taskcaching, and transparent tasks (also known as weakdependences in OmpSs-2).