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.