Skip to content

Glossary

btool: The command-line tool used to initialize, generate, run, and evaluate benchmarks. Subcommands include init, gen, run-dist, eval, conv, and verify.

runlim: A utility used to enforce resource limits (such as time and memory) on benchmark runs. The runlim executable should be placed in the programs/ directory and is used by the generated scripts to control execution.

SUT (System Under Test): The system being benchmarked. Each SUT, or a script calling it, should be placed in the programs/ directory and named according to the <system>-<version> convention.

template: A shell script or file that defines how a system is executed during benchmarking. Templates are referenced by configurations in the runscript and are stored in the templates/ directory.

resultparser: A script or tool that processes the output of benchmark runs to extract relevant measures and results. Custom resultparsers can be placed in the resultparsers/ directory and referenced in the runscript via the measures attribute of a system.

start.py / start.sh: Scripts generated for launching benchmarks. start.py is used for sequential jobs, and start.sh for distributed jobs. They are found in the output structure under <output>/<project>/<machine>/.

btool Subcommands

init: Initializes the required directory structure and files for the benchmark tool, creating folders such as programs/, resultparsers/, runscripts/, and templates/.

gen: Generates the benchmark scripts and output folder structure from a given runscript XML file.

run-dist: Schedules or dispatches distributed jobs (e.g., on a cluster) using the generated scripts. Used for running distributed benchmarks.

eval: Evaluates the results of completed benchmarks, collecting and summarizing measures into a results XML file.

conv: Converts results from XML format to other formats, such as Excel (.xlsx) or Jupyter notebooks (.ipynb), for further analysis or reporting.

verify: Checks benchmark results for errors, such as runlim errors, to ensure the integrity and correctness of the results.

Directory Structure (created by btool init)

programs/: Directory for solver or tool executables and scripts. Each system-under-test should be placed here, named as <system>-<version> to match the runscript.

resultparsers/: Directory for custom result parser scripts. Place any custom or provided resultparser (e.g., rp_tmp.py) here.

runscripts/: Directory containing example or user-defined runscript XML files that describe benchmark setups.

templates/: Directory for script templates used to generate run and distributed job scripts. Contains example templates referenced by configurations in the runscript.

Runscript Elements

runscript: The root element defining the benchmark set, systems, and output folder for a benchmark run.

machine: Describes a machine used for benchmarking, including its name, CPU, and memory (informational only).

config: Defines a configuration referencing a run template, specifying how systems are executed.

system: Specifies a solver or tool to be benchmarked, including its name, version, configuration, and command-line arguments. References a system-under-test/script inside the programs/ folder with the name <system>-<version>.

setting: Defines a configuration for a system, including command-line arguments, encodings, tags, and variables for generating multiple settings.

encoding: Specifies a logic program or file to be used as part of a setting or benchmark instance.

variable: Used within a setting to generate multiple settings by varying command-line arguments or other parameters.

job: Template for how runs are executed, including sequential (seqjob) and distributed (distjob) jobs, with attributes for timeout, runs, memory, and parallelism.

seqjob: A sequential job specifying timeout, number of runs, memory limit, and parallelism for each run.

distjob: A distributed job for cluster execution, with attributes for timeout, runs, memory, walltime, script mode, and partition.

benchmark: Defines a set of benchmark instances, organized into classes, to be run by systems.

folder: Specifies a directory containing benchmark instances, with options for encoding tags, grouping, and command-line arguments.

ignore: Excludes folders or files from a benchmark by prefix.

files: Manually adds specific files as benchmark instances, with options for encoding tags and grouping.

add: Used within files to add a specific file as a benchmark instance, with optional grouping and command-line arguments.

spec: Loads benchmark specifications from spec.xml files, with options for instance tags and recursive search.

class: Used in spec.xml to group instances, with a name and optional encoding tag.

instance: Specifies a single benchmark instance file, with optional tags, grouping, and command-line arguments.

project: Combines all elements to define a complete benchmark setup, including the job, machines, and benchmarks to run.

runtag: Specifies a machine and benchmark set to run, with optional setting tags for selection.

runspec: Explicitly specifies a single machine, benchmark, system, version, and setting to use for a run.