We use cookies to ensure that we give you the best experience on our website. You can change your cookie settings at any time. Otherwise, we'll assume you're OK to continue.

Durham University

Advanced Research Computing


When you first login to Hamilton, only a small subset of software is immediately available. There is also a large quantity of additional programs that can be made accessed by interacting with the module command.

You will typically need to run a number of module load >modulename< commands before working. To save time, these can be added to scripts run automatically when you log in e.g. .bash_profile, or to your job script.

The module system allows us to add new programs, and new versions of programs, without disrupting people who may wish to continue using an old version, or a different program with similar commands.

The core commands to interact with the module system are:

  • module avail - show what software packages are available
  • module load <modulename> - make the specified software available
  • module list - show what modules you have loaded

Other useful commands:

  • module avail <name> - show the subset of available packages matching <name>
  • module show <modulename> - show what loading a module will do to your environment
  • module unload <modulename> - unload the specified module
  • module purge - unload all modules

There are large number of modules available on Hamilton and some explanation is needed on how they are named and how they relate to the software they provide.

There are two main formats of name:

  1. software/version

    e.g. python/3.6.8, which would provide version 3.6.8 of the Python programming language.

  2. software/build/version

    Like the first type, but with an additional build section indicating how the software was built. e.g. gsl/gcc/2.4 (where the build section indicates it was built with the GNU compiler) or hdf5/impi/intel/1.8.14 (where the build section indicates it was built using Intel MPI and the Intel compiler).

The second type of name typically results in several modules for the same software (but built in slightly different ways). This can be quite confusing, but is most useful for packages providing libraries to be used with the various compilers and MPIs installed on Hamilton. Please contact us if you need advice.

When loading or unloading a module, either its name and version can be used, e.g. module load python/3.6.8, or the version may be ommitted and you will load the default version, e.g. module load python. As the default version can be changed at any time, or may not be the most recent version available, we recommend that the full name/version of a module is always used to avoid confusion.

Example popular programming languages:

  • R - rstudio/1.1
  • Python - python/3.6.8
  • Julia - julia/1.4.1

Example popular compilers:

  • GNU GCC - gcc/9.3.0
  • Intel - intel/2019.5

Example compiler/MPI combinations:

  • OpenMPI - openmpi/gcc/3.1.3 (automatically loads gcc/8.2.0)
  • Intel MPI - intelmpi/intel/2018.2 and intel/2019.5

Example working set of compiler, MPI, HDF5 and NetCDF file format modules:

  • gcc/4.9.1 openmpi/gcc/2.1.1 hdf5/ompi/gcc/1.10.1 netcdf/ompi/gcc/