Welcome to BenchBuild’s documentation!


An benchbuild.experiment defines a series of phases that constitute a benchbuild compatible experiment. This is the default implementation of an experiment.

Clients can derive from class class::benchbuild.experiment.Experiment and override the methods relvant to their experiment.

An experiment can have a variable number of phases / steps / substeps.

Phases / Steps / Substeps

All phases/steps/substeps support being used as a context manager. All 3 of them catch ProcessExecutionErrors that may be thrown from plumbum, without aborting the whole experiment. However, an error is tracked.


An experiment performs the following actions in order:
  1. clean - Clean any previous runs that collide with our directory

  2. prepare - Prepare the experiment, this is a good place to copy relevant

    files over for testing.

  3. run (run_tests) - Run the experiment. The ‘meat’ lies here. Override

    This to perform all your experiment needs.

Likwid helper functions.

Extract information from likwid’s CSV output.

Analyze the BB database.

Project handling for the benchbuild study.

benchbuild’s run command.

This subcommand executes experiments on a set of user-controlled projects. See the output of benchbuild run –help for more information.

Settings module for benchbuild.

All settings are stored in a simple dictionary. Each setting should be modifiable via environment variable.

Dump SLURM script that executes the selected experiment with all projects.

This basically provides the same as benchbuild run, except that it just dumps a slurm batch script that executes everything as an array job on a configurable SLURM cluster.

Indices and tables