Outils pour utilisateurs

Outils du site


slurm:les-bases

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
slurm:les-bases [2022/12/21 12:21]
montap01 [Principe]
slurm:les-bases [2023/01/03 15:32] (Version actuelle)
montap01 [Calcul sur GOPU]
Ligne 10: Ligne 10:
  
 Pour exécuter un programme, vous devez le soumettre à l’ordonnanceur (//scheduler//). Le logiciel utilisé comme ordonnanceur sur notre cluster est // [[http://slurm.schedmd.com/ | 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. Pour exécuter un programme, vous devez le soumettre à l’ordonnanceur (//scheduler//). Le logiciel utilisé comme ordonnanceur sur notre cluster est // [[http://slurm.schedmd.com/ | 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 ==== 
-Il faut préparer un fichier texte (de type //shell script//) 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.+===== Premier exemple pratique =====
  
-==== Dépassement des ressources ==== +==== Fichier batch et soumission  ==== 
-<note important>Si votre job dépasse certaines quantités demandées (mémoire, temps d'exécution), il sera automatiquement tué par slurm.</note> +Nous créons un fichier texte ''mon_programme.batch'' (n'importe quel nom est admissible) 
- +
-===== Partition ===== +
-Un élément 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-qos | partitions et QoS utilisables]], ou la page [[:gpu:utilisation | 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'' +
-  * pour les travaux très courts (< 1 heure) : mise au point du code, tests +
-  * limites d'usage basses +
-==== Travaux "normaux" ==== +
-Utilisez ''partition=normal'' +
-  * pour les jobs les plus communs (**2 jours maximum**) +
- +
-===== 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''+
  
 <code> <code>
 #!/bin/bash #!/bin/bash
 +
 #SBATCH --partition=rapide #SBATCH --partition=rapide
 #SBATCH --ntasks=1 #SBATCH --ntasks=1
Ligne 55: Ligne 27:
 </code> </code>
  
-==== Soumission du travail ==== 
 Ensuite, on indique à slurm que l'on veut lancer ce job : Ensuite, on indique à slurm que l'on veut lancer ce job :
  
   sbatch mon_programme.batch   sbatch mon_programme.batch
  
-==== Options sbatch ==== +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..
-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'' sélectionne la //partition// +==== Explications ==== 
-  * ''%%--%%ntasks=1'' donne le nombre de processus +Le fichier texte ''mon_programme.sbatch'' est de type //shell script//. 
-  * ''%%--%%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 ==== +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 : 
-<note important> +  * la //partition// voulue (plus de détails ci-après) 
 +  * les ressources nécessaires : nombre de processus qui seront lancés, quantité de mémoire, nombre de CPU 
 +  * le temps d’exécution maximum prévu 
 + 
 +Dans notre exemple :  
 +  * ''%%--%%partition=rapide'' sélectionne la //partition// nommée ''rapide'' 
 +  * ''%%--%%ntasks=1'' donne le nombre de processus qui sera exécuté dans le batch -- En général, on met "1" pour un programme séquentiel ou multi-threadé, une valeur > 1 seulement pour les programmes MPI 
 +  * ''%%--%%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 :!: 
 + 
 +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 : 
 +  * ''PENDING'' : en attente 
 +  * ''RUNNING'' : en cours d'exécution 
 + 
 +Vous pouvez stopper un job en cours avec : 
 +  scancel <JOB_ID> 
 +   
 +Pour plus d'informations, consultez le contenu de la rubrique dédiée à [[start | 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 ==== 
 +<note important>Si votre job dépasse certaines quantités demandées (mémoire, temps d'exécution), il sera automatiquement tué par slurm.</note> 
 + 
 +===== Les partitions slurm ===== 
 +Un élément 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| partitions utilisables]], ou la page [[:gpu:utilisation | 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'' 
 +  * pour les travaux très courts (< 1 heure) : mise au point du code, tests 
 +  * limites d'usage basses 
 +==== Travaux "normaux" ==== 
 +Utilisez ''partition=normal'' 
 +  * pour les jobs les plus communs (**2 jours maximum**) 
 + 
 +==== Calcul sur GPU ==== 
 +Partition ''gpu'' 
 +==== Points d'attention sur les ressources ====
   * 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   * 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 //partition//, sinon ils ne seront pas acceptés lors de la soumission   * Les quantités demandées en temps, CPU, mémoire doivent être compatible avec 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é   * Un job consommant plus de mémoire ou de temps que demandé sera tué
-</note> 
  
-===== 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 à [[start | slurm ]] 
slurm/les-bases.1671621662.txt.gz · Dernière modification: 2022/12/21 12:21 de montap01