Skip to content
/ nos-v Public

nOS-V is a low-level threading and tasking library that enables co-execution of applications, developed by the System Tools and Advanced Runtimes (STAR) group at the Barcelona Supercomputing Center.

License

Notifications You must be signed in to change notification settings

bsc-pm/nos-v

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nOS-V Library

nOS-V is a runtime library that implements the nOS-V tasking API, developed by the Programming Models group at the Barcelona Supercomputing Center.

Its main goal is to provide a low-level and low-overhead tasking runtime which supports co-execution and can be leveraged by higher-level programming models.

Licensing

The nOS-V 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.

Installation

Build requirements

The following software is required to build and install nOS-V:

  1. automake, autoconf, libtool, pkg-config, make and a C11 compiler
  2. numactl

Optional dependencies

The following software is required to enable optional features:

  1. ovni to generate execution traces for performance analysis with Paraver
  2. PAPI for gathering performance counters (version >= 5.6.0)

Build procedure

When cloning from a repository, the building environment must be prepared through the following command:

$ autoreconf -f -i -v

When the code is distributed through a tarball, it usually does not need that command.

Then execute the following commands:

$ ./configure --prefix=INSTALLATION_PREFIX ...other options...
$ make all check
$ make install

where INSTALLATION_PREFIX is the directory into which to install nOS-V.

The configure script accepts several options:

  1. --enable-debug: Add compiler debug flags and enable additional internal debugging mechanisms
  2. --enable-asan: Add compiler flags to enable address sanitizing
  3. --with-ovni: Enable ovni instrumentation and specify the ovni library installation prefix
  4. --with-papi: Enable PAPI counters and specify the PAPI library installation prefix
  5. --with-libnuma: Specify the numactl library installation prefix

Execution requirements

nOS-V must come first in the Lookup Scope of the executable. This is needed because nOS-V provides a number of interceptor functions. To do so, if you link nOS-V directly to your executable, link nOS-V before any other shared library. If linking nOS-V in a shared library, you will either need to link nOS-V again in your main executable or preload nOS-V using the LD_PRELOAD environment variable.

Link-time example:

### wrong
$ gcc main.c -lmylib -lnosv
### correct
$ gcc main.c -lnosv -lmylib

Run-time example:

$ LD_PRELOAD=<nosv_install_path>/lib/libnosv.so ./main

Usage and documentation

The user documentation for nOS-V can be found here

Contributing

The development of nOS-V is based on a few simple principles that are maintained throughout the library:

  1. No dependencies, aside from libc and pthreads
  2. C11 with K&R C indentation. There is a ".clang-format" file provided
  3. Simple is better. Stablishing compile-time limits is encouraged if it simplifies significantly the code

Citing

If you use nOS-V in your research, we ask that you cite the following article pending publication:

@misc{alvarez2022nosv,
	title={nOS-V: Co-Executing HPC Applications Using System-Wide Task Scheduling},
	booktitle={2024 IEEE International Parallel and Distributed Processing Symposium},
	author={David Álvarez and Kevin Sala and Vicenç Beltran},
	year={2024},
	note={Accepted, to be published}
}

About

nOS-V is a low-level threading and tasking library that enables co-execution of applications, developed by the System Tools and Advanced Runtimes (STAR) group at the Barcelona Supercomputing Center.

Resources

License

Stars

Watchers

Forks