Skip to content

Cluster de Calcul

Documentation Cluster de Calcul

Cette page documente l'utilisation des gestionnaires de ressources OAR et Slurm.

OAR

Lancer un job simple

Session interactive simple :

oarsub -I -q default

Usage avancé (GPU et IA)

Réserver des ressources GPU

Réserver un seul GPU :

<login>@frontend:~$ oarsub -I -q default -l "gpu=1"
# Setting queue to: p1
# Tie job resource request for GPU to resources with GPU
# Set walltime to default (3600 s).
OAR_JOB_ID=2895832
# Interactive mode: waiting...
# Starting...

Note : Sur les nœuds multi-GPU, réserver un seul GPU alloue une fraction des ressources CPU et mémoire (ex: moitié sur un nœud bi-GPU).

Réserver plusieurs GPU sur le même nœud :

<login>@frontend:~$ oarsub -I -q default -l "host=1/gpu=2"

Sélectionner un modèle de GPU spécifique :

<login>@frontend:~$ oarsub -I -q default -p "gpu_model='A100'"

Vérifier les modèles de GPU disponibles :

<login>@frontend:~$ oarnodes -J | jq -r '.[] | select(.production == "YES" and .gpu_model != null and .gpu_model != "") | .gpu_model' | sort | uniq
A100-PCIE-40GB
A40
H100 NVL
L40S
...

Réservation de nœuds entiers :

<login>@frontend:~$ oarsub -I -q default  -p "gpu_count > 0"

Vérifier le pilote GPU et version CUDA (sur le nœud) :

<login>@node:~$ nvidia-smi
Environnements IA

Support des modules, Conda et conteneurs.

Modules

Lister les modules disponibles :

<login>@frontend:~$ module av cuda

Charger un module spécifique :

<login>@node:~$ module load cuda/12.1.1_gcc-10.4.0
<login>@node:~$ nvcc --version
Conda

Créer un environnement (ex: PyTorch) :

<login>@node:~$ module load conda
<login>@node:~$ conda create --name PyTorch python=3.11
<login>@node:~$ conda activate PyTorch

Installer PyTorch avec support CUDA :

<login>@node:~$ conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

Attention : La version de pytorch-cuda doit correspondre à la version CUDA du système ou du module chargé.

Vérification :

<login>@node:~$ python -c 'import torch; print(torch.__version__, torch.cuda.is_available());'
2.5.1 True
Singularity / Apptainer

Exécuter une image :

<login>@node:~$ module load singularity
<login>@node:~$ singularity run --nv tensorflow_21.09-tf2-py3.sif

Slurm

Lancer un job simple

Session interactive (équivalent à oarsub -I) :

srun --pty bash
# ou
salloc

Soumettre un script (batch) :

sbatch script.sh

Usage avancé (GPU)

Réserver 1 GPU en interactif :

srun --gres=gpu:1 --pty bash

Exemple de script de soumission (job_gpu.slurm) :

#!/bin/bash
#SBATCH --job-name=mon_job_ia
#SBATCH --output=resultats.out
#SBATCH --error=erreurs.err
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --gres=gpu:1        # Demande 1 GPU
#SBATCH --time=01:00:00     # Temps limite 1h
#SBATCH --partition=gpu     # Partition GPU

module load cuda/12.1
python script_ia.py

État des jobs :

squeue -u $USER

État des nœuds :

sinfo