Aller au contenu principal

Modules

Afin d'accéder aux compilateurs, librairies, logiciels ou environnements conda installés sur Jean Zay, il est nécessaire de charger les modules correspondants avec la commande module. La gestion des environnements de calcul sur Jean Zay est géré par l'outil Environment Modules.

La version de Environment Modules actuellement disponible sur Jean Zay est la version 4.3.1.

Si vous avez des difficultés à construire votre environnement de calcul sur Jean Zay avec la commande module ou si un produit vous manque, n'hésitez pas à contacter l'assistance à assist@idris.fr.

Attention

Les modules accessibles par défaut sont ceux des partitions CPU et V100. Pour accéder aux modules compatibles avec les partitions A100 (gpu_p5) ou H100 (gpu_p6), il est nécessaire de charger préalablement le module arch/a100 ou arch/h100 respectivement. Voir la section dédiée ci-dessous à ce sujet.

Fonctionnalités de la commande module

Affichage des produits installés

Pour afficher les produits installés sur Jean Zay, il faut utiliser la sous-commande avail.

$ module avail
------------------------------------- /lustre/fshomisc/sup/hpe/pub/module-rh/modulefiles -------------------------------------
arch/a100 intel-all/2019.2(19.0.2) intel-mkl/2018.1(18.0.1) intel-vtune/2019.6(19.0.5)
arch/h100 intel-all/2019.4(19.0.4) intel-mkl/2018.4(18.0.5) intel-vtune/2020.0
arm-forge/19.1.1 intel-all/2019.5(19.0.5) intel-mkl/2019.2(19.0.2) intel-vtune/2020.1
[...]

------------------- /lustre/fshomisc/sup/hpe/pub/modules-idris-env4/modulefiles/linux-rhel9-skylake_avx512 -------------------
abinit/7.0.5 metis/5.1.0-int64-real64 vasp/6.4.3-mpi-scpc
abinit/8.8.2-mpi miniforge/24.9.0 vasp/6.5.0-mpi-cuda
abinit/8.10.3-mpi miniforge/24.11.3 vesta/3.4.6
[...]

# Affichage non exhaustif, basé sur une sortie de la commande éditée en janvier 2026

Rechercher un produit particulier

Il est possible de rechercher un produit particulier en tapant : module avail <premières lettres du nom du produit>.
Par exemple pour afficher les produits commençant par cud :

$ module avail cud

------------------------------ /lustre/fshomisc/sup/hpe/pub/module-rh/modulefiles ------------------------------
cuda/9.2 cuda/10.1.1 cuda/10.2 cuda/11.7.1 cuda/12.0.0 cuda/12.2.0 cuda/12.6.3 cudnn/9.2-v7.5.1.10
cuda/10.0 cuda/10.1.2 cuda/11.2 cuda/11.8.0 cuda/12.1.0 cuda/12.4.1 cuda/12.8.0 cudnn/10.1-v7.5.1.10
[...]

# Affichage non exhaustif, basé sur une sortie de la commande éditée en janvier 2026

Vérifier quels sont les modules déjà chargés

La sous-commande list permet de vérifier quels sont les modules chargés à un moment donné dans votre environnement courant :

$ module list
Currently Loaded Modulefiles:
1) intel-compilers/19.0.4 4) intel-vtune/19.0.4 7) intel-itac/19.0.4
2) intel-mkl/19.0.4 5) intel-advisor/19.0.4 8) intel-all/19.0.4
3) intel-mpi/19.0.4 6) intel-tbb/19.0.4

Si aucun module n'est chargé le message suivant apparaît :

$ module list
No Modulefiles Currently Loaded.

Chargement d'un produit

Le chargement des produits se fait avec la sous-commande load suivie par :

  • soit le nom complet du module pour sélectionner une version précise du produit :
    module load intel-compilers/19.0.4
  • soit le début du nom du module qui sélectionne alors la version par défaut du produit :
    module load intel-compilers

La commande module load ne renvoie aucune information lorsqu'elle s'exécute sans problème. Il peut donc être nécessaire d'utiliser la commande module list pour savoir quelle version a été chargée.
Par contre, une erreur peut se produire et empêcher le chargement d'un module. Des messages d'erreur sont alors retournés, par exemple :

  • si le module à charger n'existe pas :
    $ module load intel-compilers-19/19.0.4
    ERROR: Unable to locate a modulefile for 'intel-compilers-19/19.0.4'
  • si un conflit existe entre le module à charger et un des modules déjà chargés (voir section sur la gestion automatique des dépendances ci-dessous) :
    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/19.0.5

    $ module load intel-compilers/19.0.4
    Loading intel-compilers/19.0.4
    ERROR: Conflicting intel-compilers is loaded

