Software that is most used on clusters is already pre-installed on the
CÉCI clusters: Fortran and C/C++ compilers, popular interpreters like
Python or R, numerical libraries such as BLAS and LAPACK, and message
passing libraries (e.g. OpenMPI). In addition, several versions of these
software are often installed.

If you are already familiar with an environment modules tool and you
are only interested in the list of software available in the CÉCI clusters, go
to the Software installed in the clusters section. Otherwise, please keep reading
to learn how to enable the software you want.

you will enable OpenMPI version 2.1.1 compiled with GCC version 6.4.0.
The naming convention for the available modules is always of the form
software/version-toolchain (more on the toolchain part below).

After doing this, when you run e.g. mpicc or mpirun without specifying
the full path, you will be running that specific version of OpenMPI compilers
or launch script.

Note

The moduleload command can be abbreviated as ml

Enabling or loading a given module actually sets a group of environment
variables such as $LD_LIBRARY_PATH, $CPATH, $PATH, ... to point
to the custom installation paths of the software.
You can verify how those variables change when loading/unloading a given
module. As we provide several versions of the same software and libraries,
each one of them must be installed in different custom locations. It’s
not possible to rely only on the standard unique location on Unix systems
at /usr/lib, /usr/include, /usr/bin, ... used for typical
installations with only a single version of each software.

Most of the software requires several dependencies to be built, for instance in
the example above we needed at least GCC v6.4.0. Loading the module will also
load all the required dependencies at build time. You can verifiy which were
the rest of dependencies pulled with

modulelist

If you want to reset the environment (unload all the modules) use the command

modulepurge

You will have to do so if you want to load another version of the software, or
test to compile your own software with different compiler and libraries
versions.

As the module tool is in charge of dynamically modifying your environment
variables, it is recommended to not modify the variables $LD_LIBRARY_PATH
and $CPATH in your .bashrc, unless you know precisely what you are
doing.
If you are told to so in the installation instructions of a software you need,
please contact us for support, that might save you a lot of time in some cases.

For advanced users, the exact behaviour of the module (setting PATHs,
enviroment variables, aliases, etc.) and which are its dependencies can be
discovered with the command

moduleshow

For instance:

[you@lemaitre3 ~]$ module show HDF5
------------------------------------------------------------------------------------------------------------------------
/opt/cecisw/arch/easybuild/2018b/modules/all/HDF5/1.10.2-intel-2018b.lua:
------------------------------------------------------------------------------------------------------------------------
help([[
Description
===========
HDF5 is a data model, library, and file format for storing and managing data.
It supports an unlimited variety of datatypes, and is designed for flexible
and efficient I/O and for high volume and complex data.
More information
================
- Homepage: https://portal.hdfgroup.org/display/support
]])
whatis("Description: HDF5 is a data model, library, and file format for storing and managing data.
It supports an unlimited variety of datatypes, and is designed for flexible
and efficient I/O and for high volume and complex data.")
whatis("Homepage: https://portal.hdfgroup.org/display/support")
conflict("HDF5")
load("intel/2018b")
load("zlib/1.2.11-GCCcore-7.3.0")
load("Szip/2.1.1-GCCcore-7.3.0")
prepend_path("CPATH","/opt/cecisw/arch/easybuild/2018b/software/HDF5/1.10.2-intel-2018b/include")
prepend_path("LD_LIBRARY_PATH","/opt/cecisw/arch/easybuild/2018b/software/HDF5/1.10.2-intel-2018b/lib")
prepend_path("LIBRARY_PATH","/opt/cecisw/arch/easybuild/2018b/software/HDF5/1.10.2-intel-2018b/lib")
prepend_path("PATH","/opt/cecisw/arch/easybuild/2018b/software/HDF5/1.10.2-intel-2018b/bin")
prepend_path("PKG_CONFIG_PATH","/opt/cecisw/arch/easybuild/2018b/software/HDF5/1.10.2-intel-2018b/lib/pkgconfig")
setenv("EBROOTHDF5","/opt/cecisw/arch/easybuild/2018b/software/HDF5/1.10.2-intel-2018b")
setenv("EBVERSIONHDF5","1.10.2")
setenv("EBDEVELHDF5","/opt/cecisw/arch/easybuild/2018b/software/HDF5/1.10.2-intel-2018b/easybuild/HDF5-1.10.2-intel-2018b-easybuild-devel")
setenv("HDF5_DIR","/opt/cecisw/arch/easybuild/2018b/software/HDF5/1.10.2-intel-2018b")

the details of the compiling options for a module can be found in the
installation log file. That log file can be found, once the module is loaded,
at the location

The modules for the available software are organised around the notion of
toolchains.
A toolchain is a collection of compiler and libraries that are often used
together and known to interoperate perfectly. For instance, the foss
(free open source software) toolchain comprises a bundle of

GCC (including gfortran and g++)

OpenMPI

OpenBLAS

ScaLAPACK

FFTW

Toolchains bundles are grouped per year of release and the modules to enable
them are named foss/YYYYx. A given toolchain release corresponds to a set
of specific versions of the elements on the toolchain. For instance the
foss/2017b toolchain contains GCC/6.4.0, OpenBLAS/0.2.20, OpenMPI/2.1.1,
ScaLAPACK/2.0.2 and FFTW/3.3.6.

In most of the CÉCI clusters are also provided some releases of the intel
toolchain, which comprises a bundle of

Intel compilers (icc, ifort, icpc)

Intel MPI

MKL

Note

For the pre-installed software we provide, which requires at least the
set of tools bundled in a toolchain, it’s followed the convention to add to
the module name for it a suffix -toolchain-YYYYx to identify the
toolchain used at build time (which becomes a dependency to run this
software).

Many extensions are installed by default for languages that are pre-installed on the clusters. First load the module corresponding to the version of the language that you want then run the corresponding following command.