Outils pour utilisateurs

Outils du site


slurm:slurm-multithread

Voir cette page sous forme de diaporama.

Slurm et programmation multithread

Cet article donne des indication sur l'utilisation de programmes multi-threadés (avec OpenMP par exemple) avec l'ordonnanceur Slurm.

Avant-propos

Un programme multi-thread est un programme qui est matérialisé par un seul processus. Ce processus aura plusieurs fils (pluriel de fil) d'exécution distincts. Ils sont aussi nommés processus légers ou threads.

Les threads s'exécutent en parallèle : ils peuvent ainsi utiliser plusieurs cœurs (ou CPU) en même temps sur une même machine. Notez qu'ils ne peuvent pas utiliser les ressources de plusieurs machines différentes.

Fichier Batch

Exemple de fichiers batch slurm adapté pour un programme OpenMP :

#!/bin/bash
#
#SBATCH --partition=normal
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=8
#SBATCH --mem-per-cpu=300
#SBATCH --time 00:01:00

export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
./mon_programme

Options Slurm

  • L'option --ntasks=1 est réduite à 1, on ne lance qu'un seul processus par la suite
  • L'option --cpus-per-task=8 réserve 8 CPU (à proprement parler, des cœurs). Le programme pourra alors lancer jusqu'à 8 threads sans dépasser sa réservation. Notez que la valeur maximale dépend des processeurs équipant les nœuds du cluster.

Variable OpenMP

La variable d'environnement OMP_NUM_THREADS sert à indiquer à OpenMP le nombre de threads utilisables. Il faut indiquer la même valeur que la réservation demandée.

Pour ne pas se tromper, on utilise ici la variable $SLURM_CPUS_PER_TASK qui sera automatiquement positionnée par slurm.

slurm/slurm-multithread.txt · Dernière modification: 2016/12/14 09:14 de montap01