The Performance with Optimal Energy Toolkit (POET) provides a means to monitor and adjust application performance while minimizing energy consumption during application runtime.
Bard is an extension of POET that adds support for monitoring and adjusting power consumption while maximizing performance.
For details, please see the following and reference as appropriate:
- Connor Imes, David H. K. Kim, Martina Maggio, and Henry Hoffmann. "POET: A Portable Approach to Minimizing Energy Under Soft Real-time Constraints". In: RTAS. 2015.
- Connor Imes and Henry Hoffmann. "Bard: A Unified Framework for Managing Soft Timing and Power Constraints". In: SAMOS. 2016.
- Connor Imes, David H. K. Kim, Martina Maggio, and Henry Hoffmann. "Portable Multicore Resource Management for Applications with Performance Constraints". In: MCSoC. 2016.
See the baseline-1.0
branch for the version of the API defined in these publications.
The POET library no longer has any direct dependencies, but some tests/examples depend on the following:
CMake will skip building some tests/examples if these dependencies are not found.
The baseline-1.0
branch has a direct dependency on:
This project uses CMake.
To build, run:
mkdir _build
cd _build
cmake ..
make
Run the tests from the build directory:
./[test_binary] [num_beats] [target_rate] [window_size]
The num_beats is the number of total heartbeats the application will cycle through before exiting. The target_rate is the number of heartbeats per second, and the window size is the number of heartbeats used to calculate the heartbeat rate. It doesn't make sense to give the test binary a target heartbeat rate without knowing the normal heartbeat rate of the application on your system. To find this, run:
./[test_binary] [num_beats] 0 [window_size]
If you aren't sure what parameters to use, a good place to start is 200 beats and a window size of 20.
To install, run with proper privileges:
make install
Headers are installed to /usr/local/include/poet. The library is installed to /usr/local/lib.
Install must be run before uninstalling in order to have a manifest. To uninstall, run with proper privileges:
make uninstall
.
├── config -- Default and example configuration files
├── inc -- Header files
├── src -- Source files
└── test -- Test source files