Skip to content

Benchmark Definition Reference (YAML)

The whole benchmark is defined in a YAML file. The following template shows all available options, their types, and whether they are required.

Do note that, if relative paths are used wherever a path is expected, they are relative to the location of the benchmark file itself.

This template is automatically generated from the application's source code and is always up-to-date.

For the full specification — including the rationale, semantics of each section, and design constraints — see the YAML specification design document.

benchmark_template.yaml
# Omnibenchmark YAML Template.
# Generated from Pydantic Benchmark model (omnibenchmark version: 0.5.1.post1+g3e46b0978.d20260602)
# DO NOT EDIT THIS FILE
# required (string), Unique identifier
id: example_id

# optional (string), Human-readable name
name: example benchmark

# optional (string), Description of the entity
description: A more verbose description, for humans reading this

# required (string), Benchmark author
benchmarker: Your Name

# optional (array), List of benchmark authors
authors: ...

# required (string), Benchmark version
version: 1.0.0

# required (SoftwareBackendEnum), Software backend, options: apptainer, conda, docker, envmodules, host
software_backend: apptainer

# required (array), Available software environments
software_environments:
  - # Example item:
    # required (string), Unique identifier
    id: example_id

    # optional (string), Human-readable name
    name: example benchmark

    # optional (string), Description of the entity
    description: A more verbose description, for humans reading this

    # optional (Repository)
    repository:
      # required (string), Repository URL
      url: https://example.com

      # required (string), Commit hash
      commit: c0ffee4

      # optional (RepositoryType), Repository type, options: git
      type: git

      # optional (string), Named entrypoint key from the module's omnibenchmark.yaml. Defaults to 'default' when not specified.
      entrypoint: example_entrypoint


    # optional (string), Conda environment file path
    conda: example_conda

    # optional (string), Apptainer/Singularity image path
    apptainer: example_apptainer

    # optional (string), Docker image
    docker: example_docker

    # optional (string), Environment module name
    envmodule: example_envmodule

    # optional (string), EasyBuild config path
    easyconfig: example_easyconfig


# required (array), Benchmark stages
stages:
  - # Example item:
    # required (string), Unique identifier
    id: example_id

    # optional (string), Human-readable name
    name: example benchmark

    # optional (string), Description of the entity
    description: A more verbose description, for humans reading this

    # required (array), Modules in this stage
    modules:
      - # Example item:
        # optional (string), Software environment ID
        software_environment: example_software_environment

        # required (string), Unique identifier
        id: example_id

        # optional (string), Human-readable name
        name: example benchmark

        # optional (string), Description of the entity
        description: A more verbose description, for humans reading this

        # required (Repository), Module repository
        repository:
          # required (string), Repository URL
          url: https://example.com

          # required (string), Commit hash
          commit: c0ffee4

          # optional (RepositoryType), Repository type, options: git
          type: git

          # optional (string), Named entrypoint key from the module's omnibenchmark.yaml. Defaults to 'default' when not specified.
          entrypoint: example_entrypoint


        # optional (array), Module parameters
        parameters: ...

        # optional (array), Paths to exclude
        exclude: ...

        # optional (array), Module outputs
        outputs: ...

        # optional (object), Explicit upstream plugs. Maps provides-label → module-id. This module is wired only to the specified ancestor node for each named label.
        requires: ...

        # optional (Resources), Resource requirements (overrides stage-level resources)
        resources:
          # optional (integer), Number of CPU cores
          cores: 1

          # optional (integer), Memory in megabytes
          mem_mb: 1

          # optional (integer), Disk space in megabytes
          disk_mb: 1

          # optional (integer), Expected runtime in minutes
          runtime: 1

          # optional (integer), Number of GPUs
          gpu: 1



    # optional (array), Stage inputs
    inputs: ...

    # required (array), Stage outputs
    outputs:
      - # Example item:
        # required (string), Unique identifier
        id: example_id

        # required (string), File path
        path: filename.txt


    # optional (Resources), Resource requirements for rules in this stage
    resources:
      # optional (integer), Number of CPU cores
      cores: 1

      # optional (integer), Memory in megabytes
      mem_mb: 1

      # optional (integer), Disk space in megabytes
      disk_mb: 1

      # optional (integer), Expected runtime in minutes
      runtime: 1

      # optional (integer), Number of GPUs
      gpu: 1



# optional (array), Metric collectors
metric_collectors: ...

# optional (Storage), Remote storage configuration
storage:
  # optional (StorageAPIEnum), Storage API type (currently only S3 is supported), options: S3
  api: S3

  # required (string), Storage endpoint URL
  endpoint: example_endpoint

  # optional (string), Storage bucket name (only needed if using S3)
  bucket_name: example-bucket


# optional (StorageAPIEnum), Storage API type (deprecated, use storage.api)
storage_api: S3

# optional (string), Storage bucket name (deprecated, use storage.bucket_name)
storage_bucket_name: example_storage_bucket_name

# optional (string), Benchmark YAML specification version (deprecated, use api_version)
benchmark_yaml_spec: 0.0

# optional (APIVersion), default: 0.4.0, API version, options: 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0
api_version: 0.4.0

# optional (Provenance), Lineage metadata
provenance:
  # optional (string), Canonical URL where the authoritative version of this benchmark is published
  canonical_url: example_canonical_url

  # optional (string), Identifier or URL of the benchmark this one was forked/derived from
  derived_from: example_derived_from

  # optional (string), summary_hash() of the parent benchmark of which this is a subset
  subset_of: example_subset_of