Skip to content

Software environment

A rich user software environment is available on MeluXina and can be used through environment modules. It comprises:

  • tools for HPC, HPDA and AI application development

    • compilers & programming languages
    • common use libraries for math & data
    • tools for performance engineering
  • scientific computing applications, libraries and frameworks

    • general-purpose HPC, HPDA or AI
    • or domain-specific

The MeluXina User Software Environment (MUSE)

The EasyBuild system is used on MeluXina to deploy software stacks, with applications and libraries provided in several revisions: compiled with different compilers, MPI suites, accelerated and non-accelerated versions. EasyBuild automatically generated software modules that enables the use of the different application revisions, and dependencies on particular support libraries.

The naming scheme used for the modules follows the application/version schema, e.g. CP2K/8.2-foss-2021a-CUDA-11.3.1 which shows that the CP2K application is available in version 8.2 built with the foss toolchain in the 2021a release, and with CUDA support.

For a deeper overview on versioning and toolchains see the EasyBuild documentation specific to Common toolchains and Available toolchains.

We release a new software stack at least once a year. The software stacks can be either: Production (current), Maintained (previous, not updated with new tools/versions), Retired (not maintained and should not be used any more) or Staging (preproduction envioronment for testing purposes).

MUSE release Based on EasyBuild toolchain(s) Status Path
2021.3 2021a Production /apps/USE/easybuild/release/latest/modules/all
2021.2 2021b Staging /apps/USE/easybuild/staging/rolling/modules/all/

Using different MUSE releases

To load modules from a software release other than Production, you must module use ... with the appropriate path, e.g.: module use /apps/USE/easybuild/staging/2021.2/modules/all/

The following table lists highlighted HPC applications, libraries and support tools available in the latest release of the MeluXina User Software Environment.

Click on a package name to see examples of using it on MeluXina.

