Using software on Legion

A partial list of applications available on the research computing platforms can be viewed on the Research Computing Platforms support pages.

Modules

Legion uses the modules environment system to manage packages.

A module configures your current login session or job to use a particular piece of software.

For example, this may involve altering your PATH and LD_LIBRARY_PATH environment variables to make the associated commands and/or libraries available at compile-time and/or run-time, without explicitly having to know the relevant paths.

A module can for instance be associated with a particular version of the Intel compiler, or particular MPI libraries, or applications software, etc.

The default environment has the most commonly required modules already loaded for your convenience.

You can see what modules are currently loaded by using the command module list.

The default module set is shown in the example below:

[<userid>@login06 ~]$ module list
Currently Loaded Modulefiles:
 1) gcc-libs/4.9.2                 8) screen/4.2.1                  15) tmux/2.2
 2) cmake/3.2.1                    9) gerun                         16) mrxvt/0.5.4
 3) flex/2.5.39                   10) nano/2.4.2                    17) userscripts/1.3.0
 4) git/2.10.2                    11) nedit/5.6-aug15               18) rcps-core/1.0.0
 5) apr/1.5.2                     12) dos2unix/7.3                  19) compilers/intel/2017/update1
 6) apr-util/1.5.4                13) giflib/5.1.1                  20) mpi/intel/2017/update1/intel
 7) subversion/1.8.13             14) emacs/24.5                    21) default-modules/2017

This output indicates that the Intel compilers are loaded, the Intel MPI environment, editor nedit and some other utilities.

In addition to those made available in your default environment, we provide a rich set of additional modules for your use.

These can be listed by typing:

module avail

You can load additional modules into your current session by using the command:

module load <module>

For example, to add the module for FFTW 2.1.5 for the Intel compilers, type:

module load fftw/2.1.5/intel-2015-update2

Typing module list will now show the above with the addition of the fftw module.

You can unload modules from your current session by using the command:

module unload <module>

For example, to remove the FFTW module, type:

module unload fftw/2.1.5/intel-2015-update2

One commonly required change is to switch from using the Intel compiler and associated libraries (which are provided in the default environment), to using the GCC compiler.

This would be achieved by typing the following commands:

module unload compilers

module unload mpi

module load compilers/gnu/4.9.2

module load mpi/intel/2015/update3/gnu-4.9.2

Note that the order in which you execute these commands is vital! You must always unload modules before loading their replacements.

Typing module list again will show the changes.

You can permanently change what modules are loaded by default in your environment by editing your ~/.bashrc file to add the appropriate module load and unload commands at the end.

When you first start using a new application, typing

module help <module>

(where <module> is the name of the application module) will provide you with additional Legion-specific instructions on how to use the application if any are necessary.

Prerequisites and Conflicts

Some modules depend on or conflict with other modules

Module 'a' depends on one of the module(s) 'b'
Module 'a' conflicts with the
currently loaded module(s) 'b'

These issues can be reduced through the use of Recommended Bundles

e.g. r/recommended loads a collection of other modules and then the R module.

A summary of useful commands relating to the use of modules:

module load <module>   loads a module
module unload <module>   unloads a module
module purge   unloads all modules
module list   shows currently loaded modules
module avail   shows available modules
module whatis   shows available modules with brief explanations
module show <module>   list the contents of the module file. Shows environment variables set-up by the module
module help <module>   shows helpful information about a module, including instructions on how to use the application