LLNL / benchpark

An open collaborative repository for reproducible specifications of HPC benchmarks and cross site benchmarking environments
https://software.llnl.gov/benchpark/
Apache License 2.0
25 stars 22 forks source link

[WIP] Repos, experiment objects, and experiment specs #299

Closed becker33 closed 1 month ago

becker33 commented 2 months ago

Introduces the Experiment class to encapsulate an experiment. An Experiment lives in a Repo, modeled after the repos in Spack/Ramble, and is written in an experiment.py file. An Experiment is instantiated and fetched from a repo based on a ConcreteExperimentSpec. A user supplies an ExperimentSpec, which is concretized to generate a ConcreteExperimentSpec with all options instantiated.

An Experiment can have a variant, which is defined using a directive as in Spack/Ramble.

The current Experiment repository is in test_repo and Benchpark is hardcoded to use that directory. This is just for WIP purposes. The only current Experiment is saxpy, and it is not in working condition yet at this point.

Calling code calls the Experiment.write_ramble_dict() method which calls per-section methods to construct the dictionary and writes it to yaml. Either the whole computation method or only the per-section methods can be overridden on a per-experiment-class basis.