Introduction

There are two ways to access the software on the cluster

Environment Modules

Modules provide a way for a dynamic modification of a user's environment via modulefiles. They are very useful in managing large number of applictions, especially when there are multiple versions and dependencies present.

Each modulefile contains information needed to set up your environment for the application In most cases will alter or define shell variables such as PATH, LD_LIBRARY_PATH, etc.

Listing available software

To find out what software is available on the cluster use

module avail

This should produce something similar to

[k1234567@login3(rosalind) ~]$ module avail
---  /opt/apps/etc/modules/prod  ---
  apps/gaussian/09E/avx
  apps/gaussian/09E/sse4
  apps/matlab/2019a *default*
  apps/namd/2.13/multicore
  apps/namd/2.13/multicore-cuda
  apps/openjdk/12.0.1
  apps/orca/4.2.0 *default*
  apps/plumed/2.5.1/openmpi/4.0.1/python/3.7.3
  apps/R/3.6.0
  apps/xtb/6.1.4 *default*

Use spacebar key to paginate through the list.

The *default* tag next to the module names indicates the version of the software that will be loaded if no explicit version has not been provided during the module load, e.g. module load apps/matlab.

Tip

To avoid surprises when the defaults change, we recommend using explicit version numbers when loading the modules.

In some cases the same version of the software might be offered with different build options, for example 1.70.0-gcc7.3.0-python3.7.3 will refer to the version 1.70.0, built using gcc 7.3.0 with python 3.7.3 support. Choose the version that is the most appropriate for your needs.

Loading modules

To set-up your environment for a specific software you need to load the relevant modulefile. The command should include the name of the application and the desired version

module load apps/matlab/2019a

If an application has dependencies such as libraries, compilers, etc, those will be automatically loaded for you.

Tip

We recommend that you always include relevant module load statements in your job scripts.

You can check which modules are currently enabled within your environment with

module list

This should result in a output like:

[k1234567@login3(rosalind) ~]$ module list
Currently Loaded Modulefiles:
  1) services/s3cmd   2) null

Unloading modules

You can remove any modules loaded within the current session using module unload or module rm command

module unload apps/matlab/2019a

Tip

You do not need to explicitly unload modules when your job, or session terminates. The changes made by the module files are temporary and will only last for the duration of the job/session.

If you want to remove all of the currently loaded modules, use

module purge

Warning

Purging might remove the utility modules loaded as part of your shell set-up/login process.

Finding out more about specific module

You can find out more about a particular module by running module what-is command:

[k1234567@login3(rosalind) ~]$ module whatis apps/matlab/2019a
apps/matlab/2019a    : loads the apps/matlab/2019a environment

        Name: matlab
        URL: https://www.mathworks.com/products/matlab.html
        Downloaded From: https://www.mathworks.com/products/matlab.html
        Install date: 25th June 2019

        Modulefile: /opt/apps/etc/modules/prod/apps/matlab/2019a
        Install path: /opt/apps/apps/matlab/2019a

        Matlab is a programming platform designed specifically for engineers and scientists.
        The heart of Matlab is the Matlab language, a matrix-based language allowing the most natural expression of computational mathematics.

Development environment

We provide dedicated area for modules designated for testing or experimental workloads. Those modules are not available by default and have to be enabled explicitly by loading the use.dev module:

module load utilities/use.dev

After the dev environment has been enabled, a new section will appear with the software that can be activated via the normal module load process:

[k1234567@login3(rosalind) ~]$ module load utilities/use.dev
[k1234567@login3(rosalind) ~]$ module avail
---  /opt/apps/etc/modules/dev  ---
  apps/samtools/1.9.0-singularity *default*
---  /opt/apps/etc/modules/prod  ---
  apps/gaussian/09E/avx
  apps/gaussian/09E/sse4
  apps/matlab/2019a *default*
  apps/namd/2.13/multicore
  apps/namd/2.13/multicore-cuda
  apps/openjdk/12.0.1
  apps/orca/4.2.0 *default*
  apps/plumed/2.5.1/openmpi/4.0.1/python/3.7.3
  apps/R/3.6.0
  apps/xtb/6.1.4 *default*
[k1234567@login3(rosalind) ~]$ module load apps/samtools/1.9.0-singularity

Warning

The modules contained within the dev section are for testing purposes and in general should not be used for production workloads.

Personal modules

In some circumstances, especially if you building your own software, you might benefit from your own environment that integrates with the modules ecosystem. You can enable it through the use of use.own module:

module load use.own

After it has been enabled, a new section will be appended to the list of module locations:

[k1234567@login3(rosalind) ~]$ module load use.own
[k1234567@login3(rosalind) ~]$ module avail
---  /opt/apps/etc/modules/prod  ---
  apps/gaussian/09E/avx
  apps/gaussian/09E/sse4
  apps/matlab/2019a *default*
  apps/namd/2.13/multicore
  apps/namd/2.13/multicore-cuda
  apps/openjdk/12.0.1
  apps/orca/4.2.0 *default*
  apps/plumed/2.5.1/openmpi/4.0.1/python/3.7.3
  apps/R/3.6.0
  apps/xtb/6.1.4 *default*
---  /users/k1234567/privatemodules  ---
  bar/1.0 *default*

Any module files placed in the $HOME/privatemodules directory will be available for loading via the module load call.

Info

Private modules enabled via this environment will only be accessible to your account.