Spack is a package management tool designed to support multiple versions and configurations of software on a wide variety of platforms and environments. It was designed for large supercomputing centers, where many users and application teams share common installations of software on clusters with exotic architectures, using libraries that do not have a standard ABI. Spack is non-destructive: installing a new version does not break existing installations, so many configurations can coexist on the same system.
Most importantly, Spack is simple. It offers a simple spec syntax so that users can specify versions and configuration options concisely. Spack is also simple for package authors: package files are written in pure Python, and specs allow package authors to maintain a single file for many different builds of the same package.
How can I built my own python software stack using SPACK
Download SPACK to your home directory (If using another directory, replace $HOME)
git clone https://github.com/spack/spack
cd ${HOME}/spack git checkout releases/v0.16 cp /share/Apps/usr/etc/spack/* ${HOME}/spack/etc/spack
Default target is x86_64. To build applications optimized for underlying cpu replace x86_64 on line 97 of packages.yaml with
- ivybridge for Ivybridge nodes i.e. debug partition (will run on all partitions)
- haswell for Haswell and Broadwell nodes i.e lts, im1080, eng, and engc partitions (will not run on debug partition)
- skylake_avx512 for Skylake and Cascade lake nodes only i.e. enge, im2080, health, chem, hawcpu, hawkgpu, hawkmem and infolab partitions
source ${HOME}/spack/share/spack/setup-env.sh
spack compiler add
spack find py-numpy
All python (r) packages have py- (r-) prefix
spack install py-jupyterlab
export MODULEPATH=${HOME}/spack/share/spack/modules/linux-centos8-x86_64:${MODULEPATH}
Visit SPACK Website for list of packages that can be built with SPACK.