Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Benchpark mirror #566

Open
pearce8 opened this issue Jan 24, 2025 · 1 comment
Open

Benchpark mirror #566

pearce8 opened this issue Jan 24, 2025 · 1 comment
Assignees
Labels
feature New feature or request
Milestone

Comments

@pearce8
Copy link
Collaborator

pearce8 commented Jan 24, 2025

Use case: Running Benchpark on a system that does not have free access to internet.

Leverage Spack mirror and Ramble mirror as appropriate.

Notes from Doug from December 2024:

@pearce8 pearce8 added the feature New feature or request label Jan 24, 2025
@pearce8 pearce8 added this to the Urgent v0.1.1 milestone Jan 24, 2025
@scheibelp
Copy link
Collaborator

scheibelp commented Jan 28, 2025

Assuming you've set up a Ramble workspace:

bin/benchpark system init --dest=rzvernal llnl-elcapitan rocm=5.5.1 compiler=cce +gtl lapack=intel-oneapi-mkl blas=intel-oneapi-mkl
bin/benchpark experiment init --dest ./gromacs-rocm gromacs +openmp+rocm~cuda gpu-aware-mpi=force
bin/benchpark setup gromacs-rocm rzvernal workspace/
. ./workspace/setup.sh
ramble --disable-progress-bar --workspace-dir ./workspace/gromacs-rocm/LlnlElcapitan-040fd89/workspace workspace setup

you can then create a mirror:

ramble --disable-progress-bar --workspace-dir ./workspace/gromacs-rocm/LlnlElcapitan-040fd89/workspace workspace mirror -d file://X

then

  • X/software is the mirror you add to spack: spack mirror add sources file://X/software
  • X/inputs is the ramble mirror you add for benchmark inputs: ramble mirror add file://X/inputs

given the above, you can use the following workflow to effectively mirror benchpark:

  1. Checkout benchpark
  2. Run benchpark setup + ramble workspace setup on all experiments you want to mirror
  3. Run ramble workspace mirror create
  • (this has to be run for each experiment/system pair)
  1. A benchpark mirror can then be created from the following:
    a. the ramble workspace mirror (from [3])
    b. the clones of Ramble and Spack from the benchpark workspace
    c. the benchpark repository
  2. On the other side:
  • Unpack everything, run the Ramble/Spack mirror add commands (described above)
  • To run benchpark, one would have to copy the Ramble/Spack repos into ~/.benchpark/

None of these steps require modifications to benchpark to work (i.e. someone could do this right now), but some could be streamlined, and some might run into potential issues

  • [2] doesn't just concretize the experiments, it also builds them
  • [3] we could loop over all the Ramble experiments (e.g. if there were a benchpark mirror create command)
  • [4b] could run into problems if the externals aren't the same; depending on the extent of mismatch, this could get progressively more challenging
    • Maybe all the same externals are available, but in different locations: we could add a script to rewrite the external prefixes automatically (given some mapping)
    • If not all the same externals are available, that could lead to different concretizations: users would have to manually update the source mirror (this wouldn't have to occur each time the experiments were moved, but is still a potential pain point)
  • Also regarding [4b], you probably don't want to copy the full benchpark workspace:
    • the concretized environments would refer to external prefixes that may not match (however, if they do match, you may want to copy over the full benchpark workspace)

See: https://ramble.readthedocs.io/en/latest/mirror-config.html#ramble-mirrors

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants