Code Monkey home page Code Monkey logo

nos-v's Introduction

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 preprint:

@misc{alvarez2022nosv,
      title={nOS-V: Co-Executing HPC Applications Using System-Wide Task Scheduling},
      author={David Álvarez and Kevin Sala and Vicenç Beltran},
      year={2022},
      eprint={2204.10768},
      archivePrefix={arXiv},
      primaryClass={cs.DC}
}

nos-v's People

Contributors

aleixrocks avatar dave96 avatar kevinsala avatar mikaop avatar narru19 avatar rodarima avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.