Environnement Module

Description

Les modules d’environnement offrent un moyen pratique de modifier dynamiquement l’environnement de l’utilisateur par le biais des fichiers de module. Cela inclut l’ajout ou la suppression facile de répertoires à la variable d’environnement PATH.

Liste de commandes

  • ml av : liste de tous les modules disponibles
  • ml ov : liste plus concise de tous les modules disponibles
  • ml list : liste de tous les modules chargés
  • ml $package ... : chargement de ou des modules donnés en argument $package
  • ml swap $package1 $package2 : échange rapide de version d’un module installé dans un environnement
  • ml spider $package1 : recherche d’une liste de modules qui peut être cachée
  • ml help $package : affichage d’une aide sur un module
  • ml whatis $package : affichage d’informations sur un module
  • Une liste plus exhaustive des commandes peut être trouvée ici .

Version

  • La version de module est 8.7.6
  • Basée sur Lua
$ ml --version

Modules based on Lua: Version 8.7.6  2022-06-25 15:58 -05:00
    by Robert McLay mclay@tacc.utexas.edu

Tutoriels

Commandes utiles

Un guide rapide (en anglais) des commandes module

ml avail

  • En raccourci, ml av .
  • Cette commande affiche tous les modules disponibles.
  • Vous souhaitez connaître tous les modules de la catégorie compiler
ml av compiler
  • Vous souhaitez connaître les modules julia
$ ml av julia

------------------------- /opt/ohpc/pub/modulefiles -------------------------------------
   compiler/julia/1.6.3    compiler/julia/1.7.2 (L)    compiler/julia/1.8.3 (D)

  Où:
   D:  Default Module
   L:  Le module est chargé

Utilisez "module spider" pour trouver tous les modules possibles.
Utilisez "module keyword key1 key2 ..." pour chercher tous les modules possibles qui correspondent à l'une des clés (key1, key2).

Une autre façon de faire (avec un pipe grep) :

$ ml av | grep julia
   compiler/julia/1.6.3                  libffi/3.4.4           (D)    paraver/4.10.4           utils/python/mamba
   compiler/julia/1.7.2           (L)    libs/tcl/8.6.13               pmix/4.2.1               valgrind/3.19.0
   compiler/julia/1.8.3           (D)    libs/tk/8.6.13                prun/2.2

Noter les lettres entre-parenthèses :

  • (L) signifie que ce module est chargé
  • (D) le module chargé par défaut si on ne précise pas de version.

ml overview

  • En raccourci, ml ov .
  • Cette commande affiche tous les modules disponibles en version plus concises.
$ ml ov julia
------------------------- /opt/ohpc/pub/modulefiles -------------------------------------
compiler/julia (3)
  • Les versions ne sont pas affichées.
  • Néanmoins, le nombre de versions est affiché entre-parenthèses.
  • A comparer avec la commande ml av julia

ml list

  • En raccourci, ml.
  • Affichage de tous les modules chargés.
$ ml list

Currently Loaded Modules:
1) gnu12/12.2.0 2) hwloc/2.7.0 3) ucx/1.11.2 4) libfabric/1.13.0 5) openmpi4/4.1.4 6) compiler/julia/1.7.2

ml load

  • En raccourci, ml $package .
  • Chargement d’un environnement afin d’avoir accès à des librairies, des exécutables.
  • Chargement du logiciel go
$ go version
-bash: go: command not found
$ ml compiler/go
$ go version
go version go1.20.1 linux/amd64
  • La commande inverse qui décharge un paquet est ml unload .
  • Déchargement du logiciel go
$ go version
go version go1.20.1 linux/amd64
$ ml unload compiler/go 
$ go version
-bash: go: command not found

ml swap

  • Echange rapide de version d’un module installé dans un environnement
  • Un utilisateur peut souhaiter passer d’un compilateur à un autre
$ gcc --version
gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-10)
...
$ ml compiler/gnu9
$ gcc --version
gcc (GCC) 9.4.0
$ ml swap compiler/gnu9 gnu12
$ gcc --version
gcc (GCC) 12.2.0
  • ml swap compiler/gnu9 gnu12 est équivalent à :
$ ml unload compiler/gnu9
$ ml gnu12
  • L’échange d’environnement peut réactiver ou désactiver des environnements.
$ ml list
Currently Loaded Modules:
  1) gnu12/12.2.0   2) hwloc/2.7.0   3) ucx/1.11.2   4) libfabric/1.13.0   5) openmpi4/4.1.4

$ ml swap openmpi4 mpich/3.4.3-ofi
$ ml list
Currently Loaded Modules:
  1) gnu12/12.2.0   2) libfabric/1.13.0   3) mpich/3.4.3-ofi
$ ml swap gnu12 compiler/gnu9
Modules inactifs:
  1) mpich/3.4.3-ofi

$ ml list
Currently Loaded Modules:
  1) compiler/gnu9/9.4.0   2) libfabric/1.13.0

Modules Inactifs:
  1) mpich/3.4.3-ofi

