POET & Bard

The Performance with Optimal Energy Toolkit

Source Code

For easy integration with other software, libraries should be installed to the local system. See the project README files for instructions.

Heartbeats 2.0

The Heartbeats 2.0 dependency is available at:
https://github.com/libheartbeats/heartbeats

POET

POET source code, including example configurations, is available at:
https://github.com/libpoet/poet

You will need the baseline-1.0 branch to use the benchmark patches below.

Bard

Find the Bard fork of POET at:
https://github.com/libpoet/bard

You will need the baseline-1.0 branch to use the benchmark patches below.

There is a "bard" branch of heartbeats if you need the updated hb-energy implementation to support both the Hardkernel ODROID-XU+E and ODROID-XU3.

Benchmark Patches

Git patches are available for eight benchmarks from three different suites.
Instructions are for the POET patches, but the process is the same for Bard patches.

Note: If you get an error like

fatal: git apply: bad git-diff - expected /dev/null on line 4
while applying a patch, you may need to run dos2unix on the diff file(s), then try again.

PARSEC

POET: parsec-3.0-beta-20130728-poet.diff
Bard: parsec-3.0-beta-20130728-bard.diff
Includes modifications for blackscholes, bodytrack, facesim, ferret, and x264.

To apply the patch for a new installation, first download PARSEC 3.0-beta-20130728 from the PARSEC website.

tar xzvf parsec-3.0-core.tar.gz
cd parsec-3.0
git init
git add .
git commit -m "Add PARSEC"
git apply /path/to/parsec-3.0-beta-20130728-poet.diff
git add .
git commit -m "Add POET"
								

To build, use the gcc-hooks-poet configuration:

bin/parsecmgmt -c gcc-hooks-poet -p <benchmark> -a <build|clean|uninstall>

ParMiBench

POET: parmibench-poet.diff
Bard: parmibench-bard.diff
Includes modifications for dijkstra and sha.

To apply the patch for a new installation, first download the benchmark from the ParMiBench website.

unzip parmibench.zip -d parmibench
cd parmibench/Products
git init
git add .
git commit -m "Add ParMiBench"
git apply /path/to/parmibench-poet.diff
git add .
git commit -m "Add POET"
							

To build, simply change to either Network/Dijkstra/Parallel or Security/sha and run:

make

STREAM

POET: stream-poet.diff
Bard: stream-bard.diff

To apply the patch for a new installation, first download the benchmark from the STREAM website.

cd FTP/Code
git init
git add .
git commit -m "Add STREAM"
git apply /path/to/stream-poet.diff
git add .
git commit -m "Add POET"
							

To build, simply run:

make

Publications

When using or discussing this work, please reference the appropriate publication(s):

  • 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. (doi)
  • 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.