Chargement de plusieurs produits

Il est possible de charger plusieurs produits en une seule fois :

  • En les listant sur une même ligne de commande :

    module load intel-compilers/19.0.4 intel-mpi/19.0.4 intel-mkl/19.0.4
    attention

    L'ordre dans lequel les modules sont indiqués peut être important !

    Ainsi, la commande suivante ne donne pas le résultat escompté puisque les modules intel-compilers/18.0.5 et intel-mpi/18.0.5 ne sont finalement pas chargés à cause de conflits (voir section sur la gestion automatique des dépendances ci-dessous) :

    $ module load netcdf intel-compilers/18.0.5 intel-mpi/18.0.5
    Loading netcdf/4.7.2-mpi
    Loading requirement: intel-compilers/19.0.4 intel-mpi/19.0.4

    Loading intel-compilers/18.0.5
    ERROR: Conflicting intel-compilers is loaded

    Loading intel-mpi/18.0.5
    ERROR: Conflicting intel-mpi is loaded

    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/19.0.4 2) intel-mpi/19.0.4 3) netcdf/4.7.2-mpi

    Dans ce cas, il faut charger intel-compilers/18.0.5 et intel-mpi/18.0.5 avant netcdf pour avoir le résultat attendu :

    $ module load intel-compilers/18.0.5 intel-mpi/18.0.5 netcdf

    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/18.0.5 2) intel-mpi/18.0.5 3) netcdf/4.7.2-mpi
    BONNE PRATIQUE

    Il est recommandé de charger vos modules en respectant l'ordre suivant :
        1. Compilateurs
        2. Librairie MPI
        3. Autres librairies

    module load <compilateurs> <librairie MPI> <autres librairies>
  • Certains modules sont des raccourcis permettant de charger plusieurs modules en une seule opération. Par exemple :

    • Les modules intel-all/XX.Y.Z vont charger plusieurs modules définissant un environnement Intel complet pour une version XX.Y.Z choisie. Par exemple avec Intel 19.0.4 :
    $ module load intel-all/19.0.4
    Loading intel-all/19.0.4
    Loading requirement: intel-compilers/19.0.4 intel-mkl/19.0.4 intel-mpi/19.0.4
    intel-vtune/19.0.4 intel-advisor/19.0.4 intel-tbb/19.0.4 intel-itac/19.0.4

    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/19.0.4 4) intel-vtune/19.0.4 7) intel-itac/19.0.4
    2) intel-mkl/19.0.4 5) intel-advisor/19.0.4 8) intel-all/19.0.4
    3) intel-mpi/19.0.4 6) intel-tbb/19.0.4
    • Les environnements conda vont charger l'ensemble des librairies nécessaires au bon fonctionnement des différents paquets Python qu'il contient. Par exemple avec l'environnement construit autour de PyTorch 2.8.0 :
    $ module load pytorch-gpu/py3/2.8.0
    Loading pytorch-gpu/py3/2.8.0
    Loading requirement: gcc/11.4.1 cuda/12.8.0 nccl/2.27.3-1-cuda cudnn/9.10.2.21-12-cuda openmpi/4.1.8-cuda
    intel-oneapi-mkl/2023.1 magma/2.9.0-cuda sox/14.4.2 ffmpeg/6.1.1-cuda hdf5/1.12.0-mpi-cuda
    libjpeg-turbo/2.1.3 libpng/1.6.37 libwebp/1.2.2 graphviz/2.49.0

    $ module list
    Currently Loaded Modulefiles:
    1) gcc/11.4.1(11.3.1) 5) openmpi/4.1.8-cuda 9) ffmpeg/6.1.1-cuda 13) libwebp/1.2.2
    2) cuda/12.8.0 6) intel-oneapi-mkl/2023.1 10) hdf5/1.12.0-mpi-cuda 14) graphviz/2.49.0
    3) nccl/2.27.3-1-cuda 7) magma/2.9.0-cuda 11) libjpeg-turbo/2.1.3 15) pytorch-gpu/py3/2.8.0
    4) cudnn/9.10.2.21-12-cuda 8) sox/14.4.2 12) libpng/1.6.37

Déchargement d'un produit

Vous pouvez retirer un produit de votre environnement en utilisant la sous-commande unload; vous pouvez aussi supprimer tous les modules avec la sous-commande purge :

