Skip to content

Change spack workflow for end-user to simplify their experience #41

@atteggiani

Description

@atteggiani

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.

  1. Load a module to access the right spack executable

    module load access-spack
    
  2. (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]
    
  3. (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
    
  4. Build the executables (in any session)
    Proceed with the actual build of the executables.

    spack install ... 
    

I think overall this change would highly enhance the user experience and increase spack usability for ACCESS model builds, especially among the beginner users.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

Status

No status

Status

New Issues 🌅

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions