Skip to main content

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:

GroupDescription
applications & toolsHigh-Performance Computing programs (e.g., GROMACS, ...) and useful tools that can be used at any time (e.g. php, perl, ...)
compilersAvailable compiler suites for the system (e.g. intel, gcc, ...)
environmentModulefiles 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, ...)
librariesTypically 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:

  1. By name
  2. 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.