An open API service indexing awesome lists of open source software.

https://github.com/ergus/nanos-cluster-benchmarks

Main set of benchmarks for OmpSs-2@Cluster
https://github.com/ergus/nanos-cluster-benchmarks

c cmake cpp high-performance-computing inter-language mpi ompss-2 parallel-computing performance testing

Last synced: 4 months ago
JSON representation

Main set of benchmarks for OmpSs-2@Cluster

Awesome Lists containing this project

README

          

# Readme

This is the basic centralized set of benchmarks for
[OmpSs-2@Cluster](https://github.com/bsc-pm/nanos6/blob/master/docs/cluster/README-CLUSTER.md).

## Installation

Right now it requires a set of dependencies and requirements to
work. We will try to reduce the dependencies as much as possible in
the future.

1. [OmpSs-2@Cluster
requirements](https://github.com/bsc-pm/nanos6/blob/master/docs/cluster/README-CLUSTER.md#system-requirements).

2. [Mercurium](https://pm.bsc.es/mcxx)

3. [Nanos6](https://pm.bsc.es/ftp/ompss-2/doc/user-guide/build/nanos6.html)

To build the code you need first to install all the dependencies above. Then just:

```console
git clone --recursive 'url_to_this_repo'
cd nanos6-cluster-benchmarks
mkdir build
cd build
cmake ..
make
```

When cloning `--recursive` some submodules will be downloaded and compiled automatically.

4. [ArgParserC](https://github.com/Ergus/ArgParserC.git)

5. [cmacros](https://github.com/Ergus/cmacros.git)

6. [ArgParserBash](https://github.com/Ergus/ArgParseBash.git)

After this all the benchmarks should be build inside a directory with
the same name than the original one in the project's root directory.

## Adding benchmarks

To add a new benchmark you only need to create a new directory inside
the project's root directory and add a CMakeLists.txt within it with
the build instructions.

You don't need to modify anything in the main CMakeLists.txt or
anywhere else outside that directory. If you want to add similar
benchmarks that reuses some code between them you can add them in the
same directory.

### Contribution hints

1. Please try to rely in the **utils** functionalities when possible
instead of using external no standard tools.

2. Make the benchmarks keeping readability and simplicity as much as
possible (read [The Zen of
Python](https://www.python.org/dev/peps/pep-0020/) or execute
`python -c 'import this'`).

3. You can use C (.h .c) and C++ (.hpp .cpp) mainly, please respect
the filenames.

4. Use the [linux kernel coding
style](https://www.kernel.org/doc/html/v4.10/process/coding-style.html).

## Tests with CTest

Some very simple set of tests are added when a **Python** and
**NumPy** are detected. These are very helpfull during developement
and the addition is optional.

It is recommended to add such tests in order to check for correctness
in the benchmarks, the runtime and the executions during
modifications.