Installation of NODES¶
The NODES (short for nOS-V based OmpSs-2 DEpendency System) runtime is a library designed to work on top of the nOS-V runtime. It includes most of the functionalities from its predecessor, Nanos6, whilst leaving the interaction with the system to nOS-V. NODES implements the OmpSs-2 parallel programming model, developed by the Programming Models group at the Barcelona Supercomputing Center.
NODES can be obtained from the GitHub public repository or by contacting us at pm-tools@bsc.es.
Build requirements¶
The following software is required to build and install NODES:
Optional libraries and tools¶
The following software is required to enable additional optional features:
Build procedure¶
NODES uses the standard GNU automake and libtool toolchain. When cloning from a repository, the building environment must be prepared through the command below. When the code is distributed through a tarball, it usually does not need that command.
$ autoreconf -fiv
Then execute the following commands:
$ ./configure --prefix=$INSTALLATION_PREFIX ...other options...
$ make
$ make install
where $INSTALLATION_PREFIX
is the directory into which to install NODES.
The configure script accepts the following options:
--with-nosv=prefix
to specify the prefix of the nOS-V installation--with-boost=prefix
to specify the prefix of the Boost installation--with-ovni=prefix
to specify the prefix of the ovni installation--with-nodes-clang=prefix
to specify the prefix of the LLVM/Clang installation that supports OmpSs-2
Optionally, passing a valid LLVM/Clang installation when configuring enables executing the NODES tests by running:
$ make check
Coroutine support¶
NODES supports the use of Coroutines provided that a compiler with C++20 support is used.
To compile with Coroutine support, the -fcoroutines
flag must be passed, as shown in the example below:
$ clang++ -std=c++20 -fcoroutines -o test-coroutines.bin test-coroutines.cpp
For more detailed examples on the usage of Coroutines, check our correctness tests in the tests/correctness/coroutine
subdirectory of the NODES source code.
Known limitations¶
NODES supports most of the features found in the Nanos6 runtime. However, at the moment, it does not support the following:
Linear-region dependency system
Assert directive
Furthermore, the instrumentation provided differs in the sense that it only provides (1) entry-exit points instrumentation, and (2) instrumentation related to the dependency system. Thus, instrumentation variants such as profile
, graph
, and the linter (lint
) are not available in NODES.