Software Category Available versions Has GPU accelerated version?
Clang Compiler 12.0.1-GCCcore-10.3.0
AOCC Compiler 3.1.0-GCCcore-10.3.0
GCC Compiler 10.3.0
NVHPC Compiler 21.9, 21.11
Intel (intel-compilers) Compiler 2021.2.0,
IFPGA (ifpga) Compiler 2021.2.1,
MCR Compiler R2021b
Python Programing language 2.7.18-GCCcore-10.3.0-bare,
R Programing language 4.1.0-foss-2021a-bare
Julia Programing language 1.6.2-linux-x86_64
Go Programing language 1.16.6
CUDA Programing language 11.3.1,
Rust Programing language 1.52.1-GCCcore-10.3.0 Yes
IntelMPI(impi) MPI 2021.2.0,
OpenMPI MPI 4.1.1-GCC-10.3.0
ParaStationMPI MPI 5.4.11-1-GCC-10.3.0-CUDA-11.3.1 Yes
HPCX MPI 2.9.0,
Kokkos Parallel Libraries 3.4.01-GCC-10.3.0
TBB(tbb) Parallel Libraries 2021.2.0-GCCcore-10.3.0,
Nsight-Systems Performance tools 2021.4.1
Nsight-Compute Performance tools 2021.2.2
Performance tools 2021.9.0
VTune Performance tools 2021.9.0
AMD-uProf Performance tools 3.4.502
itac Performance tools 2021.4.0
Advisor Performance tools 2021.4.0
Arm-Forge Performance tools 21.1-GCC-10.3.0,
PAPI Performance tools
GDB Performance tools 10.2-GCCcore-10.3.0
Valgrind Performance tools 3.17.0-gompi-2021a
Extrae Performance tools 3.8.3-gompi-2021a
Paraver Performance tools 4.9.2-foss-2021a
gperftools Performance tools 2.9-GCCcore-10.3.0
Score-P Performance tools 7.1-gompi-2021a,
Scalasca Performance tools 2.6-gompi-2021a,
extrap Performance tools 4.0.3-foss-2021a
Inspector Performance tools 2021.4.0
Boost Performance libraries 1.76.0-GCC-10.3.0
BLIS Numerical libraries 0.8.1-GCC-10.3.0,
imkl Numerical libraries 2021.2.0-gompi-2021a,
FFTW Numerical libraries 3.3.9-gompi-2021a,
OpenBLAS Numerical libraries 0.3.15-GCC-10.3.0
ScaLAPACK Numerical libraries 2.1.0-gompi-2021a-fb,
magma Numerical libraries 2.6.1-foss-2021a-CUDA-11.3.1
mpifileutils Numerical libraries 0.11-foss-2021a
NCO Numerical libraries 5.0.1-foss-2021a
CDO Numerical libraries 1.9.10-gompi-2021a
netCDF Numerical libraries 4.8.0-gompi-2021a
netCDF-C++ Numerical libraries 4.3.1-gompi-2021a
netCDF-Fortran Numerical libraries 4.5.3-gompi-2021a
HDF5 Numerical libraries 1.10.7-gompi-2021a,
Eigen Numerical libraries 3.3.9-GCCcore-10.3.0
ARPACK (arpack-ng) Numerical libraries 3.8.0-foss-2021a
PETSc Numerical libraries 3.15.4-foss-2021a
TensorFlow ML Framework 2.6.0-foss-2021a,
Keras ML Framework 2.6.0-foss-2021a,
PyTorch ML Framework 1.9.0-foss-2021a,
Horovod ML Framework 0.23.0-foss-2021a-CUDA-11.3.1-PyTorch-1.10.0,
cuDNN ML Framework,
Theano ML Framework 1.1.2-foss-2021a-PyMC,
Spark ML Framework 3.1.2-foss-2021a,
GDAL Visualization 3.3.0-foss-2021a
ParaView Visualization 5.9.1-foss-2021a-mpi
Blender Visualization 2.93.5-binary
NCview Visualization 2.1.8-gompi-2021a
Singularity-CE Containers 3.8.4
make Build tool 4.3-GCCcore-10.3.0
Autotools Build tool 20210128-GCCcore-10.3.0
CMake Build tool 3.20.1,
pkgconfig Build tool 1.5.4-GCCcore-10.3.0-python
Doxygen Build tool 1.9.1-GCCcore-10.3.0
git Version control 2.32.0-GCCcore-10.3.0-nodocs
Mercurial Version control 5.8-GCCcore-10.3.0
Subversion Version control 1.14.1-GCCcore-10.3.0
Emacs Editors 27.2-GCCcore-10.3.0
nano Editors 5.7-GCCcore-10.3.0
Vim Editors 8.2.3227-GCCcore-10.3.0
GROMACS Scientific Software 2019.6-foss-2021a,
CP2K Scientific Software 8.2-foss-2021a,
OpenFOAM Scientific Software 8-foss-2021a,
OpenFOAM-Extend Scientific Software 4.1-20201102-foss-2021a-Python-2.7.18
QuantumESPRESSO Scientific Software 6.7-foss-2021a
HOOMD-blue Scientific Software 2.9.7-foss-2021a
NWChem Scientific Software 7.0.2-foss-2021a
MDAnalysis Scientific Software 2.0.0-foss-2021a
freud-analysis Scientific Software 2.7.0-foss-2021a
Biopython Scientific Software 1.79-foss-2021a
OVITO Scientific Software 3.5.4-foss-2021a
VMD Scientific Software 1.9.4a51-foss-2021a,
PLUMED Scientific Software 2.6.3-foss-2021a,
DualSPHysics Scientific Software 5.0.175-GCC-10.3.0,
NAMD Scientific Software 2.14-foss-2021a-mpi
QMCPACK Scientific Software 3.11.0-foss-2021a
QUDA Scientific Software 1.1.0-foss-2021a-CUDA-11.3.1
scikit-learn Scientific Software 0.24.2-foss-2021a
ParMETIS Scientific Software 4.0.3-gompi-2021a
OSU-Micro-Benchmarks Micro-Benchmark 5.7.1-gompi-2021a,
NCCL Micro-Benchmark 2.10.3-GCCcore-10.3.0-CUDA-11.3.1
Spack Software deployment 0.16.3,
EasyBuild Software deployment 4.5.0,
ReFrame Testing Framework 3.8.2,

GPU Accelerated versions

Some tools are developed to take advantage of GPU-AI accelerators and are able to obtain significant speedups when ran on MeluXina GPU nodes. They are marked in the table above, and their corresponding software module can generally be identified by having CUDA in the name.

Requesting new software and features

You may request the installation of new applications or features through the Depending on a project's requirements, new software may be installed in the corresponding project directory or in the global software stack. All new tools are first deployed in the Staging area for testing.

Environment modules

