benchpark icon indicating copy to clipboard operation
benchpark copied to clipboard

New Benchpark command: "system-create"

Open scheibelp opened this issue 1 year ago • 1 comments

Add command that can be used to instantiate a new system definition, for example:

$ benchpark system-create --from=HPECray-zen3-MI250X-Slingshot cray1
$ ls configs/cray1
auxiliary_software_files  spack.yaml  system_definition.yaml  variables.yaml

$ benchpark system-create cray2 --template=templates/scheduler/slurm/ --template=templates/generic-system/cray/
$ ls configs/cray2
spack.yaml  variables.yaml

This will often require an intermediate editing step, in particular to define auxiliary_software_files; after that, you could e.g. do:

$ benchpark setup amg2023/rocm cray2...

Broadly:

  • You can copy an existing config with --from
  • Or you can assembly a generic configuration using a series of --template options

If two templates define Ramble configurations with the same name, this command will use a ramble-python script to automatically merge them:

$ benchpark system-create cray2 --template=templates/scheduler/slurm/ --template=templates/experiment-deps/cray/ --template=templates/catch-all/

(where here, templates/scheduler/slurm/ and templates/catch-all both define variables.yaml)

Current issues:

  • [x] (done as of Jan. 23) Right now, if two templates define the same file name, the last one will overwrite all prior

    • (UPDATE Jan. 17) Work is in progress to handle merging these config files together (I plan to add that here before marking this PR as ready to merge)
  • [ ] (New Jan. 23) Right now, I have benchpark clone its own Ramble when executing system-create, this means that there can be multiple Ramble installations:

    • One for benchpark itself (to run ramble-python)
    • One for managing each experiments directory (so there already could be multiple, but in general there would now be at least 2)

    It might be better to manage this ramble instance as a Git submodule

  • [ ] (New Jan. 23) Tests for system-create would be good

  • [ ] (possibly for later) bin/benchpark is now reaching a size where it would be useful to split it up

  • [ ] I've added some initial entries to templates/ to give a notion of how they are supposed to be used in combination with the system-create command, but there's not enough there to be actually useful yet

scheibelp avatar Jan 12 '24 00:01 scheibelp

@slabasan to migrate boilerplate system_definition.yaml from https://github.com/LLNL/benchpark/pull/93 to this PR

slabasan avatar Jan 12 '24 20:01 slabasan