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 then source spack file if it exists
KERNEL=$(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 [[ "${KERNEL}" == *"2.6.3"* ]] ; then
if [ -f /softlib/apps/EL6/spack/share/spack/setup-env.sh ] ; then
. /softlib/apps/EL6/spack/share/spack/setup-env.sh
fi
fi
if [[ "${KERNEL}" == *"3.10"* ]] ; then
if [ -f /softlib/apps/EL7/spack/share/spack/setup-env.sh ] ; then
. /softlib/apps/EL7/spack/share/spack/setup-env.sh
fi
fi
fi |
...
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. |
...
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) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...