Ramble Mirrors
The ramble workspace setup command can take a long time (or fail)
to run when an application’s input files are large or internet access
to input file URLs is slow or restricted. Since the setup command runs
spack to install software, downloading source tarballs or zip files
could have similar problems.
Another reason one might want to set up mirrors would be to ensure reproducibility of results, since remote input and source files might change without warning.
As a means to work around these issues on the software installation side,
Spack provides the mirror command, documented
[here](https://spack.readthedocs.io/en/latest/mirrors.html).
Ramble provides a similar mirror command, in order to find workload input files
locally first instead of in their default locations.
The ramble mirror set of commands largely follow the same form as spack mirror commands
(add, list, set-url, remove, destroy), with the exception of mirror creation.
Since Ramble input mirrors are intended to be used by applications, and applications are used
via Ramble workspaces, Ramble input mirrors are created via the ramble workspace mirror
command, documented below. This command creates both the ramble input file mirror and the
spack source archive mirror, both of which are automatically restricted to mirror only those
input files and packages required for the ramble applications used in the workspace.
Once ramble input and spack software mirrors have been created, the user wishing to use those
will then run both spack mirror add SOFTWARE_MIRROR_URL and ramble mirror add INPUT_MIRROR_URL.
The spack mirror commands, as described in the above documentation,
are also documented via spack mirror -h. Likewise, short descriptions of
ramble mirror commands can be found via ramble mirror -h.
Creating Ramble Mirrors
In an activated named or anonymous workspace (specified via the ramble workspace -d argument), write
a configuration for any applications and application experiment workloads you want to create
a mirror for.
Then run the following command to create input file and software mirrors: .. code-block:: console
$ ramble workspace [-d WORKSPACE_DIR] mirror create -d MIRROR_PATH
Note that the -d MIRROR_PATH argument is not optional, even though ramble workspace mirror -h
indicates that it is an optional argument. The path must be located on the local
filesystem.
Mirror Structure
ramble workspace create creates ramble and spack mirrors with a structure
similar to the following, which uses a mirror of wrfv3 as an example:
$workspace
├── inputs
│ ├── _input-cache
│ │ └── archive
│ │ └── 19
│ │ └── 1919a0e0499057c1a570619d069817022bae95b17cf1a52bdaa174f8e8d11508.tar.bz2
│ └── wrfv3
│ ├── bench_12km.tar.bz2
│ └── bench_2.5km.tar.bz2
└── software
├── _source-cache
│ └── archive
│ ├── 1c
│ │ └── 1ce97f4fd09e440bdf00f67711b1c50439ac27595ea6796efbfb32e0b9a1f3e4
│ ├── 27
│ │ └── 27c7268f6c84b884d21e4afad0bab8554b06961cf4d6bfd7d0f5a457dcfdffb1
│ ├── a0
│ │ └── a04f5c425bedd262413ec88192a0f0896572cc38549de85ca120863c43df047a.tar.gz
│ └── c5
│ └── c5162c23a132b377132924f8f1545313861c6cee5a627e9ebbdcf7b7b9d5726f
└── wrf
├── 238a7d219b7c8e285db28fe4f0c96ebe5068d91c.patch?full_index=1-27c7268 -> ../_source-cache/archive/27/27c7268f6c84b884d21e4afad0bab8554b06961cf4d6bfd7d0f5a457dcfdffb1
├── 6502d5d9c15f5f9a652dec244cc12434af737c3c.patch?full_index=1-c5162c2 -> ../_source-cache/archive/c5/c5162c23a132b377132924f8f1545313861c6cee5a627e9ebbdcf7b7b9d5726f
├── 7c6fd575b7a8fe5715b07b38db160e606c302956.patch?full_index=1-1ce97f4 -> ../_source-cache/archive/1c/1ce97f4fd09e440bdf00f67711b1c50439ac27595ea6796efbfb32e0b9a1f3e4
└── wrf-3.9.1.1.tar.gz -> ../_source-cache/archive/a0/a04f5c425bedd262413ec88192a0f0896572cc38549de85ca120863c43df047a.tar.gz
- The various parts of this directory structure are defined as:
inputs/: Contains the Ramble input file mirrorsoftware: Contains the Spack software tarball/zipfile mirrorinput/_input-cache/archive: Contains files with names corresponding to the sha256 sums of the associated input filessoftware/_source-cache/archive: Contains files with names corresponding to the sha256 sums of the associated source tarballs and patch files.
You can run ramble workspace mirror -d MIRROR_PATH, using the same MIRROR_PATH, from several
different workspaces, in order to populate the local mirror with inputs and source files from
different applications. Alternatively, you can put multiple applications into the same workspace
configuration and create a multi-application mirror in a single run.
Once your mirrors are created locally, you can copy them to any fileserver close to the intended installation.
Using Created Mirrors
If you have copied the directories into, for example URLBASE, with
inputs and software subdirectories under URLBASE, you could use them as follows:
$ ramble mirror add --scope=[site,user] URLBASE/inputs
$ spack mirror add URLBASE/software