Software Environment
Software Environment
Section titled “Software Environment”Software on UBELIX can be accessed through modules. With the help of the module
command, you will be able to load and unload the desired compilers, tools and
libraries.
Software modules allow you to control which software and versions are available in your environment. Modules contain the necessary information to allow you to run a particular application or provide you access to a particular library so that
- different versions of a software package can be provided.
- you can easily switch to different versions without having to explicitly specify different paths.
- you don’t have to deal with dependent modules, they are loaded at the same time as the software.
The module command
Section titled “The module command”Modules are managed by the module command:
$ module <sub-command> <module-name>where the sub-command indicates the operation you want to perform. The sub-command is followed by the name of the module on which you want to perform the operation.
| Sub-command | Description |
|---|---|
spider | Search for modules and display help |
keyword, key | Search for modules based on keywords |
avail, av | List available modules |
whatis | Display short information about modules |
help | Print the help message of a module |
list | List the currently modules loaded |
load, add | Load a module |
unload | Remove a module from your environment |
purge | Unload all modules from your environment |
show | Show the commands in the module’s definition file |
Finding modules
Section titled “Finding modules”Lmod is a hierarchical module system. It distinguishes between installed modules and available modules. Installed modules are all modules that are installed on the system. Available modules are all modules that can be loaded directly at that time without first loading other modules. The available modules are often only a subset of the installed modules. However, Lmod can tell you for each installed module what steps you must take to also make it available so that you can load it. Therefore, the commands for finding modules are so important.
Some modules may also provide multiple software packages or extensions. Lmod can also search for these.
module spider
Section titled “module spider”The basic command to search for software on UBELIX is module spider.
It has three levels, producing different outputs:
-
module spiderwithout further arguments will produce a list of all installed software and show some basic information about those packages. Some packages may have an(E)behind their name and will appear in blue (in the default color scheme) which means that they are part of a different package. The following levels ofmodule spiderwill then tell you how to find which module(s) to load.Note that
module spiderwill also search in packages that are hidden from being displayed. These packages can be loaded and used. However, we hide them either because they are not useful to regular users or because we think that they will rarely or never be directly loaded by a user and want to avoid overloading the module display. -
module spider <name of package>will search for the specific package. This can be the name of a module, but it will also search some other information that can be included in the modules. The search is case-insensitive, e.g.bash $ module spider netcdfwill show something along the lines of
------------------------------------------------------------------------------------------------------------------------------------netCDF:------------------------------------------------------------------------------------------------------------------------------------Description:NetCDF (network Common Data Form) is a set of software libraries and machine-independent data formats that support thecreation, access, and sharing of array-oriented scientific data.Versions:netCDF/4.8.0-gompi-2021anetCDF/4.9.0-gompi-2022anetCDF/4.9.2-gompi-2023anetCDF/4.9.2-iimpi-2023a------------------------------------------------------------------------------------------------------------------------------------For detailed information about a specific "netCDF" package (including how to load the modules) use the module's full name.(abbreviated output) so even though the capitalization of the name was wrong, it can tell us that there are multiple versions of the netCDF library. The
gompi-xxxxandiimpi-xxxxtell that the difference is the compiler that was used to install the library. This is important as it is risky to combine modules compiled with different compilers.In some cases, if there is no ambiguity,
module spiderwill already produce help about the package. -
module spider <module name>/<version>will show more help information about the package, including information on which other modules need to be loaded to be able to load the package, e.g.bash $ module spider git/2.41.0-GCCcore-12.3.0-nodocswill return
------------------------------------------------------------------------------------------------------------------------------------git: git/2.41.0-GCCcore-12.3.0-nodocs------------------------------------------------------------------------------------------------------------------------------------Description:Git is a free and open source distributed version control system designed to handle everything from small to very largeprojects with speed and efficiency.This module can be loaded directly: module load git/2.41.0-GCCcore-12.3.0-nodocsHelp:Description===========Git is a free and open source distributed version control system designedto handle everything from small to very large projects with speed and efficiency.More information================- Homepage: https://git-scm.com
module avail
Section titled “module avail”The module avail command is used to show only available modules, i.e., modules
that can be loaded directly without first loading other modules. It can be used
in two ways:
-
Without a further argument, it will show an often lengthy list of all available modules. Some modules will be marked with
(D)which means that they are the default module that would be loaded should you load the module using only its name. -
With the name of a module (or a part of the name), it will show all modules that match that (part of) a name:
bash $ module avail netcdfwill show something along the lines of
----------------------------------------------------- /software.9/modulefiles/data -----------------------------------------------------netCDF-C++4/4.3.1-gompi-2023a netCDF-Fortran/4.6.1-iimpi-2023a (D) netCDF/4.9.2-gompi-2023anetCDF-C++4/4.3.1-iimpi-2023a (D) netCDF/4.8.0-gompi-2021a netCDF/4.9.2-iimpi-2023a (D)netCDF-Fortran/4.6.1-gompi-2023a netCDF/4.9.0-gompi-2022aWhere:D: Default Module
Loading and unloading modules
Section titled “Loading and unloading modules”Loading and unloading modules in Lmod is very similar to other module systems. Also, note that only available modules can be loaded with the commands below. Some installed modules may only become available after first loading other modules as discussed above.
To load a module, use the module load command. For example, to load the
FFTW library, use:
$ module load FFTWThis command will load the default version of the module. If the software you loaded has dependencies, they will be loaded in your environment at the same time.
To load a specific version of the module, you need to specify it after the name of the module:
$ module load FFTW/3.3.10-GCC-12.3.0To unload a module from your environment, use the unload sub-command
followed by the name of the module you want to remove.
$ module unload FFTTWIn most cases multiple module load or module unload commands can be combined
in a single module load or module unload command.
You can also remove all loaded modules from your environment by using the
purge sub-command.
$ module purgeListing loaded modules
Section titled “Listing loaded modules”You can list currently loaded modules using
$ module listWorkspace modules
Section titled “Workspace modules”Workspace modules provide support for user-friendly file system access and custom software stacks in HPC Workspaces.
module load WorkspaceThe workspace module provides the following variables:
Variable | Function |
|---|---|
$WORKSPACE | full path to the Workspace. Thus, you can access the workspace using: cd $WORKSPACE |
$SCRATCH | full path to the Workspace SCRATCH directory. Thus you can access it using: cd $SCRATCH |
The Workspace module provides tools to install custom software within your Workspace. See our EasyBuild documentation for details on how to install software modules for all users of a Workspace. Workspace software modules can be accessed by loading the Workspace module and the software product module.
The workspace module will also modify the following environment variables:
Variable | Function |
|---|---|
$APPTAINER_BINDPATH | using singularity, the Workspace directory will be bind into the container without manual specification. The WORKSPACE variable as well as the SCRATCH variable will also be ported into the container. Thus, you can specify locations with $WORKSPACE or $SCRATCH within the container. |
$PYTHONPATH | if Python or Anaconda is loaded beforehand, it is set to: $WORKSPACE/PyPackages/lib/pythonXXX/site-packages where XXX is the Python major and minor version. And also add the bin directory to $PATH. |
$PYTHONPACKAGEPATH | if Python or Anaconda is loaded beforehand, it is set to: $WORKSPACE/PyPackages. This can be used for e.g. pip install --prefix $PYTHONPACKAGEPATH |
$CONDA_ENVS_PATH | used to create conda environments shared within the Workspace |
$R_LIBS | used to install additional R packages in the shared Workspace. The directory need to be created first. See R page |
Toolchains
Section titled “Toolchains”A toolchain is a set of modules all building on top of each other. Toolchains are provided in different versions and updated typically once a year. The UBELIX team will only support the three most recent toolchain versions available.
The two main toolchains foss and intel are subdivided into sub-toolchains that belong to the same family.
| Toolchain | packages |
|---|---|
| foss | GCC, OpenMPI, OpenBLAS, FFTW, ScaLAPACK |
| intel | Intel compiler, (GCC required), MKL, Intel MPI |
| Family | Subtoolchains |
|---|---|
| foss | GCC, gompi |
| intel | iompi, iomkl |
Saving your environment
Section titled “Saving your environment”Sometimes, if you frequently use multiple modules together, it might be useful to save your environment as a module collection.
A collection can be created using save sub-command.
$ module save <collection-name>Your saved collections can be listed using the savelist sub-command.
$ module savelistOf course, the main interest of a collection is that you can load all the
modules it contains in one command. This is done using the restore
sub-command.
$ module restore <collection-name>More options to manage collections of modules can be found by running module help or in the Lmod User Manual.
Pre-installed software
Section titled “Pre-installed software”This a (incomplete) list of the pre-installed software available on UBELIX.
Toolchains / Compilers
Section titled “Toolchains / Compilers”| Name | Version(s) |
|---|---|
| foss | 2021a, 2021b, 2022a, 2022b, 2023a |
| intel | 2021a, 2021b, 2022a, 2022b, 2023a |
| PGI | 19.4 |
| NAGfor | 6.2.14 |
| NVHPC | 23.7 (CUDA/12.1.1) |
GPU Compiler / Tools
Section titled “GPU Compiler / Tools”| Name | Version(s) |
|---|---|
| CUDA | 11.8.0, 12.1.1, 12.2.0 |
| cuDNN | 8.7.0 (CUDA 11.8.0), 8.9.2 (CUDA 12.1.1 / 12.2.0) |
Ecosystems
Section titled “Ecosystems”| Name | Version(s) |
|---|---|
| Anaconda3 | 2023.09-0, 2024.02-1 |
| R | 4.2.1 |
| MATLAB | R2023b |
Scientific libraries
Section titled “Scientific libraries”| Name | Version(s) |
|---|---|
| GDAL | 3.7.1 |
| GEOS | 3.12.0 |
| GMP | 6.2.1 |
| GSL | 2.7 |
| HDF5 | 1.14.0 |
| netCDF | 4.9.2 |
| netCDF-C++4 | 4.3.1 |
| netCDF-Fortran | 4.6.1 |
Scientific software
Section titled “Scientific software”| Name | Version(s) |
|---|---|
| Bowtie2 | 2.4.4 |
| BLAST | 2.2.26 |
| canu | 2.2 |
| CDO | 2.1.1, 2.2.2 |
| Clustal-Omega | 1.2.4 |
| CP2K | 2023.1 |
| cutadapt | 3.4 |
| GROMACS | 2023.3 |
| MEGAHIT | 1.2.9 |
| Nextflow | 23.04.2 |
| NCO | 5.1.9 |
| ORCA | 5.0.3 |
| RAxML | 8.2.12 |
| RSEM | 1.3.3 |
| RSeQC | 4.0.0 |
| Subread | 2.0.3 |
| SMRT-Link | 13.1.0 |
| prokka | 1.14.5 |
Visualization
Section titled “Visualization”| Name | Version(s) |
|---|---|
| ncview | 2.1.8 |
| ParaView | 5.11.2 |