Guide d'utilisation de SLURM

SLURM est le gestionnaire de fil utilisé sur la ferme de calcul de l'IGBMC. Vous devez utiliser SLURM pour soumettre des travaux à la ferme de calcul.

L'ensemble des commandes présentées dans ce guide sont à utiliser depuis l'hôte hpc.igbmc.fr. Cet hôte est le noeud de connexion de la ferme de calcul.

Une ferme de calcul est composé de nombreux ordinateurs. Chaque ordinateur dispose de ressources limités en processeurs (ou coeurs) et en mémoire. Ains, à un instant donné chaque ordinateur de la ferme de calcul n'est capable d'exécuter qu'un nombre limité de tâche. Un gestionnaire de fil permet de répartir les tâches sur l'ensemble des ordinateurs de la ferme afin d'exploiter au mieux leurs ressources.

Le gestionnaire de fil utilisé à l'IGBMC s'appelle SLURM. Il est composé d'un contrôleur qui connait l'ensemble des ordinateurs de la ferme que l'on appelle “noeuds”. Lorsque vous soumettez un travail à SLURM, le contrôleur se charge d'identifier un noeud disposant des ressources suffisante pour exécuter votre travail. Si aucun noeud n'est trouvé, le travail est mis en attente dans une fil. Dès qu'un noeud compatible est disponible, SLURM lance votre travail sur ce noeud.

Pour que cela puisse fonctionner, il est indispensable que l'ensemble des noeuds de la ferme de calcul ait accès aux mêmes applications ou outils ainsi qu'au même données.

Sur la ferme de calcul de l'IGBMC, les outils ou données accessibles par l'ensemble des données sont tous disponibles dans le dossier /shared. Dans le dossier /shared on trouve notamment le répertoire personnel de chaque utilisateur (homedir) ainsi que les volumes de stockage de vos données (zones labo, etc.).

Lorsque vous soumettez un travail à SLURM, assurez-vous toujours que vos outils ainsi que vos données se trouvent quelques part dans /shared.

Pour soumettre un travail à SLURM, on utilise la commande srun ou sbatch.

Ces deux commandes ont un fonctionnement similaire à la différence que srun ne vous rendra la main qu'à la fin de l'execution du travail alors que sbatch vous rend immédiatement la main après avoir soumis votre travail à la ferme de calcul.

Pour soumettre un travail, il suffit d'indiquer la commande à executer à la suite de la commande sbatch. Par exemple :

$ sbatch echo $RANDOM > random.txt

Lorsque vous exécutez cette commande, sbatch vous indique le numéro d'identification qui a été affecté à cette tâche. Ce numéro vous permettra de suivre l'execution de la tâche.

La ferme de calcul de l'IGBMC est organisée en plusieurs partitions SLURM.
Chaque partition regroupe un ensemble de noeuds de calcul qui possèdent des caractéristiques semblables (nombres de coeurs par noeuds, mémoire vive par coeur, etc.).

La partition par défaut utilisée par SLURM est une partition répondant aux usages les plus courants et contenant un grand nombre de noeuds.

Pour découvrir la liste des partitions disponibles sur la ferme de calcul, vous pouvez utiliser la commande sinfo comme suit :

$ sinfo

Cette commande vous permet également de visualiser la liste des noeuds et de découvrir leurs caractéristiques :

$ sinfo -Nl

Pour en savoir plus sur la commande sinfo consultez la documentation officielle (en anglais).

Un travail ou job se présente généralement sous la forme d'un script shell. Il peut également s'agir d'une simple commande.

La commande sbatch permet de soumettre un job à la ferme de calcul :

$ sbatch myscript.sh

Il est possible de spécifier directement dans votre script shell les paramètres d'exécutions de votre job. Voici un exemple de script :

#!/bin/bash
#
#SBATCH -N 1                         # number of nodes
#SBATCH -n 1                         # number of cores
#SBATCH --mem 100                    # memory pool for all cores
#SBATCH -t 0-2:00                    # time (D-HH:MM)
#SBATCH -o slurm.%N.%j.out           # STDOUT
#SBATCH -e slurm.%N.%j.err           # STDERR
 
for i in {1..100000}; do
  echo $RANDOM >> SomeRandomNumbers.txt
done
 
sort SomeRandomNumbers.txt
Lorsque vous soumettez un travail à la ferme de calcul, merci de préciser au minimum :
  • le nombre de coeurs nécessaire
  • la quantité de mémoire vive nécessaire
  • le temps nécessaire à l'exécution de votre travail

Ces informations permettent d'optimiser l'allocation de ressources pour vos travaux.

Lorsque vous soumettez un travail avec la commande sbatch, le travail est enregistré dans la file du cluster et vous retrouvez la main immédiatement.

La commande srun a un fonctionnement similaire à la commande sbatch à la différence que la commande ne vous rend pas la main tant que votre travail n'est pas terminé.

Pour en savoir plus sur la commande sbatch consultez la documentation officielle (en anglais).

Lister les travaux courant d'un utilisateur :

$ squeue -u <username>

Lister les travaux en cours d'exécution d'un utilisateur :

$ squeue -u <username> -t RUNNING

Lister les travaux en attente d'un utilisateur :

$ squeue -u <username> -t PENDING

Lister tous les travaux courant d'un utilisateur sur la partition surf :

$ squeue -u <username> -p surf

Lister les informations détaillées d'un travail :

$ scontrol show jobid -dd <jobid>

Pour annuler/arrêter un travail :

$ scancel <jobid>

Pour annuler tous les travaux d'un utilisateur :

$ scancel -u <username>

Pour annuler tous les travaux en attente pour un utilisateur :

$ scancel -t PENDING -u <username>