Table des matières

Voir cette page sous forme de diaporama.

Slurm, l'ordonnanceur de travaux

Cet article est une introduction à slurm, l'ordonnanceur de travaux (jobs) sur CALI. Vous trouverez les recettes pratiques pour commencer à travailler sur CALI :

Avant-propos

Sur un cluster de calcul, vous ne travaillez pas comme sur votre PC personnel. Vous ne pouvez pas lancer un programme inter-actif qui utiliserait immédiatement les ressources du cluster.

Pour exécuter un programme, vous devez le soumettre à l’ordonnanceur (scheduler). Le logiciel utilisé comme ordonnanceur sur notre cluster est slurm. Il exécutera votre programme (job) en différé, quand les ressources (CPU, mémoire) nécessaires à votre travail seront disponibles “quelque part” dans le cluster, sur un des nœuds dédiés aux calculs.

Premier exemple pratique

Fichier batch et soumission

Nous créons un fichier texte mon_programme.batch (n'importe quel nom est admissible) :

#!/bin/bash

#SBATCH --partition=rapide
#SBATCH --ntasks=1
#SBATCH --mem-per-cpu=100
#SBATCH --time=00:30:00

./mon_programme

Ensuite, on indique à slurm que l'on veut lancer ce job :

sbatch mon_programme.batch

Et voilà, votre code mon_programme sera exécuté dès que le cluster aura des ressources disponibles ! Nous allons maintenant détailler le contenu du fichier batch et comment slurm travaille..

Explications

Le fichier texte mon_programme.sbatch est de type shell script.

Mais il possèdes des commentaires spéciaux, commençant par #SBATCH , placés en première partie du fichier. Ces directives destinées à slurm indiquent :

Dans notre exemple :

Dans sa seconde partie, le fichier contient la ou les commandes à exécuter.

La commande sbatch permet de soumettre le fichier batch, autrement dit de créer un job slurm qui sera exécuté dès que les ressources demandées seront disponibles. sbatch a affiché le Job ID, un numéro unique associé au job soumis.

Toutes les directives (#SBATCH …) sont en pratique des options de la commande sbatch. Il est simplement plus facile de les inscrire dans le fichier batch que de les taper sur la ligne de commande.

Où est mon job ? Comment l'arrêter ?

Une fois votre job soumis, vous pouvez examiner la queue, c'est-à-dire la liste des travaux en attente ou en cours d'éxécution.

Pour voir tous les jobs dans la file :

squeue -l

Les job ont un état associé – Les 2 principaux sont :

Vous pouvez stopper un job en cours avec :

scancel <JOB_ID>

Pour plus d'informations, consultez le contenu de la rubrique dédiée à slurm

Où sont stockés les résultats du job ?

Slurm exécute le job depuis le dossier où vous étiez quand vous avez soumis le job.

Par défaut, les sorties standards et d'erreur (qui s'affichent sur le terminal) sont redirigées vers le fichier slurm-<JOB_ID>.out

Dépassement des ressources

Si votre job dépasse certaines quantités demandées (mémoire, temps d'exécution), il sera automatiquement tué par slurm.

Les partitions slurm

Un élément est primordial quand vous soumettez un job : la partition

Vous pourrez par la suite consulter la liste complète des partitions utilisables, ou la page utilisation des noeuds GPU. Nous présentons ci-après les choix les plus usuels.

Travaux de très courte durée

Utilisez partition=rapide

Travaux "normaux"

Utilisez partition=normal

Points d'attention sur les ressources