Skip to content

Applications(modules)

assets/load.png

Utiliser des applications via les modules sur un cluster SLURM est une méthode courante pour gérer les logiciels et leurs dépendances. Les modules permettent de charger et de décharger des environnements logiciels spécifiques sans conflits. Voici un guide complet pour utiliser les applications avec les modules :


1. Qu'est-ce qu'un module ?

Un module est un outil qui permet de charger des logiciels et leurs dépendances dans votre environnement de travail. Cela évite les conflits entre versions de logiciels et facilite la gestion des environnements.


2. Commandes de base des modules

a. Lister les modules disponibles

Pour voir la liste des modules disponibles sur le cluster :

module avail

b. Charger un module

Pour charger un module (par exemple, Python 3.8) :

module load python/3.8

c. Vérifier les modules chargés

Pour voir les modules actuellement chargés dans votre environnement :

module list

d. Décharger un module

Pour décharger un module (par exemple, Python 3.8) :

module unload python/3.8

e. Purger tous les modules

Pour décharger tous les modules chargés :

module purge

f. Rechercher un module

Pour rechercher un module spécifique (par exemple, Python) :

module spider python

3. Utiliser des modules dans un script de job

a. Charger des modules dans un script SLURM

Dans votre script de job, chargez les modules nécessaires avant d'exécuter votre programme. Par exemple :

#!/bin/bash
#SBATCH --job-name=mon_job
#SBATCH --output=mon_job_%j.out
#SBATCH --error=mon_job_%j.err
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=8G
#SBATCH --time=01:00:00
#SBATCH --partition=defq

# Charger les modules nécessaires
module load python/3.8
module load openmpi/4.0.3

# Exécuter le programme
python3 mon_script.py

b. Exemple avec MPI

Si vous utilisez MPI, chargez le module MPI approprié :

module load openmpi/4.0.3
mpirun -np 16 ./mon_programme_mpi

c. Exemple avec GPU

Si vous utilisez des GPU, chargez les modules CUDA et les bibliothèques nécessaires :

module load cuda/11.0
./mon_programme_gpu

4. Gérer les dépendances

a. Dépendances entre modules

Certains modules dépendent d'autres modules. Par exemple, un module Python peut dépendre d'un compilateur spécifique. Utilisez module spider pour voir les dépendances :

module spider python/3.8

b. Charger des modules avec dépendances

Si un module a des dépendances, chargez-les dans l'ordre approprié. Par exemple :

module load gcc/9.3.0
module load python/3.8

5. Personnaliser votre environnement

a. Charger des modules automatiquement

Vous pouvez ajouter des commandes module load dans votre fichier de configuration shell (par exemple, .bashrc ou .bash_profile) pour charger automatiquement des modules au login :

echo "module load python/3.8" >> ~/.bashrc
source ~/.bashrc

b. Créer des alias pour les modules

Pour simplifier les commandes, créez des alias dans votre shell :

alias load_py="module load python/3.8"
alias unload_py="module unload python/3.8"

6. Bonnes pratiques

  • Testez les modules avant de les utiliser dans un job.
  • Purgez les modules avant de charger de nouveaux environnements pour éviter les conflits.
  • Utilisez module spider pour explorer les modules disponibles et leurs dépendances.
  • Documentez les modules utilisés dans vos scripts pour assurer la reproductibilité.

7. Exemples pratiques

a. Exemple avec Python

module load python/3.8
python3 mon_script.py

b. Exemple avec R

module load R/4.0.3
Rscript mon_script.R

c. Exemple avec un compilateur (GCC)

module load gcc/9.3.0
gcc -o mon_programme mon_programme.c

d. Exemple avec MPI

module load openmpi/4.0.3
mpirun -np 16 ./mon_programme_mpi

e. Exemple avec GPU (CUDA)

module load cuda/11.0
./mon_programme_gpu

8. Résolution des problèmes courants

a. Module non trouvé

  • Vérifiez que le module est disponible avec module avail.
  • Utilisez module spider pour rechercher le module.

b. Conflits entre modules

  • Purgez les modules avec module purge avant de charger de nouveaux modules.
  • Chargez les modules dans l'ordre correct (dépendances d'abord).

c. Erreurs de dépendances

  • Utilisez module spider pour identifier les dépendances manquantes.
  • Chargez les modules requis avant le module principal.

En suivant ce guide, vous pouvez utiliser efficacement les applications avec les modules sur un cluster SLURM. Si vous avez des questions supplémentaires, n'hésitez pas à demander ! 🚀