Logiciels et environnements
eXplor-v2 met à disposition des logiciels scientifiques, compilateurs, bibliothèques et outils de développement. Ils sont principalement accessibles au moyen de modules d'environnement, qui permettent de sélectionner une version précise d'un logiciel sans modifier durablement votre configuration personnelle.
Cette section explique comment construire un environnement logiciel cohérent pour vos calculs, vos sessions interactives et vos jobs SLURM.
Les principaux outils disponibles
| Besoin | Outil ou méthode recommandée | Documentation |
|---|---|---|
| Rechercher et charger un logiciel | Modules d'environnement | Modules |
| Comprendre les variables et l'environnement d'exécution | Environnements logiciels | Environnements logiciels |
| Compiler un code C, C++ ou Fortran et utiliser MPI | Compilateurs et MPI | Compilateurs et MPI |
| Développer avec Python et gérer les dépendances | Python, venv et Conda | Python et Conda |
| Utiliser une application ou une bibliothèque accélérée | CUDA et GPU | CUDA et GPU |
| Exécuter un logiciel dans une image isolée | Apptainer | Apptainer |
| Rendre un calcul traçable et réutilisable | Scripts, versions et dépendances | Reproductibilité |
Modules d'environnement
Les modules permettent de rendre disponibles un logiciel et ses dépendances dans votre shell. Ils modifient temporairement des variables comme PATH, LD_LIBRARY_PATH ou MANPATH.
Commandes essentielles :
module avail
module spider <logiciel>
module load <logiciel>
module list
module unload <logiciel>
module purge
Exemple :
module purge
module load <module>
module list
Chargez les modules nécessaires dans vos scripts SLURM afin que le job utilise le même environnement, quel que soit le terminal depuis lequel il a été soumis.
Consultez Modules.
Construire un environnement logiciel
Un environnement de calcul reproductible doit préciser au minimum :
- les modules chargés ;
- les versions des compilateurs et bibliothèques ;
- la version de Python, si elle est utilisée ;
- les dépendances installées ;
- les variables importantes ;
- la version du code source ;
- les ressources SLURM demandées.
Exemple de préparation dans un script batch :
module purge
module load <module-compiler>
module load <module-application>
module list
which <executable>
<executable> --version
Les pages Environnements logiciels et Reproductibilité détaillent ces pratiques.
Compiler et utiliser MPI
Pour compiler un programme C, C++ ou Fortran, chargez un compilateur et utilisez les outils adaptés à l'environnement chargé.
Exemple générique pour un programme MPI :
module purge
module load <module-compiler>
module load <module-mpi>
mpicc -O3 -o mon-programme mon-programme.c
Dans un job SLURM, lancez une application MPI avec srun :
srun --ntasks=4 ./mon-programme
Utilisez le même environnement de compilation et d'exécution lorsque cela est requis par le logiciel. Consultez Compilateurs et MPI.
Python, environnements virtuels et Conda
Pour les projets Python, évitez d'installer des paquets directement dans l'environnement système ou dans un module partagé. Créez plutôt un environnement isolé dans votre espace personnel ou projet.
Avec venv :
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
Avec Conda, lorsque l'outil est disponible et approprié :
conda create -n mon-environnement python=<version>
conda activate mon-environnement
Conservez les dépendances dans requirements.txt, environment.yml ou un fichier équivalent. Consultez Python et Conda.
CUDA et GPU
L'utilisation d'un GPU nécessite :
- un job SLURM qui demande un GPU ;
- un environnement logiciel compatible avec le GPU attribué ;
- une application qui exploite réellement l'accélération GPU.
Exemple de demande SLURM :
#SBATCH --partition=gpu
#SBATCH --gres=gpu:1
#SBATCH --cpus-per-task=4
#SBATCH --mem=16G
Depuis le job, vérifiez l'accélérateur visible :
nvidia-smi
Les GPU disponibles sur eXplor-v2 incluent des NVIDIA Quadro RTX 6000 Ada, L40, RTX 6000 Pro BSE, H200 et L4 pour la visualisation, selon la partition et le nœud attribué.
Consultez CUDA et GPU ainsi que Ressources de calcul.
Apptainer
Apptainer permet d'exécuter un logiciel dans une image de conteneur, sans installer toutes ses dépendances directement dans votre environnement personnel.
Exemple :
apptainer exec mon-image.sif mon-programme --version
Pour un conteneur utilisant un GPU, il est généralement nécessaire de demander un GPU à SLURM et d'activer l'accès NVIDIA selon la procédure documentée :
apptainer exec --nv mon-image.sif nvidia-smi
Consultez Apptainer.
Utiliser les logiciels avec SLURM
Les modules et environnements doivent être chargés dans le script soumis. Ne supposez pas qu'un job batch héritera de la configuration de votre shell interactif.
Exemple :
#!/bin/bash
#SBATCH --job-name=analyse
#SBATCH --partition=std
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=8G
#SBATCH --time=01:00:00
#SBATCH --output=logs/%x-%j.out
#SBATCH --error=logs/%x-%j.err
set -euo pipefail
mkdir -p logs
module purge
module load <module>
module list
python script.py
Pour les détails de soumission, consultez Jobs batch. Pour tester un environnement avant production, consultez Jobs interactifs.
Choisir la bonne méthode
| Situation | Méthode recommandée |
|---|---|
| Utiliser un logiciel déjà installé | Charger le module correspondant |
| Utiliser une version particulière | Charger le module avec sa version exacte |
| Compiler un code parallèle | Charger un compilateur et MPI compatibles |
| Installer des paquets Python propres à un projet | Créer un environnement venv ou Conda |
| Exécuter un logiciel avec des dépendances complexes | Utiliser Apptainer si une image est disponible |
| Exécuter un code GPU | Demander un GPU avec SLURM et charger l'environnement adapté |
| Conserver un workflow réutilisable | Versionner scripts, modules et dépendances |
Bonnes pratiques essentielles
- Commencez par
module purgedans les scripts de production. - Chargez explicitement chaque module et sa version lorsque cela est possible.
- Vérifiez l'environnement avec
module list,whichet--version. - Isolez les dépendances Python dans un environnement de projet.
- Ne modifiez pas manuellement
PATHouLD_LIBRARY_PATHsans comprendre les conséquences. - Utilisez un conteneur lorsque l'environnement logiciel est trop complexe ou difficile à reproduire.
- Demandez un GPU uniquement si le logiciel l'utilise réellement.
- Conservez les versions de logiciels, les dépendances et les scripts de soumission.