Ceci est une ancienne révision du document !
Cet article est une introduction à slurm, l'ordonnanceur de travaux (jobs) sur CALI. Vous trouverez les recettes pratiques pour commencer à travailler sur CALI :
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.
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..
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 :
--partition=rapide
sélectionne la partition nommée rapide
--ntasks=1
donne le nombre de processus--mem-per-cpu=100
donne la quantité de mémoire en Mo pour chaque CPU. Le job sera tué si la quantité consommée excède la valeur demandée--time=00:30:00
donne la durée maximale du job, au format JOUR-HH:MM:SS . Le job sera tué si la quantité consommée excède la valeur demandéeDans sa seconde partie, le fichier contient la 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.
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é :
PENDING
: en attenteRUNNING
: en cours d'exécutionVous pouvez stopper un job en cours avec :
scancel <JOB_ID>
Pour plus d'informations, consultez le contenu de la rubrique dédiée à slurm
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 sont redirigés vers le fichier slurm-<JOB_ID>.out
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.
Utilisez partition=rapide
Utilisez partition=normal
Partition gpu