Skip to content

Using Modules

Some programs may have multiple versions on the HPC or require some setup prior to using them such as setting the PATH environment variable. The module package simplifies this for users.

For the full manual on the module package type man module.

List available Modules

Here we list the available modules:

$ module avail
----------------- /etc/modulefiles ----------------- 
cuda-11.3  cuda-11.4  cuda-11.5  cuda-11.8  cuda-12.1  cuda-12.4  cuda-12.5
cuda-latest java-1.8.0 java-17 java-20 matlab-2017b  openmpi-4.1.5  openmpi-latest

Depending on what groups your in there may be many more modules listed. For instance, if your in the C3 group you can add the line below to your .bash_profile file. You will need to logout and log back in again for the .bash_profile to be reloaded.

export MODULEPATH=/shared/c3/apps/modules:$MODULEPATH

If your in the Remote Sensing Group you can add this line:

export MODULEPATH=/shared/rsg/apps/modules/:$MODULEPATH

If the command module avail shows more than a screenful then press the space bar to continue.

Loading and Unloading Modules

If we wish to use CUDA 12.1 (i.e. specifically version 12.1) we would load that module. Below we can see how loading the module prepends the path to that CUDA version to our existing path:

$ echo $PATH
/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/shared/homes/mlake/bin

$ module load cuda-12.1

$ echo $PATH
/usr/local/cuda-12.1/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/shared/homes/mlake/bin

Now unload the module to return to our default environment:

$ module unload cuda-12.1
$ echo $PATH
/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/shared/homes/mlake/bin

You will also notice there is a cuda-latest module. That will always load the latest CUDA version, in this case cuda-12.5.

You can load multiple modules. A module will not load if there is an incompatability.

Other Module Commands

List the currrently loaded modules:

$ module list

Display information about a module:

$ module display modulefile  (e.g. module display cuda-12.1)

Color Output

If you want colored output from the module command you can add the --color option to the module command or set export MODULES_COLOR="always" in your .bash_profile file.

$ module display cuda-12.1 --color

What’s in a Module File?

You can have a look at what a module does as its a plain text file.

$ cat /etc/modulefiles/cuda-12.1
#%Module    1.0
#
# CUDA 12.1 module 
#

prepend-path    PATH            /usr/local/cuda-12.1/bin
prepend-path    MANPATH         /usr/local/cuda-12.1/doc/man
prepend-path    LD_LIBRARY_PATH /usr/local/cuda-12.1/lib64

References

Environment Modules https://modules.readthedocs.io/en/latest/