Available Software on Fox
Software as Modules
Scientific software on Fox are installed as modules. Which means when a user logs in the software might not be loaded, although it is installed.
For example if a user wants to use the R software
[user@FOX]$ R --version
-bash: R: command not found
when this happens we need to see if it is installed first by using the
module avail
command. module aval without an argument would print all
the installed software, making it difficult to locate what we are
looking for. Therefore it is recommended to be more specific.
For example module avail R/4 prints all software modules with the string “R/4” in it's name
[user@FOX]$ module avail R/4
----------------- /cluster/modulefiles/all -------------------
MPFR/4.0.2-GCCcore-8.3.0 NSPR/4.21-GCCcore-8.3.0
MPFR/4.1.0-GCCcore-10.2.0 R/4.0.0-foss-2020a
MUMmer/4.0.0rc1-GCCcore-9.3.0
Another way to be more specific is to use module spider command
[user@FOX]$ module spider R
-----------------------------------------------------------
R:
-----------------------------------------------------------
Description:
R is a free software environment for statistical computing
and graphics.
Versions:
R/3.6.0-foss-2019a
R/3.6.2-foss-2019b
R/4.0.0-foss-2020a
After locating the module we need to load the module using the module load command. This will load the requested module and all of its dependencies.
[user@FOX]$ module load R/4.0.0-foss-2020a
[user@FOX]$ module list
Currently Loaded Modules:
1) GCCcore/9.3.0 34) LLVM/9.0.1-GCCcore-9.3.0
2) zlib/1.2.11-GCCcore-9.3.0 35) Mesa/20.0.2-GCCcore-9.3.0
3) binutils/2.34-GCCcore-9.3.0 36) libGLU/9.0.1-GCCcore-9.3.0
4) GCC/9.3.0 37) pixman/0.38.4-GCCcore-9.3.0
5) numactl/2.0.13-GCCcore-9.3.0 38) libffi/3.3-GCCcore-9.3.0
6) XZ/5.2.5-GCCcore-9.3.0 39) gettext/0.20.1-GCCcore-9.3.0
7) libxml2/2.9.10-GCCcore-9.3.0 40) PCRE/8.44-GCCcore-9.3.0
8) libpciaccess/0.16-GCCcore-9.3.0 41) GLib/2.64.1-GCCcore-9.3.0
9) hwloc/2.2.0-GCCcore-9.3.0 42) cairo/1.16.0-GCCcore-9.3.0
10) libevent/2.1.11-GCCcore-9.3.0 43) libreadline/8.0-GCCcore-9.3.0
11) UCX/1.8.0-GCCcore-9.3.0 44) Tcl/8.6.10-GCCcore-9.3.0
12) libfabric/1.11.0-GCCcore-9.3.0 45) SQLite/3.31.1-GCCcore-9.3.0
13) OpenMPI/4.0.3-GCC-9.3.0 46) PCRE2/10.34-GCCcore-9.3.0
14) OpenBLAS/0.3.9-GCC-9.3.0 47) NASM/2.14.02-GCCcore-9.3.0
15) gompi/2020a 48) libjpeg-turbo/2.0.4-GCCcore-9.3.0
16) FFTW/3.3.8-gompi-2020a 49) LibTIFF/4.1.0-GCCcore-9.3.0
17) ScaLAPACK/2.1.0-gompi-2020a 50) Tk/8.6.10-GCCcore-9.3.0
18) foss/2020a 51) cURL/7.69.1-GCCcore-9.3.0
19) bzip2/1.0.8-GCCcore-9.3.0 52) GMP/6.2.0-GCCcore-9.3.0
20) expat/2.2.9-GCCcore-9.3.0 53) NLopt/2.6.1-GCCcore-9.3.0
21) libpng/1.6.37-GCCcore-9.3.0 54) libsndfile/1.0.28-GCCcore-9.3.0
22) freetype/2.10.1-GCCcore-9.3.0 55) ICU/66.1-GCCcore-9.3.0
23) ncurses/6.2-GCCcore-9.3.0 56) Szip/2.1.1-GCCcore-9.3.0
24) util-linux/2.35-GCCcore-9.3.0 57) HDF5/1.10.6-gompi-2020a
25) fontconfig/2.13.92-GCCcore-9.3.0 58) UDUNITS/2.2.26-foss-2020a
26) xorg-macros/1.19.2-GCCcore-9.3.0 59) GSL/2.6-GCC-9.3.0
27) X11/20200222-GCCcore-9.3.0 60) Ghostscript/9.52-GCCcore-9.3.0
28) gzip/1.10-GCCcore-9.3.0 61) JasPer/2.0.14-GCCcore-9.3.0
29) lz4/1.9.2-GCCcore-9.3.0 62) LittleCMS/2.9-GCCcore-9.3.0
30) zstd/1.4.4-GCCcore-9.3.0 63) ImageMagick/7.0.10-1-GCCcore-9.3.0
31) libdrm/2.4.100-GCCcore-9.3.0 64) GLPK/4.65-GCCcore-9.3.0
32) libglvnd/1.2.0-GCCcore-9.3.0 65) Java/11.0.2
33) libunwind/1.3.1-GCCcore-9.3.0 66) R/4.0.0-foss-2020a
[user@FOX]$ R --version
R version 4.0.0 (2020-04-24) -- "Arbor Day"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
https://www.gnu.org/licenses/.
This setup has many advantages over making all software at once.
-
Reproducibility: User loads only the software they need explicitly, therefore making it easier to reproduce the environment by others, later on by the same user on Fox. It is also possible to communicate these requirements when the same environment is required on other system with similar setup, e.g. SAGA, Fram
-
Multiple versions of the software can coexist. We can provide multiple versions of Python for example and the user selects which version to use.
Load modules in a job
We need to load the software modules in the same way in job scripts as well. It is highly recommended to reset the module environment by using module purge command to avoid any modules being propagating to the job.
#SBATCH --account=MyProject
#SBATCH --job-name=MyJob
#SBATCH --time=1-0:0:0
#SBATCH --mem-per-cpu=3G
#SBATCH --ntasks=16
module purge
module load R/4.0.0-foss-2020a
Rscript myscript.R
More examples
Find available Python3 versions and load one of them
[user@FOX]$ module avail python/3
[user@FOX]$ module purge
[user@FOX]$ python3 --version
Python 3.6.8
In this case there is python 3.6.8 available system wide, but let's say we need to use Python 3.8.6
[user@FOX]$ module avail python/3
---------------------------------- /cluster/modulefiles/all -----------------------------------
protobuf-python/3.10.0-foss-2019b-Python-3.7.4 Python/3.7.4-GCCcore-8.3.0
protobuf-python/3.10.0-fosscuda-2019b-Python-3.7.4 Python/3.8.2-GCCcore-9.3.0
protobuf-python/3.14.0-GCCcore-10.2.0 Python/3.8.6-GCCcore-10.2.0
Python/3.7.2-GCCcore-8.2.0
Use "module spider" to find all possible modules and extensions.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the
"keys".
[user@FOX]$ module load Python/3.8.6-GCCcore-10.2.0
[user@FOX]$ python3 --version
Python 3.8.6
[user@FOX]$