Skip to content

Software installation

Software is deployed on MeluXina using EasyBuild a software build and installation framework. It allows managing software on High Performance Computing (HPC) systems in an efficient way.

MeluXina User Software Environment (MUSE) production software stacks are released at least once per year. A staging (rolling) software stack exists allowing the testing of new tools before they become production ready.

You may also use EasyBuild to install your own (versions of) software.

Installing software using EasyBuild

Installing software on MeluXina can be done using two approaches using Slurm:

  1. Submitting a batch script.
  2. Creating an allocation, i.e., an interactive session.

In case an interactive session is used, it is recommended that you disable the parallel-launcher capabilities of Slurm. This can be done by using the --mpi=none switch, when salloc is invoked:

salloc -A COMPUTE_ACCOUNT -p cpu --qos default -N 1 -t 2-0:00:0 srun --mpi=none --pty bash -l

Please note that if you don't disable MPI at job allocation time, Slurm and its plugins could inject environment variables that may have negative effects on Easybuild or software it builds.

Within MUSE, we are using the EasyBuildMNS module naming scheme that consists of <package-name>/<package-version>-<toolchain>. For example: OpenFOAM/8-foss-2021a. A toolchain typically consists of compilers (for C/C++/Fortran), MPI implementation, numerical libraries (e.g. BLAS) library and FFTW library.

The tools available in the current production software stack can be listed using module available (or module av in short). The main toolchains we deploy are foss and intel.

EasyBuild itself is available as a module and can be loaded with:

module load EasyBuild

Configuring EasyBuild

Before starting, you should configure EasyBuild. It can be done in different ways:

  • through one or more configuration files;
export XDG_CONFIG_HOME=/project/home/<projectid>/install/
mkdir -p $XDG_CONFIG_HOME/easybuild.d
eb --confighelp > $XDG_CONFIG_HOME/easybuild.d/config.cfg
vim $XDG_CONFIG_HOME/easybuild.d/config.cfg
  • via $EASYBUILD_* environment variables;
export EASYBUILD_PREFIX=/project/home/<projectid>/install
export EASYBUILD_BUILDPATH=/dev/shm
export EASYBUILD_SOURCEPATH=/project/home/<projectid>/sources
  • using eb command options
eb --prefix /project/home/<projectid>/install ...
eb --installpath /project/home/<projectid>/install

Inspecting the current configuration

$ eb --show-config
#
# Current EasyBuild configuration
# (C: command line argument, D: default value, E: environment variable, F: configuration file)
#
buildpath      (C) = /project/home/<projectid>/install/build
containerpath  (C) = /project/home/<projectid>/install/containers
installpath    (C) = /project/home/<projectid>/install
packagepath    (C) = /project/home/<projectid>/install/packages
prefix         (C) = /project/home/<projectid>/install
repositorypath (C) = /project/home/<projectid>/install/ebfiles_repo
robot-paths    (D) = /project/home/<projectid>/stack/easybuild-easyconfigs/easybuild/easyconfigs, /home/apps/USE/easybuild/release/latest/software/EasyBuild/4.5.2/easybuild/easyconfigs
sourcepath     (C) = /apps/sources
$ eb --show-default-configfiles
Default list of configuration files:

[with $XDG_CONFIG_HOME: /project/home/<projectid>/install, $XDG_CONFIG_DIRS: (not set)]

* user-level: ${XDG_CONFIG_HOME:-/project/home/<projectid>/.config}/easybuild/config.cfg
  -> /project/home/<projectid>/install/easybuild/config.cfg => not found
* system-level: ${XDG_CONFIG_DIRS:-/etc}/easybuild.d/*.cfg
  -> {/etc}/easybuild.d/*.cfg => (no matches)

Default list of existing configuration files (0): (none)

Installing a new package

Deploying the well known Quantum ESPRESSO software is exemplified below.

  • Searching for existing package:
eb -S '^QuantumESPRESSO.*foss-2021a'
  • Inspecting the package definition:
eb --show-ec QuantumESPRESSO-6.7-foss-2021a.eb

At this point, the package definition (EasyConfig) can be updated to match your requirements and customized to take advantage of MeluXina-specific MPI suites and existing libraries.

  • Testing with a dry run:
eb -D QuantumESPRESSO-6.7-foss-2021a.eb
  • Listing any missing dependencies:
eb -M QuantumESPRESSO-6.7-foss-2021a.eb

Dependencies may also need to be updated, in particular to link with existing MeluXina tools.

  • Inspecting install procedures:
eb -x QuantumESPRESSO-6.7-foss-2021a.eb
  • Installing the package and its dependencies:
eb QuantumESPRESSO-6.7-foss-2021a.eb --robot
  • Using the newly installed software:
module use /project/home/<projectid>/install/modules/all
module load QuantumESPRESSO/6.7-foss-2021a

Good practices

  • Installation path: You may get better performance out of your software when deployed in your Tier1/SCRATCH project directory, if it is part of your project allocation.

  • Software stack: When a software package you need is available in our software stack, we recommend its use vs the use of pre-compiled tools or software built using conda/other package managers, as they may not benefit from the proper system integration or optimizations. This can lead to packages not working properly or not providing the expected performance.