From previous discussions related to access-hive.org.au/#777.
Description
Currently, the spack workflow for an end-user, on Gadi, requires setting up spack.
For this, they are required to:
- Clone three repositories (
spack, spack-config, spack-packages)
- Create symlinks of the spack configurations
In addition, before they can build an executable, they will have to set configuration parameters (env variables and paths) by sourcing the spack-config/spack-enable.bash (this step is required for any new session).
All these steps add complexity, especially for a beginner user that might only want to re-build a model with a change in the source code of one component (e.g.: they developed a new convection scheme for the UM, they want to use a custom version of CABLE (embedded in UM), they have changed some physics in MOM, etc.).
Ideal workflow
The optimal spack build workflow on Gadi, for an end-user to produce a custom-build of an ACCESS-NRI-released model is listed below.
Note: These are the minimum steps required to build a model, but any user could customize their build in a more "advanced" way if they want to (for example create custom environments, custom spack-packages, etc.).
Also, each step is representative of what happens from the end-user point of view, and might not exactly reflect all that happens under the hood.
-
Load a module to access the right spack executable
-
(ONLY IF NEEDED) Run a command that configures spack with custom configuration (one-off step)
spack-config [--dir <path-to-releases-parent-dir] [--any-other-important-flag]
-
(ONLY IF NEEDED) Load a pre-configured environment for ACCESS-NRI-released models, depending on the model they want to build.
spack env load access-esm1.5
-
Build the executables (in any session)
Proceed with the actual build of the executables.
I think overall this change would highly enhance the user experience and increase spack usability for ACCESS model builds, especially among the beginner users.
From previous discussions related to access-hive.org.au/#777.
Description
Currently, the spack workflow for an end-user, on Gadi, requires setting up
spack.For this, they are required to:
spack,spack-config,spack-packages)In addition, before they can build an executable, they will have to set configuration parameters (env variables and paths) by sourcing the
spack-config/spack-enable.bash(this step is required for any new session).All these steps add complexity, especially for a beginner user that might only want to re-build a model with a change in the source code of one component (e.g.: they developed a new convection scheme for the UM, they want to use a custom version of CABLE (embedded in UM), they have changed some physics in MOM, etc.).
Ideal workflow
The optimal
spackbuild workflow on Gadi, for an end-user to produce a custom-build of an ACCESS-NRI-released model is listed below.Note: These are the minimum steps required to build a model, but any user could customize their build in a more "advanced" way if they want to (for example create custom environments, custom spack-packages, etc.).
Also, each step is representative of what happens from the end-user point of view, and might not exactly reflect all that happens under the hood.
Load a module to access the right
spackexecutable(ONLY IF NEEDED) Run a command that configures
spackwith custom configuration (one-off step)(ONLY IF NEEDED) Load a pre-configured environment for ACCESS-NRI-released models, depending on the model they want to build.
Build the executables (in any session)
Proceed with the actual build of the executables.
I think overall this change would highly enhance the user experience and increase
spackusability for ACCESS model builds, especially among the beginner users.