#!/bin/bash
#SBATCH --job-name=LocalGpuAssign
#SBATCH --output=localgpu_%j.out
#SBATCH --nodes=1
#SBATCH --ntasks=2 # 2 tâches sur le même noeud
#SBATCH --cpus-per-task=4
#SBATCH --gres=gpu:h100:2 # Demande 2 GPUs sur le noeud
# SLURM alloue les GPUs, mais c'est souvent l'intégration CUDA/MPI
# qui définit CUDA_VISIBLE_DEVICES. Cependant, SLURM_LOCALID *peut* être
# utilisé pour forcer une correspondance si nécessaire.
# ATTENTION : La méthode recommandée est souvent de laisser faire l'intégration
# Slurm/CUDA. Cet exemple est illustratif.
# L'utilisation de SLURM_LOCALID pour CUDA_VISIBLE_DEVICES est une convention
# parfois utilisée, mais pas universelle.
export CUDA_VISIBLE_DEVICES=$SLURM_LOCALID
echo "Tâche globale $SLURM_PROCID, Tâche locale $SLURM_LOCALID sur $(hostname)"
echo "Variable CUDA_VISIBLE_DEVICES (potentiellement) mise à : $CUDA_VISIBLE_DEVICES"
# Lancer le programme CUDA (qui n'utilisera que le GPU visible si CUDA_VISIBLE_DEVICES est respecté)
echo "Lancement du test GPU pour la tâche $SLURM_PROCID (local $SLURM_LOCALID)"
# ./mon_executable_cuda --device $CUDA_VISIBLE_DEVICES # Passe l'ID local au programme si besoin
nvidia-smi # Vérifier quel GPU est effectivement utilisé par ce processus