Table of Contents | ||
---|---|---|
|
...
Spack Introduction and Environment Setup
What is Spack?
Spack is a package manager, similar to yum
, apt-get
, or conda.
I
t allows for multiple package versions/configurations. Unlike the other package managers listed, Spack is specifically designed to be used on HPC resources with varying architectures.
The purpose of this documentation is to provide a practical guide to quickly enable you to take advantage of its use in your research.
...
Next, add the following code to your ~/.bashrc, which will automatically load Spack into your shell on all servers besides gateways:
Code Block | ||
---|---|---|
| ||
# detect kernel version, then source spack file if it exists _KERNEL_VERSION=$(uname -r | cut -d '.' -f1,2,3) if [[ "${HOSTNAME}" != "pascal.med.cornell.edu" ]] || [[ "${HOSTNAME}" != "aphrodite.med.cornell.edu" ]] || [[ "${HOSTNAME}" != "aristotle.med.cornell.edu" ]]; then if if [[ "${_KERNEL_VERSION}" == *"2.6.3"* ]] ; then if if [ -f /softlib/apps/EL6/spack/share/spack/setup-env.sh ] ; then . /softlib/apps/EL6/spack/share/spack/setup-env.sh fi fi if fi fi if [[ "${_KERNEL_VERSION}" == *"3.10"* ]] ; then if if [ -f /softlibsoftware/appsspack/EL7/spackcentos7/share/spack/setup-env.sh ] ; then . /softlibsoftware/appsspack/EL7/spackcentos7/share/spack/setup-env.sh fi fi fi | ||
Warning | ||
As always, after editing your ~/.
elif [ -f /software/spack/share/spack/setup-env.sh ] ; then
. /software/spack/share/spack/setup-env.sh
fi
fi
fi
builtin unset _KERNEL_VERSION |
Warning |
---|
As always, after editing your ~/.bashrc, execute the command |
...
However, from the output of the command spack find
clearly shows numerous packages that start with "py". To improve on Spack's native find command, add this to your ~/.bashrc:
Code Block |
---|
function spack_my_find () {
spack find | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | grep -E "${1}|-- linux" | sed 's/-- linux/\n-- linux/g'
} |
...
Warning |
---|
Note: Sometimes, you'll see multiple installations of the same package installed on the same OS, with the same compiler (e.g. relion@3.0_beta is listed 3 times in the above output). What this means is that this packages was installed for the same OS/compiler, but with different configuration options. This will be explained in the next section. |
...
TRUNCATED OUTPUT:
Code Block |
---|
==> 28316768 packages. abinit muster r-catools abyss mvapich2 r-cdcfluview accfft mxml r-cellranger ack mxnet r-cghflasso activeharmony nag r-checkmate adept-utils nalu r-checkpoint adios nalu-wind r-chemometrics adios2 namd r-chron adlbx nano r-circlize adol-c nanoflann r-class aegean nanopb r-classint albany nasm r-cli |
Currently, there are 2are 6,831 768 packages available! This number will also certainly increase after the writing of this documentation.
...
Warning |
---|
Before loading any Spack packages, it is helpful to know that Spack stores a list of loaded packages in the variable |
...
Code Block |
---|
spack load -r python@3.7.0^gcc@6.3.0 |
- The -r instructs Spack to load all modules that python@3.7.0 depends on. This is typically done automatically, but not currently done for perl, python, or R (this is because Spack does not build these packages with RPATH support--this may change in the future).
...
Code Block |
---|
echo $LOADEDMODULES | sed "s/:/\n/g" | sort |
Here, we can see that python@3.7.0 is indeed loaded, as are all packages that it depends on.
...
How to use a unload package
To avoid confusion, as well as conserve memory, you may wish to unload a Spack package (this is especially true in complex workflows). Doing so is very easy:
Code Block |
---|
spack unload python@3.7.0 |
Let's check and make sure we have really unloaded python@3.7.0:
Code Block |
---|
echo $LOADEDMODULES | sed "s/:/\n/g" | sort |
OUTPUT:
Related articles
Filter by label (Content by label) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...