$ module list
Currently Loaded Modulefiles:
1) intel-compilers/19.0.4 2) intel-mpi/19.0.4 3) intel-mkl/19.0.4

$ module unload intel-mkl/19.0.4
$ module list
Currently Loaded Modulefiles:
1) intel-compilers/19.0.4 2) intel-mpi/19.0.4

$ module purge
$ module list
No Modulefiles Currently Loaded.

S'il s'effectue sans problème, le déchargement d'un produit ne renvoie aucune information.

Changement de version d'un produit

Lorsque vous souhaitez changer la version d'un produit déjà chargé, vous pouvez utiliser la sous-commande switch :

$ module list
Currently Loaded Modulefiles:
1) intel-compilers/19.0.4 2) intel-mpi/18.0.5
$ module switch intel-mpi/19.0.4
$ module list
Currently Loaded Modulefiles:
1) intel-compilers/19.0.4 2) intel-mpi/19.0.4

Là encore, si tout se passe bien la commande ne renvoie aucun message.

Remarques générales

Gestion automatique des dépendances

La fonctionnalité de gestion automatique des dépendances entre les modules, introduite dans l'Environment Modules v4, est utilisée à l'IDRIS afin de garantir la cohérence de l'environnement chargé.

Ceci signifie que la commande module s'assure que les prérequis en matière de compilateurs et de bibliothèque MPI sont bien satisfaits à chaque chargement d'un module :

  • Lorsqu'un module est chargé dans un environnement vierge (sans aucun compilateur ni bibliothèque MPI déjà sélectionnés), un environnement par défaut est chargé si nécessaire (sélection du compilateur et/ou de la bibliothèque MPI).
    Par exemple, la bibliothèque NetCDF est disponible pour 2 environnements Intel (18.0.5 et 19.0.4); par défaut, c'est l'environnement Intel 19.0.4 qui est chargé :

    $ module purge
    $ module load netcdf
    Loading netcdf/4.7.2-mpi
    Loading requirement: intel-compilers/19.0.4 intel-mpi/19.0.4
    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/19.0.4 2) intel-mpi/19.0.4 3) netcdf/4.7.2-mpi
    $ which ncdump
    /.../netcdf/4.7.2/intel-19.0.4-cqo7jj3yxaprhm23gr2tfq2f4epw7k3r/bin/ncdump
  • Lorsqu'on charge un module dans un environnement déjà contraint par le chargement antérieur d'un compilateur (et éventuellement d'une bibliothèque MPI), l'installation du produit effectuée avec ce même compilateur (et respectivement de la même bibliothèque MPI) est automatiquement sélectionnée.
    Prenons, par exemple, la bibliothèque NetCDF disponible pour les environnements Intel 18.0.5 et 19.0.4, on peut vérifier ce comportement de la commande module en chargeant préalablement l'environnement Intel 18.0.5 :

    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/18.0.5 2) intel-mpi/18.0.5
    $ module load netcdf
    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/18.0.5 2) intel-mpi/18.0.5 3) netcdf/4.7.2-mpi
    $ which ncdump
    /.../netcdf/4.7.2/intel-18.0.5-4q5xoewvla54i45rdh743eu7bm7wnsi7/bin/ncdump
    attention

    Si aucune installation n'a été effectuée pour l'environnement déjà chargé, un message d'erreur sera affiché (indiquant un conflit, par exemple) ; dans ce cas le module n'est pas chargé.
    Par exemple, si on essaie de charger la bibliothèque NetCDF dans l'environnement Intel 19.0.5 alors qu'elle n'est pas disponible :

    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/19.0.5
    $ module load netcdf
    Loading intel-compilers/19.0.4
    ERROR: Conflicting intel-compilers is loaded

    Loading intel-compilers/18.0.5
    ERROR: Conflicting intel-compilers is loaded

    Loading netcdf/4.7.2-mpi
    ERROR: Load of requirement intel-compilers/19.0.4 or intel-compilers/18.0.5 failed

    $ module list
    Currently Loaded Modulefiles:
    1) intel-compilers/19.0.5
    BONNE PRATIQUE

    Il est recommandé de charger vos modules en respectant l'ordre suivant :
        1. Compilateurs
        2. Librairie MPI
        3. Autres librairies

    module load <compilateurs> <librairie MPI> <autres librairies>

Mise en garde pour l'édition de liens

