This repository contains the mARGOt framework core, version 3
The mARGOt framework core provides to an application the ability to dynamically adapt, in order to face changes in the execution environment or in the application requirements. The framework exploits the information gathered during a Design Space Exploration in order to guide the selection of the most suitable configuration of software knobs according to application requirements.
The application requirements are expressed as a constrained multi-objective optimization problem. The framework enables the application to change, at runtime, the optimization problem (e.g. redefining the objective funcion or adding a new constraint ). Moreover, the framework enables the user to change also the application knowledge at runtime, providing support for an online Design Space Exploration.
The repository is organized as follow:
.
├── doc/ -> The mARGOt user manuals
├── heel/ -> mARGOt heel source files (lib + exe)
├── margot/ -> the autotuner source files
└── agora/ -> AGORA online learning module source files (lib + exe)
The building system is based on CMake. We also provides additional CMake cache file with the most common optimization flags.Assuming you are in the path path/to/repository/root, the default procedure is as follow:
:::bash
$ mkdir build
$ cd build
$ cmake -C ../cmake/caches/gcc-x86_64.cmake -DCMAKE_INSTALL_PREFIX:PATH=<path> ..
$ make
$ make install
The mARGOt autotuning framework is written in C++11. However, it requires the Paho MQTT C client to enable the online learning of the application knowledge (Agora). The mARGOt heel libraries and executables requires C++17 for the std::filesystem features, and boost::program_options. We recommend the user to provide these libraries. The framework itself is platform-agnostic. However, several monitors parse the /proc metafiles, assuming a unix-like environment.
The default configuration builds and installs the framework as a static library, using as much monitors as possible. However, it is possible to change this behavior using the CMake configuration options as follows:
Option name | Values [default] | Description |
---|---|---|
LIB_STATIC | [ON], OFF | Build a static library (otherwise it is shared) |
GEN_DOC | ON , [OFF] | Generate the Doxygen documentation |
WITH_TEST | ON , [OFF] | Build the cxxtest application, to test the framework |
WITH_PAPI_MONITOR | ON , [OFF] | Include the monitor of Perf events (using PAPI interface) |
WITH_TEMPERATURE_MONITOR | ON , [OFF] | Include the temperature monitor (requires lm_sensors) |
WITH_BENCHMARK | ON , [OFF] | Build a benchmark to evaluate the overheads |
Clone the repository and send pull requests, any contribution is welcome.
Contact: davide [dot] gadioli [at] polimi [dot] it
Organization: Politecnico di Milano, Italy
This work has been supported by European Commission under the grant 671623 FET-HPC-ANTAREX (AutoTuning and Adaptivity appRoach for Energy efficient eXascale HPC systems)