Numerous compilers, libraries, and applications are installed on the ARCC clusters. Since each has its own set-up requirements, a system known as the "environment modules system" is used to manage much of the software packages.
Why:
The ARCC has many different versions of different software so that we can provide a broad range of software for our users. Unfortunately, this can also make it very complicated for the users. The way we address this issue is by providing modules for the users to load. This also allows us to add and remove modules as software gets added and removed, and provides the users with an easy-to-use mechanism for using all the various software.
What:
Before using a compiler, library, or application, be sure to load the appropriate module(s).
How:
Using modules is performed using a series of commands, which are shown below.
What Modules are Loaded
First, you can see which modules you already have loaded with: module list
By default it should show:
[username@euser2 ~]$ module list
No Modulefiles Currently Loaded.
However, you have one or more modules loaded, it will display which ones are loaded. For example, say we had loaded the module for gcc 4.9.2:
[username@euser2 ~]$ module list
1) gcc/gcc-4.9.2
What Modules are Available
In order to see which modules are available to load, use: module avail
This should output something similar to:
[username@euser2 ~]$ module avail
-------------------------------------------------------- /appmodules ---------------------------------------------------$
abaqus/abaqus libctl/libctl-3.2.2-gcc-4.9.2
arpack/arpack-96-mvapich2-2.0.1-gcc-4.9.2 libctl/libctl-3.2.2-ic-2013
arpack/arpack-96-mvapich2-2.0.1-ic-2013 libgeotiff/libgeotiff-1.4.0-gcc-4.9.2
arpack/arpack-96-mvapich2-2.0.1-ic-2015 libgeotiff/libgeotiff-1.4.0-ic-2013
arpack/arpack-96-openmpi-1.8.3-gcc-4.9.2 libgeotiff/libgeotiff-1.4.0-ic-2015
arpack/arpack-96-openmpi-1.8.3-ic-2013 libmatheval/libmatheval-1.1.11-gcc-4.9.2
arpack/arpack-96-openmpi-1.8.3-ic-2015 libmatheval/libmatheval-1.1.11-ic-2013
atlas/atlas-3.10.2-gcc-4.9.2 libmatheval/libmatheval-1.1.11-ic-2015
atlas/atlas-3.10.2-ic-2013 matlab/matlab-R2014a
atlas/atlas-3.10.2-ic-2015 moab/moab-7.2.9
...
If you'd like to know more about a particular module, you can use: module whatis full_module_name
For example, if you wanted to see more information about one of our Python modules:
[username@euser2 ~]$ module whatis python/python-2.7.8-gcc-4.9.2
python/python-2.7.8-gcc-4.9.2:
This module loads the environmental variables for Python 2.7.8 compiled with GCC 4.9.2
The module is also configured with the following Python Modules:
Numpy
Cython
Nose
Six
LibPNG
matplotlib
MDAnalysis
Pandas
Py2cairoPygobject
Sphinx
Theano
Mpi4Py
How to Load and Unload Modules
You can load a module with: module load full_module_name
Note: If you load a module that is dependent on other modules, it will load those dependencies as well.
[username@euser2 ~]$ module load python/python-2.7.8-gcc-4.9.2
[username@euser2 ~]$ module list
Currently Loaded Modulefiles:
1) gcc/gcc-4.9.2 2) openmpi/openmpi-1.8.3-gcc-4.9.2 3) python/python-2.7.8-gcc-4.9.2
Of course, you can also unload a module: module unload full_module_name
or unload all modules currently loaded with: module purge