Create a mirror for another system

If you build a benchmark on a networked system, you can use benchpark mirror to create a directory that bundles all necessary resources to install and run that benchmark on another system, such that the destination system does not need network access.

On the networked system, if you created/built the benchmark with:

benchpark experiment init --dest=def-raja-perf raja-perf
benchpark system init --dest=def-ruby llnl-cluster cluster=ruby compiler=gcc
benchpark setup def-raja-perf/ def-ruby/ workspace/
. `pwd`/workspace/setup.sh
ramble --disable-progress-bar --workspace-dir `pwd`/workspace/def-raja-perf/def-ruby/workspace workspace setup

You can then create a directory that bundles all the resources needed to build that benchmark with:

benchpark mirror create `pwd`/workspace/def-raja-perf/def-ruby/workspace/ test-benchpark-mirror/

You can copy test-bencpark-mirror/ to another system, and on that system, within that directory you can do:

python3 -m venv mirror-env && . mirror-env/bin/activate
pip install --no-index --find-links=pip-cache pip-cache/*
bash first-time.sh
. `pwd`/setup.sh
ramble --workspace-dir `pwd`/def-raja-perf/def-ruby/workspace/ workspace setup

this will install the benchmark on the new system, and also configure Ramble to use mirror resources that were bundled in test-benchmark-mirror/ (so it does not need internet access to build the benchmark).

Limitations

For now, benchpark can only create mirrors that are useful for destination systems that match the host system in terms of:

  • available compilers

  • provided external software

Also, benchpark mirror can only create mirrors for benchmarks that have been built on the source system.