Skip to main content

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​

BesoinOutil ou méthode recommandéeDocumentation
Rechercher et charger un logicielModules d'environnementModules
Comprendre les variables et l'environnement d'exécutionEnvironnements logicielsEnvironnements logiciels
Compiler un code C, C++ ou Fortran et utiliser MPICompilateurs et MPICompilateurs et MPI
Développer avec Python et gérer les dépendancesPython, venv et CondaPython et Conda
Utiliser une application ou une bibliothèque accéléréeCUDA et GPUCUDA et GPU
Exécuter un logiciel dans une image isoléeApptainerApptainer
Rendre un calcul traçable et réutilisableScripts, versions et dépendancesReproductibilité

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 :

  1. un job SLURM qui demande un GPU ;
  2. un environnement logiciel compatible avec le GPU attribué ;
  3. 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​

SituationMéthode recommandée
Utiliser un logiciel déjà installéCharger le module correspondant
Utiliser une version particulièreCharger le module avec sa version exacte
Compiler un code parallèleCharger un compilateur et MPI compatibles
Installer des paquets Python propres à un projetCréer un environnement venv ou Conda
Exécuter un logiciel avec des dépendances complexesUtiliser Apptainer si une image est disponible
Exécuter un code GPUDemander un GPU avec SLURM et charger l'environnement adapté
Conserver un workflow réutilisableVersionner scripts, modules et dépendances

Bonnes pratiques essentielles​

  • Commencez par module purge dans les scripts de production.
  • Chargez explicitement chaque module et sa version lorsque cela est possible.
  • Vérifiez l'environnement avec module list, which et --version.
  • Isolez les dépendances Python dans un environnement de projet.
  • Ne modifiez pas manuellement PATH ou LD_LIBRARY_PATH sans 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.

Pages associées​