#!/bin/bash
#SBATCH --job-name=gpu_cuda_mps_multi_mpi     # nom du job
#SBATCH --ntasks=40                   # nombre total de tache MPI
#SBATCH --ntasks-per-node=40          # nombre de tache MPI par noeud (tous les cœurs physiques)
#SBATCH --gres=gpu:4                  # nombre de GPU par nœud (tous les GPU)
#SBATCH --cpus-per-task=1             # nombre de coeurs CPU par tache
# /!\ "multithread" fait reference a l'hyperthreading dans la terminologie Slurm
#SBATCH --hint=nomultithread          # hyperthreading desactive
#SBATCH --time=00:10:00               # temps d'execution maximum demande (HH:MM:SS)
#SBATCH --output=gpu_cuda_mps_multi_mpi%j.out # nom du fichier de sortie
#SBATCH --error=gpu_cuda_mps_multi_mpi%j.out  # nom du fichier d'erreur (ici commun avec la sortie)
#SBATCH --exclusive                   # on réserve le noeud de manière exclusive 
#SBATCH -C mps                        # le service MPS est activé   

# nettoyage des modules charges en interactif et herites par defaut
module purge

# chargement des modules
module load ...

# echo des commandes lancees
set -x

# execution du code avec binding via bind_gpu.sh : 4 GPU pour 40 taches MPI.
srun ./executable_multi_gpu_mpi