ThaiSC

TARA User Guide

Modules and Local Modules

Modules management

The module is the framework, software or library on the high-performance computer (HPC). The module helps the user to use or work on the high-performance computer (HPC) efficiently, which is divided into 2 parts.

  • Environment module system (Lmod)
  • EasyBuild

Environment module system (Lmod)

The module management system is a central software system that allows easy and convenient module use and management. Users do not need to install software by themselves.

The module management system is divided into sub-topics as follows.

  • List all available module
  • View Description of module
  • List loaded module
  • Load a module
  • Unload all modules

List all available modules

Use module avail or ml av command to see a list of all the central modules

$ module avail
----------------------------------------------------------- /tarafs/utils/modules/modules/all ------------------------------------------------------------
   Autoconf/2.69-GCCcore-7.3.0               OpenMPI/3.1.1-GCC-7.3.0-2.30                      hwloc/1.11.10-GCCcore-7.3.0
   Autoconf/2.69-GCCcore-8.2.0      (D)      OpenMPI/3.1.3-GCC-8.2.0-2.31.1             (D)    hwloc/1.11.11-GCCcore-8.2.0                          (D)
   Automake/1.16.1-GCCcore-7.3.0             Python/2.7.15-foss-2018b                          icc/2019.1.144-GCC-8.2.0-2.31.1
   Automake/1.16.1-GCCcore-8.2.0    (D)      Python/3.6.6-foss-2018b                    (D)    iccifort/2019.1.144-GCC-8.2.0-2.31.1
   Autotools/20180311-GCCcore-7.3.0          SQLite/3.24.0-GCCcore-7.3.0                       ifort/2019.1.144-GCC-8.2.0-2.31.1
   Autotools/20180311-GCCcore-8.2.0 (D)      ScaLAPACK/2.0.2-gompi-2018b-OpenBLAS-0.3.1        iimpi/2019a
   Bison/3.0.4-GCCcore-7.3.0                 ScaLAPACK/2.0.2-gompi-2019a-OpenBLAS-0.3.5 (D)    imkl/2019.1.144-iimpi-2019a
   Bison/3.0.4                               Tcl/8.6.8-GCCcore-7.3.0                           impi/2018.4.274-iccifort-2019.1.144-GCC-8.2.0-2.31.1
   Bison/3.0.5-GCCcore-7.3.0                 XZ/5.2.4-GCCcore-7.3.0                            intel/2019a
   Bison/3.0.5-GCCcore-8.2.0                 XZ/5.2.4-GCCcore-8.2.0                     (D)    libffi/3.2.1-GCCcore-7.3.0
   Bison/3.0.5                      (D)      binutils/2.30-GCCcore-7.3.0                       libpciaccess/0.14-GCCcore-7.3.0
   CUDA/10.0.130                             binutils/2.30                                     libpciaccess/0.14-GCCcore-8.2.0                      (D)
   EasyBuild/3.8.1                           binutils/2.31.1-GCCcore-8.2.0              (L)    libreadline/7.0-GCCcore-7.3.0
   FFTW/3.3.8-gompi-2018b                    binutils/2.31.1                            (D)    libtool/2.4.6-GCCcore-7.3.0
   FFTW/3.3.8-gompi-2019a           (D)      bzip2/1.0.6-GCCcore-7.3.0                         libtool/2.4.6-GCCcore-8.2.0                          (D)
   GCC/7.3.0-2.30                            flex/2.6.4-GCCcore-7.3.0                          libxml2/2.9.8-GCCcore-7.3.0
   GCC/8.2.0-2.31.1                 (L,D)    flex/2.6.4-GCCcore-8.2.0                          libxml2/2.9.8-GCCcore-8.2.0                          (D)
   GCCcore/7.3.0                             flex/2.6.4                                 (D)    ncurses/6.0
   GCCcore/8.2.0                    (L,D)    foss/2018b                                        ncurses/6.1-GCCcore-7.3.0                            (D)
   GMP/6.1.2-GCCcore-7.3.0                   foss/2019a                                 (D)    numactl/2.0.11-GCCcore-7.3.0
   M4/1.4.17                                 gettext/0.19.8.1                                  numactl/2.0.12-GCCcore-8.2.0                         (D)
   M4/1.4.18-GCCcore-7.3.0                   gompi/2018b                                       xorg-macros/1.19.2-GCCcore-7.3.0
   M4/1.4.18-GCCcore-8.2.0                   gompi/2019a                                (D)    xorg-macros/1.19.2-GCCcore-8.2.0                     (D)
   M4/1.4.18                        (D)      help2man/1.47.4-GCCcore-7.3.0                     zlib/1.2.11-GCCcore-7.3.0
   OpenBLAS/0.3.1-GCC-7.3.0-2.30             help2man/1.47.4                                   zlib/1.2.11-GCCcore-8.2.0
   OpenBLAS/0.3.5-GCC-8.2.0-2.31.1  (D)      help2man/1.47.7-GCCcore-8.2.0              (D)    zlib/1.2.11                                          (D)