Lors de la compilation de vos codes, même après avoir chargé le module adéquat pour utiliser une bibliothèque, il sera sans doute nécessaire de spécifier les librairies à utiliser lors de l'édition de liens.
Par exemple, pour compiler avec la bibliothèque mathématique HYPRE :

module load hypre
ifort -o test -lHYPRE test.f90

Notez que, par contre, les chemins vers les fichiers headers, les modules Fortran, les librairies statiques (.a) et dynamiques (.so) sont positionnés automatiquement, sans qu'il soit nécessaire de les préciser.

Modules compatibles avec les partitions A100 et H100

Les modules accessibles par défaut sont ceux des partitions CPU et V100.

Les modules spécifiques aux partitions A100 (gpu_p5) ou respectivement aux partitions H100 (gpu_p6) nécessitent de charger préalablement le module arch/a100 ou respectivement arch/h100 pour être accessibles.

Partition A100

Les travaux ciblant la partition A100 (gpu_p5) (extension installée en juin 2022 et équipée de GPU NVIDIA A100 80 Go) doivent utiliser des modules spécifiques/dédiés car les nœuds qui la composent sont équipés de CPU AMD alors que tous les autres nœuds de Jean Zay sont équipés de CPU Intel.

Les modules accessibles par défaut ne sont pas compatibles avec cette partition. Il est donc nécessaire de charger préalablement le module arch/a100 pour avoir accès aux modules dédiés :

$ module load arch/a100
$ module avail
------------------------------------ /lustre/fshomisc/sup/hpe/pub/module-rh/modulefiles ------------------------------------
arch/a100 intel-compilers/19.1.0 intel-python/2020.2 pgi/20.4
arch/h100 intel-compilers/19.1.1 intel-python/2020.4
arm-forge/19.1.1 intel-compilers/19.1.2 intel-tbb/4.4.6(16.0.4)
[...]

---------------------- /lustre/fshomisc/sup/hpe/pub/modules-idris-env4/modulefiles/linux-rhel9-x86_64 ----------------------
adios2/2.8.0-mpi-cuda libpng/1.6.37 vasp/6.4.2-mpi-cuda-openacc
adios2/2.10.0-mpi-cuda libsndfile/1.0.28 vllm/0.5.4
alphafold/2.2.4 libvips/8.10.6
[...]

$ module load <produit souhaité>

# Affichage non exhaustif, basé sur une sortie de la commande éditée en janvier 2026
attention

Vous devez recompiler vos codes avec les modules compatibles avant de les utiliser sur cette partition. Si vous prévoyez de lancer un code sur plusieurs partitions différentes, il est nécessaire de compiler des binaires distincts.

Partition H100

Les travaux ciblant la partition H100 (gpu_p6) (extension installée en juillet 2024 et équipée de GPU NVIDIA H100 80 Go) doivent utiliser des modules spécifiques/dédiés car les nœuds qui la composent sont interconnecté avec la technologie InfiniBand alors que tous les autres nœuds de Jean Zay utilisent OmniPath.

Les modules accessibles par défaut ne sont pas compatibles avec cette partition. Il est donc nécessaire de charger préalablement le module arch/h100 pour avoir accès aux modules dédiés :

$ module load arch/h100
$ module avail
------------------------------------- /lustre/fshomisc/sup/pub/modules-rh/modulefiles --------------------------------------
arch/a100 cuda/12.2.0 cuda/12.8.0 nvidia-compilers/24.7 nvidia-nsight-compute/2024.3.2.0
arch/h100 cuda/12.4.1 intel-oneapi-mkl/2024.1 nvidia-compilers/25.1 nvidia-nsight-systems/2024.4.1.61
cuda/12.1.0 cuda/12.6.3 nvidia-compilers/24.5 nvidia-nsight-compute/2024.2.1.0 nvidia-nsight-systems/2024.7.1.84

-------------------- /lustre/fshomisc/sup/pub/modules-idris-env4/modulefiles/linux-rhel9-sapphirerapids --------------------
alphafold/3.0.1 hdf5/1.12.0-mpi-cuda openblas/0.3.20
alphapulldown/2.0.1 hmmer/3.4-mpi-cuda openjdk/11.0.2
alphapulldown/2.1.5 htop/3.2.0 openjdk/11.0.15_10
[...]

$ module load <produit souhaité>

# Affichage non exhaustif, basé sur une sortie de la commande éditée en janvier 2026
attention

Vous devez recompiler vos codes avec les modules compatibles avant de les utiliser sur cette partition. Si vous prévoyez de lancer un code sur plusieurs partitions différentes, il est nécessaire de compiler des binaires distincts.