NODES is developed by the System Tools and Advanced Runtimes (STAR) group at the Barcelona Supercomputing Center. NODES -- short for nOS-V-based Dependency System -- is a runtime library designed to work on top of the nOS-V runtime while providing most of the functionalities from its predecessor, Nanos6. NODES acts as a dependency system for nOS-V by synchronizing the data flow of codes annotated with OmpSs-2 directives and bridges the gap between nOS-V and user applications through these annotations. Simultaneously, nOS-V manages the life cycle of multiple generic tasks from various applications or libraries such as NODES and handles their interaction with the system.
The NODES (nOS-V based OmpSs-2 DEpendency System) Runtime Library is Free Software, licensed under the clauses of the GNU GPL v3 License included in the COPYING file. The copyright of the files included in this package belongs to the Barcelona Supercomputing Center, unless otherwise stated.
The following software is required to build and install NODES:
Additionally, NODES is prepared to use the following optional libraries:
- ovni to instrument and generate execution traces for offline performance analysis with paraver. Minimum version required 1.5.0
When cloning from a repository, the building environment must be prepared through the following command:
$ autoreconf -fiv
When the code is distributed through a tarball, it usually does not need that command.
Then execute the following commands:
$ ./configure --prefix=INSTALLATION_PREFIX \
$ --with-nosv=NOSV_INSTALL_PATH \
$ --with-boost=BOOST_INSTALL_PATH \
$ ...other options...
$ make all
$ make install
where INSTALLATION_PREFIX
is the directory into which to install NODES.
The configure script also accepts the following options:
--with-nosv
to specify the prefix of the nOS-V installation--with-boost
to specify the prefix of the boost installation--with-ovni
to specify the prefix of the ovni installation (Optional)--with-nodes-clang
to specify the prefix of a CLANG installation with NODES support (Optional)
The development of NODES requires contributors to follow these few simple guidelines:
- C++11
- K&R indentation style
- Camel case coding style
For ovni to work properly in NODES, the used nOS-V installation must be configured with ovni support as well, with version 1.5.0 minimum. Once both nOS-V and NODES are configured with ovni support, nOS-V has to enable its own instrumentation. At the time of writing, this is done as follows:
$ export NOSV_CONFIG_OVERRIDE="instrumentation.version=ovni"
By default, in NODES the ovni
instrumentation is disabled, even when compiling with ovni support. To
enable instrumenting executions with ovni, set the NODES_OVNI
environment variable to 1
:
$ export NODES_OVNI=1
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.