Outils pour utilisateurs

Outils du site


slurm:les-bases

Ceci est une ancienne révision du document !


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 :

  • comment soumettre un job
  • comment voir l'état de vos travaux

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.

Soumettre un job

Principe

Préparez un fichier texte qui décrit :

  • les ressources nécessaires : quantité de mémoire, nombre de CPU
  • le temps d’exécution maximum prévu
  • la partition voulue (plus de détails ci-après)
  • la ou les commandes à exécuter

Ensuite, 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.

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.

Partition

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

  • c'est un groupe de nœuds de calcul du cluster, avec une priorité
  • des limites sont associées à chacune : temps maximal d'exécution, nombre de CPU utilisables (au total ou par utilisateur)
  • certaines sont pré-emptibles : un job en cours pourra être suspendu s'il faut libérer des ressources pour un autre, plus prioritaire

Vous pourrez par la suite consulter la liste complète des partitions et QoS 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 et qos=rapide

  • pour les travaux très courts (< 1 heure) : mise au point du code, tests
  • limites d'usage basses

Travaux de longue durée

Utilisez partition=cluster et qos=cluster

  • pour les jobs de longue durée (30 jours maximum)
  • ils pourront être préemptés (gelés) pour libérer des ressources pour des travaux plus courts

Premier exemple

Ce premier exemple est adapté pour un programme séquentiel, qui n'utilise qu'un seul processus sans threads (processus léger).

Fichier batch

Nous créons un fichier texte mon_programme.batch :

#!/bin/bash
#SBATCH --partition=rapide
#SBATCH --qos=rapide
#SBATCH --ntasks=1
#SBATCH --mem-per-cpu=100
#SBATCH --time=00:30:00

./mon_programme

Soumission du travail

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

sbatch mon_programme.batch

Options sbatch

Les lignes #SBATCH sont des options pour la commande sbatch (et considérées comme des commentaires pour le shell – elles commencent avec #).

  • --partition=rapide et --qos=rapide sélectionnent la partition et la qos
  • --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ée

Points d'attention

  • Vous devez indiquer les ressources mémoire et temps nécessaires, car les valeurs par défaut sont très basses et ne permettraient certainement pas à votre travail de se terminer
  • Les quantités demandées en temps, CPU, mémoire doivent être compatible avec la qos et la partition, sinon ils ne seront pas acceptés lors de la soumission
  • Un job consommant plus de mémoire ou de temps que demandé sera tué

Résultats du job

Par défaut, les sorties standards et d'erreur sont redirigés vers le fichier slurm-<JOB_ID>.out

Inter-agir avec slurm

Voir la file d'attente

Voir tous les jobs dans la file :

squeue -l

Arrêter un job en cours

scancel <JOB_ID>

Pour plus d'information

Consultez le contenu de la rubrique dédiée à slurm

slurm/les-bases.1443209336.txt.gz · Dernière modification: 2015/09/25 21:28 de montap01