Skip to content

Latest commit

 

History

History
34 lines (29 loc) · 7.05 KB

spack-externals.md

File metadata and controls

34 lines (29 loc) · 7.05 KB

Recommended External Packages for Spack

Spack provides ability to reuse software pre-installed on system via spack external packages to avoid reinstalling software already present on a system. You should consult output of spack concretize -f if you are in a Spack environment or spack spec <spec> for one of packages to see list of dependencies. We have compiled a list of Spack packages that should be external when building Spack stacks on NERSC systems. You may run spack external find <spec> to update your spack.yaml however we recommend you always confirm your Spack configuration with what's provided by system.

Spack Package Description
bash This is GNU Bourne Again Shell known as bash shell which is typically found in most linux systems. You can check supported shells by cat /etc/shells, you can check version of bash by running /usr/bin/bash --version. This package should not be installed as spack package
bzip2 /usr/bin/bzip2 should be available on system. You can run bzip2 --version to check version. You can check if rpm is available by running rpm -q --whatprovides $(which bzip2)
cpio The GNU cpio is program to manage archives of files, this program is available at /usr/bin/cpio. This package should not be installed via spack
cray-libsci cray-libsci is provided by Cray Programming Environment. You should should see available module by running module avail cray-libsci. The cray-libsci package is typically installed in /opt/cray/pe/libsci/. For instance a modulefile cray-libsci/21.08.1.2 should be external for package [email protected].
cray-mpich cray-mpich is MPI wrapper based on mpich provided by Cray. You can find cray-mpich modulefile, this is typically installed at /opt/cray/pe/mpich/ on cray machines. You should set this as external for packages that depend on MPI.
cuda cuda is typically provided on NERSC but not as a system library (/usr/bin/nvcc) but usually through modules. You can find this typically in modules such as module av cuda nvhcp nvidia cudatoolkit CUDA. You should run nvcc --version to check version. The nvhpc compiler provides typically providers three versions of cuda for instance cuda packages by [email protected] are located /opt/nvidia/hpc_sdk/Linux_x86_64/21.9/cuda on Perlmutter. If you want to set a [email protected] external then the path would be /opt/nvidia/hpc_sdk/Linux_x86_64/21.9/cuda/10.2/. Sometimes you may not want cuda as external especially when one needs to install from source or you have incompatible between compiler and cuda version. For reference please see nvhpc release notes. There is a more detailed breakdown of cuda compatibility requirement found at https://gist.github.com/ax3l/9489132. Please check the cuda driver via nvidia-smi for driver compatiblity.
coreutils This package is install on Linux OS which provides common utilities like cat, ls, echo and many other utilities. You can check if coreutils is installed and its version by running rpm -qi coreutils
diffutils This is the GNU diffutils package which providers /usr/bin/diff. This package should be external and will most likely get picked up when building a large software stack
findutils The findutils package providers find and xargs command which is provided by OS. This is typically located in /usr/bin/find and /usr/bin/xargs. Please check the version of the utility or check the rpm version by running rpm -qi findutils.
git git is typically provided on NERSC systems that can be found at /usr/bin/git. This should be an external, we don't need spack to install multiple versions of git that user will never need.
libfabric The libfabric package is provided by Cray which can be searched by running module av libfabric. This is typically installed at /opt/cray/libfabric/.
krb5 This is the Kerberos third party network authentication system, this package is generally installed on NERSC system. You can check the version of rpm by running rpm -qi krb5
m4 GNU m4 is Unix macro processor this is typically provided by the Operation system and located at /usr/bin/m4. The m4 spack package can be installed without any issues however there is no need for having multiple copies of m4 when doing software stack builds.
openssl OpenSSL is provided by Operating System, you can run rpm -q openssl to check if its installed. The program is located at /usr/bin/openssl and you can get version by running /usr/bin/openssl version. Please make sure the version matches the external spec you define i.e openssl@<version>
openssh openssh provides SSH program which is installed at /usr/bin/ssh. This should not be installed via spack which is typically found when installing packages like openmpi. You can check the version by running ssh -V or check the rpm metadata by running rpm -qi openssh
pdsh PDSH is parallel remote shell which is provided on NERSC system at /usr/bin/pdsh. You can check the version and set this as external. This package is a dependency for few packages including scr
readline This package is provided by OS and located at /usr/bin/readline. This should not be installed by spack
sed Sed is a Linux utility that performs operation on input text and modifies the output. It is used for pattern matching or word substitution. You can find this utility in /usr/bin/sed and it is typically installed as an rpm. This package should not be installed via spack
slurm slurm is the NERSC supported batch scheduler, this package should never be installed by spack which is true when you try installing MPI providers. Slurm is picked up as dependency when you set openmpi scheduler=slurm, mpich +slurm, or mvapich2 process_managers=slurm. You can check version of slurm by running /usr/bin/sinfo --version. Please review the output of spack concretize to ensure slurm doesn't get picked up as dependency for any other packages. You can run spack dependents slurm to see all packages that depend on slurm if you recognize a package then you should consider setting this as external.
tar The tar utility is provided by Operating system and located at /usr/bin/tar. You can check the version by running /usr/bin/tar --version and set this as external
tcsh Tcsh is a compatible C shell which is installed on NERSC system, you can find supported shell by running cat /etc/shells, to find version of tcsh you can run /usr/bin/tcsh --version.
unzip The unzip utility is provided by OS and located at /usr/bin/unzip.
util-linux-uuid This package provides essential Linux utilities that is installed by OS. This maps to util-linux package on SLES and you can find the version by running rpm -qi util-linux
zsh NERSC supports zsh and it is provided by system library located at /usr/bin/zsh. This package should not be installed by spack