$ mpirun --version
-bash: mpirun: command not found
$ ml swap compiler/gnu9 gnu12

Chargement des modules :
  1) mpich/3.4.3-ofi

$ ml list
Currently Loaded Modules:
  1) libfabric/1.13.0   2) gnu12/12.2.0   3) mpich/3.4.3-ofi

$ mpirun --version
HYDRA build details:
    Version:                                 3.4.3
...
  • Cette commande est utile lorsqu’il s’agit de gros changements de versions ou de logiciels.
  • Par exemple, pour julia, pas besoin de faire un module swap
$ ml compiler/julia/1.6.3
$ julia --version
julia version 1.6.3
$ ml compiler/julia/1.8.3

Les modules suivants ont été rechargés avec un changement de version :
  1) compiler/julia/1.6.3 => compiler/julia/1.8.3

$ julia --version
julia version 1.8.3

ml spider

  • Recherche d’un module qui n’est pas forcément visible via la commande ml avail
  • Exemple avec python
$ ml spider python
-----------------------------------------------------------------------------------------
  compiler/python: compiler/python/3.11.0
-----------------------------------------------------------------------------------------
    Ce module peut être chargé directement : module load compiler/python/3.11.0
    Help:
      	modules - loads the modules software & application environment
      
      	This adds /opt/ohpc/pub/compiler/python/3.11.0/* to several of the
      	environment variables.
      
      	Version 3.11.0
      
-----------------------------------------------------------------------------------------
  utils/python: utils/python/mamba
-----------------------------------------------------------------------------------------

    Ce module peut être chargé directement : module load utils/python/mamba

    Help:
      	modules - loads the modules software & application environment
      
      	This adds /opt/ohpc/pub/utils/mamba/mamba/* to several of the
      	environment variables.
      
      	Version mamba
      
      	More information at :
      		https://mamba.readthedocs.io/en/latest/
  • Ces modules sont visibles avec la commande ml av. Mais il n’en est pas de même avec le logiciel R.
$ ml av R

----------------------------- /opt/ohpc/pub/moduledeps/gnu12 ----------------------------
   R/4.2.1    superlu/5.2.1

----------------------------- /opt/ohpc/pub/modulefiles ---------------------------------
   charliecloud/0.15                     compiler/gnu9/9.4.0     compiler/julia/1.8.3   (L,D)    paraver/4.10.4       utils/mpfr/4.2.0
   compiler/aocc/4.0.0.deprecated        compiler/julia/1.6.3    compiler/python/3.11.0          prun/2.2             valgrind/3.19.0
   compiler/aocc/4.0.0            (D)    compiler/julia/1.7.2    libfabric/1.13.0       (L)      singularity/3.7.1

  Où:
   D:  Default Module
   L:  Le module est chargé

Utilisez "module spider" pour trouver tous les modules possibles.
Utilisez "module keyword key1 key2 ..." pour chercher tous les modules possibles qui correspondent à l'une des clés (key1, key2).
  • Avec la commande ml spider, on voit qu’il y a la version 4.2.1.
$ ml spider R
-----------------------------------------------------------------------------------------
  R: R/4.2.1
-----------------------------------------------------------------------------------------
    Description:
      R is a language and environment for statistical computing and graphics (S-Plus like).

     Autres correspondances possibles :
        advisor, charliecloud, compiler, compiler-rt, compiler-rt32, compiler/aocc, compiler/gnu9, compiler/julia, compiler/python, compiler32, ...

    Vous devrez charger tous les modules de l'un des lignes suivantes avant de pouvoir charger le module "R/4.2.1".

      gnu12/12.2.0
 
    Help:
       
      This module loads the R package for statistical computing.
      Version 4.2.1  -----------------------------------------------------------------------------------------
  Pour trouver d'autres correspondances à votre recherche, exécutez :
      $ module -r spider '.*R.*'
  • En outre, la commande ml spider R nous montre comment charger ce module.
  • Il faut charger le module gnu12
$ ml R
Lmod a détecté l'erreur suivante : Ce ou ces module(s) existent, mais ne peuvent pas être chargés tel que
demandé: "R"
   Utilisez: "module spider R" pour voir la façon de les charger.
$ ml gnu12
$ ml av R
---------------------- /opt/ohpc/pub/moduledeps/gnu12 -----------------------------------
   R/4.2.1    superlu/5.2.1
...
$ ml R
$ R --version
R version 4.2.1 (2022-06-23) -- "Funny-Looking Kid"
...
  • La commande ml keyword vous permet aussi de chercher des modules
  • Mais cette commande est plus verbeuse.
$ ml keyword R
-----------------------------------------------------------------------------------------
The following modules match your search criteria: "R"
-----------------------------------------------------------------------------------------

  R: R/4.2.1
    R is a language and environment for statistical computing and graphics (S-Plus like).

  adios: adios/1.13.1
    The Adaptable IO System (ADIOS)

  advisor: advisor/latest
...

Affichage d’informations avec les commandes ml help et ml whatis

  • La commande ml help affiche une aide sur un module.
  • La commande ml whatis affiche des informations sur un module
  • Affichage de l’aide sur le module gnu12
$ ml help gnu12
-------------- Module Specific Help for "gnu12/12.2.0" ----------------------------------
This module loads the GNU compiler collection"

See the man pages for gcc, g++, and gfortran for detailed information
on available compiler options and command-line syntax.

Version 12.2.0
  • Affichage d’informations sur le module gnu12
$ ml whatis gnu12
gnu12/12.2.0        : Name: GNU Compiler Collection
gnu12/12.2.0        : Version: 12.2.0
gnu12/12.2.0        : Category: compiler, runtime support
gnu12/12.2.0        : Description: GNU Compiler Family (C/C++/Fortran for x86_64)
gnu12/12.2.0        : URL: http://gcc.gnu.org/

Chargement d’un logiciel

Le chargement d’un module se fait via l’une de ces commandes équivalentes :

  • module load $package
  • ml load $package
  • ml $package

Par exemple, le chargement de python3.

$ python3 --version
Python 3.6.8
$ python --version
Python 3.6.8
$ ml compiler/python/3.11.0 
$ python3 --version
Python 3.11.0
$ python --version
Python 3.6.8
  • On notera dans cet exemple que la commande python3 est bien surchargée.
  • Par contre, la commande python n’est pas redéfinie.
  • La commande python ne figure pas dans les binaires installés dans compiler/python/3.11.0
  • Pas besoin de module pour charger python 3.6.8
  • Le chargement du module compiler/python/3.11.0 est facultatif si la version 3.6.8 est suffisante.
  • Le chargement d’un module est souvent obligatoire. Par exemple, avec julia
$ julia --version
-bash: julia: command not found
$ ml compiler/julia
$ julia --version
julia version 1.8.3

Recherche d’un module

  • Cette procédure suppose d’avoir une idée du nom du module.
    • Par exemple, openmpi
    • Par contre, difficile de trouver une solution si on a que le nom de l’exécutable (Par exemple mpirun)
# La commande mpirun est disponible dans différents modules de slurm.
# Mais il est difficile de la trouver car elle est cachée dans un plus gros module.

# Voici une manière de trouver la commande mpirun en supposant utiliser la librairie openmpi.

# Cette stratégie est visible sur le site de MatriCS :
# https://www.matrics.u-picardie.fr/derniere-nouvelle-de-2022-test-des-nouveaux-noeuds-de-calcul-possible/

# Essai 1

[login02 ~]$ module load openmpi
Lmod a détecté l'erreur suivante : Le ou les module(s) suivants sont
inconnus: "openmpi"

Veuillez vérifier l'orthographe ou le numéro de version. Vous pouvez aussi
essayer "module spider ..."
Il est aussi possible que votre cache soit désuète. Essayez :
  $ module --ignore_cache load "openmpi"

[login02 ~]$ module spider openmpi

----------------------------------------------------------------------------
  openmpi4:
----------------------------------------------------------------------------
    Description:
      A powerful implementation of MPI/SHMEM

     Versions:
        openmpi4/4.1.1
        openmpi4/4.1.4

----------------------------------------------------------------------------
  Pour de l'information détaillée à propos d'un module "openmpi4" spécifique (incluant comment charger ce module), utilisez le nom complet.
  Par exemple :

     $ module spider openmpi4/4.1.4
----------------------------------------------------------------------------


# Essai 2

[login02 ~]$ module load openmpi4/4.1.4
Lmod a détecté l'erreur suivante : Ce ou ces module(s) existent, mais ne
peuvent pas être chargés tel que demandé: "openmpi4/4.1.4"
   Utilisez: "module spider openmpi4/4.1.4" pour voir la façon de les charger.

[login02 ~]$ module spider openmpi4/4.1.4

----------------------------------------------------------------------------
  openmpi4: openmpi4/4.1.4
----------------------------------------------------------------------------
    Description:
      A powerful implementation of MPI/SHMEM


    Vous devrez charger tous les modules de l'un des lignes suivantes avant de pouvoir charger le module "openmpi4/4.1.4".

      gnu12/12.2.0
 
    Help:
       
      This module loads the openmpi4 library built with the gnu12 toolchain.
      
      Version 4.1.4

# Essai 3

[login02 ~]$ module load gnu12
[login02 ~]$ module load openmpi4
[login02 ~]$ mpirun --version
mpirun (Open MPI) 4.1.4

Report bugs to http://www.open-mpi.org/community/help/
  • Ce qu’il faut retenir est l’utilisation de la nouvelle commande module spider (En raccourci, ml spider $package)
  • et de se laisser guider par module qui donne beaucoup d’indications et/ou propose des solutions.
  • Pour avoir accès à la commande mpirun (version openmpi), il faut faire :
$ module load gnu12
$ module load openmpi4

De même, la commande mpirun est disponible avec les modules suivants :

  • mvapich2
  • mpich
  • ou encore impi (version intel)

Documentation