Note: (D) is the default version of the module that is loaded when the name is specified but the version is unspecified.

To search for target modules more easily, specify the module name. The following is an example of a search for the openmpi module.

 $ module avail openmpi

---------------------- /tarafs/utils/modules/modules/all -----------------------
   OpenMPI/3.1.1-GCC-7.3.0-2.30    OpenMPI/3.1.3-GCC-8.2.0-2.31.1 (D)

View Description of module

Use module spider or ml spider command to see the details of each module

$ module spider

-------------------------------------------------------------------------------------------------------------------------------------------------------------
The following is a list of the modules currently available:
-------------------------------------------------------------------------------------------------------------------------------------------------------------

  Autoconf: Autoconf/2.69-GCCcore-7.3.0, Autoconf/2.69-GCCcore-8.2.0
    Autoconf is an extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. These scripts can adapt the
    packages to many kinds of UNIX-like systems without manual user intervention. Autoconf creates a configuration script for a package from a template file that
    lists the operating system features that the package can use, in the form of M4 macro calls.

  Automake: Automake/1.16.1-GCCcore-7.3.0, Automake/1.16.1-GCCcore-8.2.0
    Automake: GNU Standards-compliant Makefile generator

  Autotools: Autotools/20180311-GCCcore-7.3.0, Autotools/20180311-GCCcore-8.2.0
    This bundle collect the standard GNU build tools: Autoconf, Automake and libtool

  Bison: Bison/3.0.4-GCCcore-7.3.0, Bison/3.0.4, Bison/3.0.5-GCCcore-7.3.0, Bison/3.0.5-GCCcore-8.2.0, Bison/3.0.5
    Bison is a general-purpose parser generator that converts an annotated context-free grammar into a deterministic LR or generalized LR (GLR) parser employing
    LALR(1) parser tables.

  CUDA: CUDA/10.0.130
    CUDA (formerly Compute Unified Device Architecture) is a parallel computing platform and programming model created by NVIDIA and implemented by the graphics
    processing units (GPUs) that they produce. CUDA gives developers access to the virtual instruction set and memory of the parallel computational elements in
    CUDA GPUs.

  EasyBuild: EasyBuild/3.8.1
    EasyBuild is a software build and installation framework written in Python that allows you to install software in a structured, repeatable and robust way.

  FFTW: FFTW/3.3.8-gompi-2018b, FFTW/3.3.8-gompi-2019a
    FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and
    complex data.

You can specify the module name with module spider command as well.

$ ml spider openmpi

------------------------------------------------------------------------------------------------------------------
  OpenMPI:
------------------------------------------------------------------------------------------------------------------
    Description:
      The Open MPI Project is an open source MPI-3 implementation.

     Versions:
        OpenMPI/3.1.1-GCC-7.3.0-2.30
        OpenMPI/3.1.3-GCC-8.2.0-2.31.1

------------------------------------------------------------------------------------------------------------------  For detailed information about a specific "OpenMPI" module (including how to load the modules) use the module's full name.
  For example:

$ module spider OpenMPI/3.1.3-GCC-8.2.0-2.31.1

List loaded module

Use module list or ml command to see the module that has been loaded

$ module list
No modules loaded

If the modules are loaded, the details are displayed like the following example.

$ module list

Currently Loaded Modules:
  1) GCCcore/8.2.0   2) binutils/2.31.1-GCCcore-8.2.0   3) GCC/8.2.0-2.31.1

Load a module

Use module load or ml command followed by the module name to load the desired module

$ module list
No modules loaded
$ module load GCC
$ module list

Currently Loaded Modules:
  1) GCCcore/8.2.0   2) binutils/2.31.1-GCCcore-8.2.0   3) GCC/8.2.0-2.31.1

Unload all modules

Use module purge or ml purge command to cancel all loaded modules

$ module list

Currently Loaded Modules:
  1) GCCcore/8.2.0   2) binutils/2.31.1-GCCcore-8.2.0   3) GCC/8.2.0-2.31.1

$ module purge
$ module list
No modules loaded

EasyBuild

EasyBuild is a software framework that helps to create local modules.

The commands used to make the local modules include.

$ mu                        # Use local module
$ module load EasyBuild     # Load easybuild
$ eb -S                     # Search for recipes for module
$ eb  -Dr                   # Dry-run to check before install
$ eb  -r                    # Install module

Example of making a local module (GCC module)

1. Use mu command to use the local modules

$ mu

2. Use module load Easybuild command to load the Easybuild program for creating the local module.

$ module load EasyBuild

3. Use eb -S <module> command to search recipes of software.

eb -S gcc

4. Use eb <module> -Dr command to test or check various settings.

eb GCC-8.2.0-2.31.1.eb -Dr

5. Use eb <module> -r command to install the desired module.

eb GCC-8.2.0-2.31.1.eb -r