The environment modules system simplifies the use of applications and supporting libraries that may come in different versions and revisions. The software modules provide a way to easily switch between e.g. multiple revisions of the same application, where one revision may provide a set of functionality not available in another revision.

The core command by which software modules can be listed, loaded (activated), and unloaded (deactivated) is module, followed by an appropriate command.

The modules work by setting specific environment variables needed for the respective software program when the software module corresponding to the application is loaded. Often, this is simply adding the program to the $PATH variable, but software containing libraries and headers will also set $LD_LIBRARY_PATH. Any other variable that the software may need can be set and so the contents of the modules can be fairly simple or complex.

There are several advantages to using software modules to set up your environment, especially on a supercomputer:

  • ease of use
  • ability to revert to your previous environment
  • ability to easily switch your environment to try different versions of a program
    • e.g. when single and double-precision versions of the program exist
    • e.g. when a program has been compiled with different features that cannot coexist in a single build of the program
    • e.g. when a program has been compiled with different compilers or MPI suites

Using modules

The module command is only available on compute nodes and not on the login nodes. The applications provided through the software modules system must be used only on compute nodes.

MeluXina uses the Lmod software modules system, the table below summarizes the most common module commands:

Module Command Description
module avail List/browse available modules
module list Show modules currently loaded (active)
module load module_name Load a specific module (may load additional modules as dependencies)
module unload module_name Unload a loaded module (does not unload modules activated as dependencies)
module swap module_name1 module_name2 Unload module_name1 and load module_name2
module purge Unload all loaded modules
module reset Reset loaded modules to system defaults
module show module_name Display the contents of a selected module
module spider List all modules and the short description of each
module spider package Display the description and various versions available of an application
module use path Add path to the MODULEPATH search path

Using environment modules

  • Finding applications: module avail

To lists all available (loadable) modules and module groups. With the information of these two commands:

module avail
    AOCC/3.0.0-GCCcore-10.2.0                GCC/10.2.0                                    ...
    Autoconf/2.69-GCCcore-10.2.0             GCCcore/10.2.0                                ...
    Automake/1.16.2-GCCcore-10.2.0           GDRCopy/2.1-GCCcore-10.2.0-CUDA-11.2.2        ...
    Autotools/20200321-GCCcore-10.2.0        GMP/6.2.0-GCCcore-10.2.0                      ...
    BLIS/0.8.1-GCCcore-10.2.0                Go/1.16.3                                     ...
    BLIS/3.0-GCCcore-10.2.0           (D)    HPCX/2.8.1                                    ...
    Bison/3.7.1-GCCcore-10.2.0               M4/1.4.18-GCCcore-10.2.0                      ...
    Bison/3.7.1                              M4/1.4.18                              (D)    ...
    Bison/3.7.4                       (D)    NVHPC/21.3                                    ...
    CMake/3.18.4-GCCcore-10.2.0              OSU-Micro-Benchmarks/5.7-gompic-2020b         ...
    CUDA/11.2.2-GCC-10.2.0                   OpenBLAS/0.3.12-GCC-10.2.0                    ...
    CUDAcore/11.2.2                          OpenMPI/4.0.5-GCC-10.2.0-with-orte            ...
    Check/0.15.2-GCCcore-10.2.0              OpenMPI/4.0.5-GCC-10.2.0                      ...
    DB/18.1.40-GCCcore-10.2.0                OpenMPI/4.0.5-gcccuda-2020b            (D)    ...
    FFTW/3.3.8-gompi-2020b                   PMIx/3.2.3-GCCcore-10.2.0                     ...
    FFTW/3.3.8-gompic-2020b           (D)
  • Listing loaded application profiles: module list

To get a list of all currently loaded modules:

module list
  • Loading or unloading application profiles: module load/unload

To load a specific module

module load <module_name>

Default version

In case of multiple software versions, one version will always be defined as the default version, and can be identified by its (D) mark in the module avail output. When loading a software module, if the version is not specified, the default is loaded (e.g. module load FFTW will activate FFTW/3.3.8-gompic-2020b if this is the default). Fully specifying the software module (name+version) should always be preferred to ensure that the correct version is being activated.

Unloading an environment module will undo the changes that module made to the environment, restoring any variables set to their previous values. To unload a specific module you can use the following:

module unload <module_name>
  • Unloading all profiles: module purge
module purge
  • Switching profiles: module switch

To swap a specific module for another one (especially useful to switch between different versions of the same program) use the following:

module switch <old_module_name> <new_module_name>