.. Le gestionnaire de ressources (SLURM) Le gestionnaire de charge/Planificateur (SLURM) ================================================== Le gestionnaire de ressources, et planificateur, a pour but de planifier et exécuter les tâches/calculs sur un calculateur. Son rôle est de rechercher et d'assigner les ressources disponibles aux différents calculs qui lui sont soumis. Les calculs sont au fur et à mesure ajouter à la file d'attente, SLURM décide ensuite en fonction des ressources disponibles et d'autres facteurs sur quel serveur la tâche va rouler. Cette tâche est appelée un *job*. Les types de jobs -------------------- SLURM accepte 2 types de jobs: * :icon:`fa-solid fa-gear` Le `Job en batch`_ * :icon:`fa-solid fa-desktop` Le `Job interactif`_ Job en batch ^^^^^^^^^^^^^ Le calcul en batch est le type de job à privilégier sur un calculateur car il permet d'ajouter son script à la file d'attente sans attendre que les ressources soient disponibles et d'obtenir la sortie du calcul dans son répertoire de travail (output). Afin de soumettre un calcul en batch, on utilise la commande ``sbatch ``. *Exemple* .. code-block:: bash :emphasize-lines: 2 $ sbatch monscript.sh sbatch: Submitted batch job 65541 *Un script pour un job en batch se présente comme suit:* .. code-block:: bash :emphasize-lines: 4 #!/bin/bash # Le shell à utiliser doit toujours être la 1ère ligne # Les directives de soumission pour SLURM commencent ensuite par "#SBATCH" : #SBATCH --job-name=mon_calcul #SBATCH --mail-type=BEGIN,END #SBATCH --partition=cpu #SBATCH --nodes=1 #SBATCH --cpus-per-task=4 #SBATCH --mem=64G #SBATCH --time=1:00:00 # Les différentes directives à exécuter sont insérées ensuite: echo "Je roule sur le noeud $HOSTNAME" sleep 60 Il existe de nombreuses directives de soumission pour SLURM dont la plupart sont communes aux jobs en batch et interactifs dont les plus importantes sont réunies dans le tableau ci-après. Job interactif ^^^^^^^^^^^^^^^ TODO Les commandes à connaitre ----------------------------- Les commandes les plus couramment utilisées pour interagir avec SLURM sont réunies dans le tableau ci-dessous et certaines sont détaillées dans les sections suivantes: +-------------------------------------+-------------------------------------------------------------+ | Commande | Description | +=====================================+=============================================================+ | sinfo | Etat des noeuds, des partitions | | | | | *sinfo -l* | | | | | | *sinfo -N -l* | | +-------------------------------------+-------------------------------------------------------------+ | squeue | Etat de la file d'attente | | | | | *squeue -u mon_username* | | | | | | *squeue -j jobid* | | | | | | *squeue -p partition* | | +-------------------------------------+-------------------------------------------------------------+ | sbatch | Soumette un job en batch | | | | | *sbatch -ressources mon_script.sh* | | +-------------------------------------+-------------------------------------------------------------+ | salloc | Lancer un job interactive | | | | | *salloc -ressources* | | +-------------------------------------+-------------------------------------------------------------+ | scancel | Annuler un job | | | | | *scancel jobid* | | +-------------------------------------+-------------------------------------------------------------+ | scontrol | Information détaillée sur les noeuds/jobs | | | | | *scontrol show jobid -dd* | | | | | | *scontrol show node* | | +-------------------------------------+-------------------------------------------------------------+ Les directives de soumission ------------------------------ Pour un job en batch ou en interactif, les ressources demandées sont spécifiées sur la ligne de commande accolée à la commande ``sbatch/salloc`` (ou au début du script en batch). Les plus couramment utilisées sont réunies dans le tableau ci-dessous et la liste complète peut être consultée sur la page officielle des commandes SLURM: |sbatch_link| / |salloc_link|. .. |sbatch_link| raw:: html sbatch .. |salloc_link| raw:: html salloc +----------------------------------+-------------------------------------------------------------+ | Directive | Description | +==================================+=============================================================+ | --cpus-per-task= | Nombre de coeurs | | | | | -c 4 | | +----------------------------------+-------------------------------------------------------------+ | --mem=[units] | Ram | | | | | *--mem=64* | | +----------------------------------+-------------------------------------------------------------+ | --gres=gpu:X | Gpu | | | | | *--gres=gpu:v100:1* | | +----------------------------------+-------------------------------------------------------------+ | -t, --time=HH:MM:SS | Temps maximum | +----------------------------------+-------------------------------------------------------------+ | --partition=cpu/gpu | En fonction du type de calcul demandé (automatique) | +----------------------------------+-------------------------------------------------------------+ | --output=fichier.log | Fichier contenant tout l'output du calcul. | | | Si absent, défaut vers slurm-.out | +----------------------------------+-------------------------------------------------------------+ La queue de calcul --------------------- Chaque job soumis est ajouté à la queue de calcul de SLURM qui définit la place du calcul dans la file d'attente suivant différents facteurs comme les ressources demandées et votre utilisation effective. Afin d'afficher l'état de la queue de calcul on utilise la commande ``squeue`` Les types de noeud/partition ------------------------------ Afin d'orienter les jobs vers les noeuds possédant les ressources les plus adéquates sans bloquer l'utilisation d'autres ressources spécifiques, les noeuds sont répartis en *partition* qui sont des queues de calcul séparées. .. note:: Le calculateur ne possédant que 2 noeuds: un noeud CPU et un noeud GPU, la sélection de la partition est automatique et il n'est pas nécessaire de la spécifier dans les ressources. Le fichier de sortie (``output``) ---------------------------------- Par défaut le nom du fichier de sortie est : ``slurm-.out``