Skip to content

Latest commit

 

History

History
59 lines (45 loc) · 3.58 KB

README.md

File metadata and controls

59 lines (45 loc) · 3.58 KB

README

This repository contains the mARGOt framework core, version 3

Summary of the framework

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.

Code organization

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)

Compiling instructions

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.

Building option

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

Contribution guidelines

Clone the repository and send pull requests, any contribution is welcome.

Who do I talk to?

Contact: davide [dot] gadioli [at] polimi [dot] it

Organization: Politecnico di Milano, Italy

Acknowledgment

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)