Scripts and configuration files used by the Pawsey Supercomputing Research Centre to deploy Spack and to install the scientific software stack on its supercomputing systems.
Here is how to launch the software stack installation.
- Make sure the system you want to install the software stack on has a corresponding directory in
systems. If not, you can start by creating a copy of an existing one. - Edit the file
systems/<system>/settings.shas needed. - Set and export the
INSTALL_PREFIXvariable to the full path of the filesystem location where you want the installation to be placed in. Note that it has to end with the same string as the one stored in theDATE_TAGvariable, meaning that installations are versioned by installation date. - Set and export the
INSTALL_GROUPvariable to the linux group that is going to own the installed files. - Set and export the
SYSTEMvariable to the system you want to run the installation for, if it differs from the content of thePAWSEY_CLUSTERenvironment variable. - Run the
scripts/install_software_stack.shscript, preferably in a Slurm job or as a process detached from the login shell to prevent the installation from being aborted in case the SSH connection were to be interrupted unexpectedly.
You will need to ask the platforms team to apply root permissions to Singularity ss soon as it is installed. The script to run as root is found in the bin directory within the spack installation prefix.
The platforms team will need to install the $INSTALL_PREFIX/staff_modulefiles/pawseyenv/*lua module such that it will be loaded before the Cray compilers. They will also need to update user account creation process, following the updated $INSTALL_PREFIX/spack/bin/spack_create_user_moduletree.sh.
The repository is composed of the directories:
fixes/: patches implemented by Pawsey staff to be applied to Spack prior to production use. They are meant to improve usability of Spack for Pawsey-specific use cases.repo/: custom Spack package recipes for software not yet supported by Spack or that needed modification in the build process to work on Pawsey systems.shpc_registry/: custom Singularity-HPC (SHPC) recipes to deploy containers.scripts/: BASH scripts used to automate the deployment process.systems/<system>: a directory containing configuration files specific to a system. Scripts will use these files to customise the Spack deployment and installation of the software stack.
The scripts/install_software_stack.sh is the top-level script that executes the installation from start to finish except licensed software, that need some manual work. Refer to this script also as documentation of the installation process.
This project makes up a build system for the scientific software stack on Pawsey supercomputers. On a high level, there are two logical compontents to it: one to deploy Spack and SHPC (a software package to manage containers), and the other to use the tools mentioned before to install scientific software.
The deployment of Spack and SHPC is implemented through the following executables BASH scripts within the scripts directory:
install_spack.shinstalls Spack on the system and creates the directory structure for the system-wide software stack installation.install_python.shinstalls Python using Spack. To do so, and only in this case, Spack choosescray-pythonas interpreter. Once Python is installed for different architectures and versions,cray-pythonwon't be used anymore.install_shpc.shinstalls SHPC, a tool used to deploy containers.
The software stack deployment is implemented in these scripts instead:
concretize_environments.shruns the concretization step for all Spack environments to be installed.install_environments.shwill install all Spack environments using Spack.install_shpc_containers.shwill pull Pawsey-supported containers and install them using SHPC.post_installation_operations.shrefreshes Lmod modulefiles for the installed software, applies permissions to licensed software, and other operations needed after the full stack deployment executed by Spack.
This is where system specific configurations are placed. In particular, the following items must always be present.
configs/is a directory containingyamlconfiguraiton files for Spack. There are three types of configuration:site/: Spack configuration files that are valid for all users, which will sit in$spack/etc/spack.project/: Spack configuration files that are valid for project-wide installations executed by any user using the custom Spack commandspack project [...].spackuser/: Spack configuration files for system-wide installation, performed by Pawsey staff using thespacklinux user, allowing to override thesitesettings.
environments/: Spack environments to be deployed.templates/: modulefile templates for Spack.
- Spack (with compiler/arch tree)
- NOTE: if updating list, still need to manually update
templates/modules/modulefile.lua astro-applicationsbio-applicationsapplicationslibrariesprogramming-languagesutilitiesvisualisationpython-packagesbenchmarkingdeveloper-toolsdependencies
- NOTE: if updating list, still need to manually update
- Pawsey custom builds (with compiler/arch tree)
custom/modules
- Pawsey utilities (without compiler/arch tree: Spack, SHPC, utility scripts)
pawsey/modules
- SHPC containers modules (without compiler/arch tree)
containers/modules
Current modules.yaml and the template modulefile.lua rely on additional features of Spack found in the feature/improved-lmod-modules (https://github.com/PawseySC/spack/tree/feature/improved-lmod-modules).
The update provides extra tokens that can be used when creating the module name and also extra keywords to the template.
These features have now been packaged in a patch, that is applied by install_spack.sh.