The Programming Models group at BSC has published a new release (version 2021.06) of the OmpSs-2 programming model.
We have extended the OmpSs-2 programming model and runtime system to support NUMA systems. We have also enhanced the taskloop construct to support data dependencies, and the CTF tracing systems now support MPI applications. In addition, the CPU manager has a new hybrid policy. Finally, this release also includes several performance enhancements and bug fixes.
1. NUMA support
We have extended the OmpSs-2 programming model and runtime system to support NUMA systems. Now, application developers can efficiently distribute memory allocations across NUMA domains. The runtime system leverages this information to perform NUMA-aware task scheduling, which maximizes performance. We have evaluated this feature with several benchmarks with very positive results.
2. Taskloop with dependencies
The taskloop construct has been extended to support task dependencies for each task generated. This new feature dramatically increases the applicability of the taskloop, which now can be naturally combined with other tasks created before or after it.
3. New onready clause
We have extended the OmpSs-2 model so tasks can leverage a new onready clause to define arbitrary callback functions executed when a task becomes ready. This feature is especially useful in combination with libraries such as TAMPI and TAGASPI to develop hybrid applications.
4. CTF instrumentation
The CTF tracing system has been enhanced with a faster trace converter, so the generation of Paraver traces is now significantly faster. In addition, the CTF tracing system has been extended to support distributed applications. Now, users can generate a single Paraver trace that contains information from all MPI ranks.
5. Runtime performance enhancements and bug fixes
The CPU manager has been extended with a new hybrid policy that busy-waits for a user-defined amount of time and then stops the idle cores. This hybrid policy combines the best of the idle and busy policies and will become the default in a future release.
The polling service API, which was deprecated on the last release, has been removed.
Most of the new features in this release have been developed in the context of the DEEP-EST, DEEP-SEA, and Lo-Sync (PRACE-6IP) projects.