Software on Aether

The module system

Aether uses lmod / environment modules for managing different library and compiler versions.

  • show most common available modules: module avail

  • show all available modules: module --show_hidden avail

  • show all currently loaded / active modules: module list

  • load the default version of a module: module load intel

  • load a specific version of a module: module load intel/2019a

An enhanced module system called lmod is used for enabling applications. Research software often has very specific needs, and it would be impossible to respect them all in every user’s environment.

A module load command enables a particular application in the environment, mainly by adding the application to your PATH variable. For example, to enable the netCDF4 library in order to have the ncdump tool available,

module load netCDF

Loading more complex modules can affect a number of environment variables including PYTHONPATH, LD_LIBRARY_PATH, PERL5LIB, etc. Modules may also load dependencies.

To determine what has been loaded in your environment, the module list command will print all loaded modules.

The module purge command will remove all currently loaded modules. This is particularly useful if you have to run incompatible software (e.g. python 2.x or python 3.x). The module unload command will remove a specific module.

Finding the modules that are appropriate for your needs can be done in a couple of different ways.

There are a number of command line options for module searching, including the module avail command for browsing the list of most commonly used applications and the module --show_hidden avail command for browsing the list of all applications.

Previous versions of the module system

Before Sep 2019, a different version of the module tree (i.e., different versions of installed software) was used on Aether. That module tree is still available at /home/eb/modules/_legacy. If you require the old module tree for any of your applications, you can enable it (in your current shell only) using the following commands:

module unuse /home/eb/modules/all
module unuse /home/eb/modules/conda
module unuse /home/eb/modules/LAMOS
module use /home/eb/modules/_legacy/all

Available compilers

Intel compiler

  • Version 19.0.1.144, including Intel MPI and MKL. All of these are included in the module intel/2019a. This is the recommended compiler for everything which doesn’t explicitly require a different compiler.

  • Version 16.0.1 (aka. 2016.1.150). Intel MPI (5.1.2.150) and MKL (11.3.1.150) are also available. All of these are included in the module intel/2016a.

GCC

  • GCC / gfortran, in version 8.2.0. These two, together with OpenMPI 3.1.3, OpenBLAS 0.3.5, ScaLAPACK 2.0.2 and FFTW 3.3.8 are included in the module foss/2019a

  • GCC / gfortran, in version 4.9.3. These two, together with OpenMPI 1.10.2, OpenBLAS 0.2.15, ScaLAPACK 2.0.2 and FFTW 3.3.4 are included in the module foss/2016a

Available software

Many scientific libraries / tools are already available, for example,

  • CDO

  • GDAL

  • GSL

  • HDF4

  • HDF5

  • Python / IPython (via the conda module)

  • NCO

  • Perl

  • R

  • Julia

  • netCDF

Tip

If there is anything you need, please don’t hesitate to contact lamos_it+aether@groups.uni-bremen.de. Our goal is to provide a module-based environment in which you don’t have to install any libraries in your own $HOME.

Compiling your own software

For compiling your own software, we strongly suggest you use the compiler toolchains mentioned above by using, e.g., module load intel/2019a.

Tip

You should always compile via SLURM, i.e., use srun make instead of simply make. This is because the compute nodes have different CPUs than the login nodes. Any automatic optimization by the compiler can therefore only work properly when the compilation happens on the compute nodes.