Specifications

This page gathers use-cases, requirements, and technical specifications of perfmum utility.

Feel free to use-cases and requirements by creating a pull-request

Use-cases

Micro-benchmarks in CI

As a developer, given a C++ library I maintain, when I push Git changes, then continuous integration executes micro-benchmarks of some critical C++ sections of the library.

Micro-benchmarks CMake helpers

As a developer, given a C++ library built with CMake, perfmum provides dedicaded CMake modules to add new micro-benchmarks to the test target.

Micro-benchmarks monitoring over time

As a developer, given a C++ library I maintain with a micro-benchmark integrated in the continuous integration process, I can review the history of metrics of this benchmark in a web browser.

Launch coreneuron simulation

As a HPC developer, I can use perfmum to describe a coreneuron simulation from the different build configurations to the runtime parameters. perfmum will take care of the different phases: build, run, results extraction and archiving, analytics and monitoring.

Simulations for coreneuron UT

As a developer, I can describe the different simulations used by the coreneuron continuous integration workflow.

Coreneuron integration tests

As a HPC developer, I can describe the different simulations that must be executed once a week to validate coreneuron.

Alerting in case of performance regression

As a HPC developer owner of a component, if continuous integration detects a performance regression, then I am notified via email or Matrix.

Requirements

  • Can configure build according to several dimensions:
    • toolchain: gcc+mvapich, intel+intelmpi, ...
    • architectures: cpu, gpu, knl
    • variants: profile, non-profile, optimization-types
  • Can configure the runtime environment of the simulation/test:
    • datasets
    • input parameters
  • Can configure what metrics to extract
  • Push all metrics and row results to a DB (Elasticsearch, GPFS)

Technical Specifications

To be defined