Contenus
afficher
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 disponiblesml ov
: liste plus concise de tous les modules disponiblesml list
: liste de tous les modules chargésml $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 environnementml spider $package1
: recherche d’une liste de modules qui peut être cachéeml help $package
: affichage d’une aide sur un moduleml 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)