OmpSs-2 2023.11
Version 2023.11, Wed Nov 22, 2023
The OmpSs-2 2023.11 release includes performance and bugfixes for the runtime systems, several new features for the nOS-V tasking library, and performance improvements on the taskiter
construct implementation. It also implements the ALPI (version 1.0) in the runtime systems, which provides support for task-aware libraries. The LLVM/OpenMP includes a new OpenMP runtime called OpenMP-V (libompv
) that works on top of the nOS-V tasking library. A new instrumentation library called Sonar is provided to instrument MPI function calls through ovni.
General
- The OmpSs-2 runtime systems expose the ALPI generic low-level tasking interface
Nanos6
- Implement the ALPI interface (version 1.0)
- Allow embedding jemalloc allocator
- Embed hwloc and jemalloc by default
- Add
devices.cuda.prefetch
config option to control CUDA prefetching of data dependencies (enabled by default) - Install the
nanos6.toml
config file in$prefix/share
- Remove obsolete instrument.h public interface
- Remove obsolete stats and graph instrumentations
- Remove software dependency with libunwind and elfutils
- Fix execution when enabling extrae instrumentation
- Remove memory leaks
- Various bugfixes and corrections
nOS-V
- Implement the ALPI interface (version 1.0)
- Add
misc.stack_size
config option to change the stack size of nOS-V threads - Add
ovni.level
config option for fine-grained instrumentation control - Change
nosv_attach
API to not require an explicit task type and support multiple attaches - Implement parallel tasks which can be executed on multiple CPUs at once
- Allow calling
nosv_init
andnosv_shutdown
multiple times - Change error handling to return custom nOS-V error codes
- Allow early wake of deadline tasks with
nosv_submit
passing theNOSV_SUBMIT_DEADLINE_WAKE
flag - Add compatibility layer for calls to
sched_get/setaffinity
andpthread_get/setaffinity
- Add instrumentation points for the
nosv_create
andnosv_destroy
APIs - Various bugfixes and corrections
NODES
- Improve performance of the
taskiter
construct - Fix several bugs of the
taskiter
implementation - Ensure nOS-V library is at the first level of dependencies
- Use the updated attach/detach from nOS-V 2.0
- Drop support for nOS-V versions older than 2.0
LLVM/OpenMP
- Provide OpenMP runtime named OpenMP-V (
libompv
) working over the nOS-V tasking library (-fopenmp=libompv
) - Make OpenMP-V runtime compatible with task-aware libraries
- Drop support for task-aware libraries in vanilla OpenMP runtime
libomp
LLVM/Clang
- Fix task data dependencies' calculation for long double types
Ovni
- Add
OVNI_TRACEDIR
envar to change the trace directory (default isovni
) - Add the
ovniver
program to report the libovni version and commit - Add
ovni_version_get()
function - Add nOS-V API subsystem events for
nosv_create()
andnosv_destroy()
- Add TAMPI model with
T
code, subsystem events and cfgs - Add MPI model with
M
code, function events and cfgs - Don't hardcore destination directory names like lib, to use the ones in the destination host (like lib64)
Sonar
- Introduce the Sonar library that uses ovni for instrumenting MPI functions
Task-Aware Libraries
- Leverage the ALPI interface instead of the Nanos6-specific interface
- Drop support for OmpSs-2 versions older than 2023.11
- See other features and fixes in each task-aware libraries' CHANGELOG