Applications(modules)
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 ! 🚀