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:
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
andmultidependences
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 ascommutative
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).