Skip to content

Configuration Examples

Example 1: Simple Configuration

A basic setup tracking performance over time, grouping runs by Node count.

SimpleBenchmark:
  host: 'https://git.example.com/benchmarks/simple.git'
  token: "<token>"

  sources:
    folders: ['results/']

  metrics:
    ts:
      type: ts
      header: 'timestamp'
    Performance:
      type: float
      unit: 'GFlops'
      description: 'Calculated GFlops'
    Nodes:
      from: filename
      regex: 'run_(\d+)nodes_.*'
      type: int
      description: 'Number of compute nodes'

  # Table columns: One row per Node count
  table:
    - Nodes

  # Plot Performance vs Time, with one curve per value of Node count
  plots:
    - x: ts
      y: Performance
      traces:
        - Nodes

Example 2: Complex Configuration (Multi-Mode Application)

This example demonstrates a generic Molecular Dynamics application ("MolecDyn") that runs in two distinct modes: Simulation (performance measured in ns/day) and Energy Minimization (convergence measured in steps). It also demonstrates using Derived Metrics and Annotations.

MolecDyn_Suite:
  # Root configuration: Inherited by all tabs
  host: 'https://git.example.com/science/molecdyn.git'
  token: "<token>"
  description: "Molecular Dynamics Regression Suite"

  # Page-Level Tabs: Separates distinct execution modes
  tabs:
    # Tab 1: Standard Time-Step Simulation
    Simulation:
      description: 'Standard MD Production Run'
      sources:
        folders: ['data/simulation']

      metrics:
        # Metrics specific to Simulation
        Performance:
          type: float
          unit: 'ns/day'
          description: 'Simulation throughput'
        Atoms:
          header: num_atoms
          type: int
          description: 'System size'
        Precision:
          header: prec
          type: str
          description: 'Double or Single Precision'
        ts:
          header: timestamp
          type: ts
        System:
          from: static
          value: 'Cluster-A'
          description: 'Cluster Name'
        JobID:
          from: metadata
          key: 'job_id'
          type: int
          description: 'Batch Job ID'
        # Derived Metric: Performance per Atom
        PerfPerAtom:
          type: float
          from: "'Performance' / 'Atoms'"
          description: 'Performance normalized by system size'

      table:
        - System
        - Atoms
        - Precision

      # Global Styles for this tab
      traces:
        colors:
          colormap: 'Set1'
        styles:
          mode: 'markers'

      plots:
        # Plot 1: Raw Performance
        - x: ts
          y: Performance
          traces: 
            - Atoms
            - Precision
          annotations:
            - JobID  # Show JobID when hovering over points

        # Plot 2: Derived Metric
        - x: ts
          y: PerfPerAtom
          traces:
            - Precision
          annotations:
            - JobID

    # Tab 2: Energy Minimization (Different metrics entirely)
    Minimization:
      description: 'Energy Minimization Convergence Tests'
      sources:
        folders: ['data/minimization']

      metrics:
        Steps:
          type: int
          description: 'Steps to converge'
        Algorithm:
          from: filename
          regex: 'min_(steep|cg)_.*'
          description: 'Steepest Descent or Conjugate Gradient'
        Tolerance:
          type: float
          header: tol
          description: 'Convergence tolerance criteria'
        ts:
          header: timestamp
          type: ts

      table:
        - Algorithm
        - Tolerance

      # Footer Tabs: Organize plots into categories
      plots:
        tabs:
          Convergence:
            - x: ts
              y: Steps
              # One curve per Algorithm
              traces:
                - Algorithm
              # Local Style Override: Lines + Markers
              styles:
                 mode: 'lines+markers'
                 marker:
                   size: 8
          History:
            # Viewing convergence relative to input tolerance
            - x: Tolerance
              y: Steps
              traces:
                - Algorithm