MareNostrum 5
Software environment
All pre-installed software on the cluster is located at /apps
. Don't hesitate to
contact us for additional software requirements;
we will gladly assist you with the installation process.
Modules (modulefiles)
The Environment Modules package (http://modules.sourceforge.net) enables the dynamic configuration of a user's environment through modulefiles. Each module file incorporates the basic settings to configure the shell for an application or compilation.
Modules can be loaded and unloaded seamlessly in various supported shells, including bash, ksh, zsh, sh, csh, tcsh, and scripting languages like Perl.
Pre-installed modulefiles are currently categorized into four groups:
Group | Description |
---|---|
applications & tools | High-Performance Computing programs (e.g., GROMACS, ...) and useful tools that can be used at any time (e.g. php, perl, ...) |
compilers | Available compiler suites for the system (e.g. intel, gcc, ...) |
environment | Modulefiles dedicated to preparing the environment, such as obtaining necessary variables for using openmpi to compile or run programs (e.g. Python, R, nvidia-hpc-sdk, ...) |
libraries | Typically loaded at compilation time, these modulefiles set the correct compiler and linker flags for libraries (e.g. FFTW, LAPACK, ...) |
Modules usage
There are two ways to invoke modules:
- By
name
- By
name/version
When invoked by name
alone, the default module version is loaded, typically the most recent stable and recommended
version or the only version available.
On the other hand, invoking by name/version
loads the specified version of the application. At present, both the following commands load the same module:
module load intel
module load intel/2023.2.0
You can execute module help
at any time to review the command's usage and options, or refer to the module(1)
manpage for more detailed information.
The commonly used commands for modules include the following:
Display all modules available for the user to load:
module avail
Load one or more modules:
module load {module1 module2 ... moduleN}
REMARK- It will set the necessary environment variables for the selected modules.
Display all loaded modules:
module list
Remove/unload all loaded modules:
module purge
Unload one or more modules:
module unload {module1 module2 ... moduleN}
REMARK- It will undo any environment modifications applied during the loading of the chosen modules.
Swap out a currently loaded module (module1) with another one (module2):
module switch {module1} {module2}
note- This can be handy, for instance, when testing multiple versions of the same software.
Default Modules
To improve your experience, a set of default modules is automatically loaded when you log into a cluster via SSH or connect using SCP or rsync. These modules provide a solid starting point for compiling your applications.
If you prefer to prevent these modules from being loaded during login or when connecting via SCP or rsync, you can disable this behavior by running the following command on any of the login nodes of the machine:
touch ${HOME}/.avoid_load_def_modules.${BSC_MACHINE}
This command creates a file in your home directory with the name .avoid_load_def_modules.mn5
. When you connect to a cluster, if this file is detected in your home directory, the default modules will not be loaded automatically.