Gestionnaire de tâches SLURM
La nouvelle configuration du gestionnaire de tâches SLURM sur MesoPSL repose sur la combinaison de plusieurs éléments.
Pour pouvoir lancer un job, vous devrez préciser les éléments suivants :
- un account
- un cluster
- une partition
- une QoS
Accounts
Les accounts sont les comptes sur lesquels sont crédités les allocations horaires qui vous sont attribuées lorsque vos demandes de temps de calcul sont validées.
En règle générale, les accounts portent le nom du demandeur. À chaque demande sont associées deux accounts, l'un contenant les heures de calcul normales et l'autre les heures de calcul prioritaires.
Clusters
Le gestionnaire de tâches SLURM gère maintenant dans des clusters séparés les noeuds des différentes générations et des projets (ERC) qui composent MesoPSL.
Les commandes squeue
et sinfo
par ex. afficheront séparément les informations concernant ces clusters.
Les clusters actuellement définis sont :
mesopsl1
: 94 noeuds NEC 16 coeurs, 64 Go RAMmesopsl2
: 24 noeuds DELL 24 coeurs, 96 Go RAMastro_fat
: 12 noeuds larges DELL 96 coeurs, 768 Go RAM, réservés prioritairement pour la communauté astroastro_thin
: 100 noeuds fins DELL, 24 coeurs, 96 Go RAM, réservés prioritairement pour la communauté astrototoro
: 16 noeuds DELL, 40 coeurs, 192 Go RAM, réservés exclusivement aux membres de l'ERC MISTgpu
: 5 noeuds DELL dont 4 noeuds réservés prioritairement pour les membres de Noether
Vous trouverez plus d'informations sur le matériel ici.
Partitions
Les partitions de MesoPSL sont définies de la manière suivante : chaque cluster peut être utilisé grâce à une partition normale ou prioritaire (en dehors de totoro qui a son propre mode de fonctionnement).
Ainsi, vous pouvez trouver sur MesoPSL les partitions :
def
hi
pour chacun des cluster mesopsl1
, mesopsl2
, astro_fat
et astro_thin
.
Un job lancé sur une partition prioritaire pourra suspendre un job lancé sur une partition normale pour s'exécuter. Lorsque le job prioritaire sera terminé, l'exécution du job normal reprendra.
QoS
Les QoS permettent de répartir l'usage des noeuds entre des jobs longs et des jobs courts, évitant ainsi que l'intégralité des noeuds d'une partition soient bloqués pour des jobs durant quelques jours inversement que des jobs longs restent trop longtemps en queue.
Les partitions normales disposent des QoS :
- _long : jusqu'à 5 jours de temps d'exécution ;
- _vlong : jusqu'à 15 jours de temps d'exécution.
Les partitions haute priorité disposent des QoS :
- _short : jusqu'à 1 heure de temps d'exécution ;
- _normal : jusqu'à 1 jour de temps d'exécution.
Le nombre de noeuds utilisables par les QoS varie d'un cluster à l'autre :
- 50 noeuds dans chaque QoS de mesopsl1 ;
- 15 noeuds dans chaque QoS de mesopsl2 ;
- 12 noeuds dans chaque QoS de astro_fat ;
- 60 noeuds dans chaque QoS de astro_thin.
- 3 noeuds dans chaque QoS de gpu.
Partition | QoS | limites |
---|---|---|
def | mesopsl1_def_long | 50 noeuds, 5 jours |
def | mesopsl1_def_vlong | 50 noeuds, 15 jours |
hi | mesopsl1_hi_short | 50 noeuds, 1 heure |
hi | mesopsl1_hi_normal | 50 noeuds, 1 jour |
def | mesopsl2_def_long | 15 noeuds, 5 jours |
def | mesopsl2_def_vlong | 15 noeuds, 15 jours |
hi | mesopsl2_hi_short | 15 noeuds, 1 heure |
hi | mesopsl2_hi_normal | 15 noeuds, 1 jour |
def | astro_fat_def_long | 12 noeuds, 5 jours |
def | astro_fat_def_vlong | 12 noeuds, 15 jours |
hi | astro_fat_hi_short | 12 noeuds, 1 heure |
hi | astro_fat_hi_normal | 12 noeuds, 1 jour |
def | astro_thin_def_long | 60 noeuds, 5 jours |
def | astro_thin_def_vlong | 60 noeuds, 15 jours |
hi | astro_thin_hi_short | 60 noeuds, 1 heure |
hi | astro_thin_hi_normal | 60 noeuds, 1 jour |
def | gpu_def_long | 3 noeuds, 5 jours |
def | gpu_def_vlong | 3 noeuds, 15 jours |
hi | gpu_hi_short | 3 noeuds, 1 heure |
hi | gpu_hi_normal | 3 noeuds, 1 jour |
Commandes essentielles
squeue
: indique les jobs en queue-u user
: indique seulement les jobs de l'utilisateuruser
-M cluster
: indique seulement les jobs sur le clustercluster
sinfo
: indique l'état des partitions de l'ensemble des clusterssbatch mon_job
: soummet l'exécution du job défini par le scriptmon_job
scancel -M cluster jobid
: annule le job numérojobid
sur le clustercluster
squota
: liste les heures disponibles et utilisées sur chaque cluster pour chaque accounts.
Exemples de scripts
Prenons l'exemple de l'utilisateur martin
, dont les allocations d'heures ont été créditées sur les accounts martin
et martin_hi
, pour les clusters mesopsl1
et mesopsl2
.
Voici quelques exemples de scripts lui permettant de lancer des jobs sur les différentes partitions, avec différentes QoS, pour différents types d'exécution.
Job MPI simple
Demande de 12 noeuds sur mesopsl1, pour 2 jours, en priorité normale.
Le code sera exécuté sur l'espace de travail BeeGFS.
#!/bin/sh
#SBATCH --job-name=mon_job
#SBATCH --time=2-00:00:00
#SBATCH --mail-user=mon-mail@mail.fr --mail-type=ALL
#SBATCH --clusters=mesopsl1
#SBATCH --partition=def
#SBATCH --qos=mesopsl1_def_long
#SBATCH --account=martin
#SBATCH --nodes=12
#SBATCH --ntasks-per-node=16
module load ma_liste_de_modules
RUNDIR=/travail/martin/job.${SLURM_JOB_ID}
mkdir -p ${RUNDIR}
cd ${RUNDIR}
mpirun -np ${SLURM_NTASKS} /travail/martin/mon/beau/code
exit 0
Job hybride MPI/OpenMP
Demande de 8 noeuds sur mesopsl2, pour 30 minutes, en priorité haute.
Sur chaque noeud, on veut lancer 4 processus avec 6 threads chacun.
Le code sera exécuté sur l'espace de travail BeeGFS.
#!/bin/sh
#SBATCH --job-name=mon_job
#SBATCH --time=00:30:00
#SBATCH --mail-user=mon-mail@mail.fr --mail-type=ALL
#SBATCH --clusters=mesopsl2
#SBATCH --partition=hi
#SBATCH --qos=mesopsl2_hi_short
#SBATCH --account=martin_hi
#SBATCH --nodes=8
#SBATCH --ntasks-per-node=4
#SBATCH --cpus-per-task=6
module load ma_liste_de_modules
RUNDIR=/travail/martin/job.${SLURM_JOB_ID}
mkdir -p ${RUNDIR}
cd ${RUNDIR}
OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} mpirun -np ${SLURM_NTASKS} /travail/martin/mon/beau/code
exit 0
Jobs interactifs
Il est possible de demander des ressources à SLURM et d'être connecté automatiquement aux ressources attribuées lorsque le job commence. Ceci permet d'utiliser MesoPSL de manière intéractive.
Pour cela, il faut utiliser la commande srun comme dans l'exemple suivant :
srun --job-name "InteractiveJob" --ntasks=24 --time 0:15:00 --account=martin --qos=astro_thin_def_long --partition=def --clusters=astro_thin --pty bash
Cette demande ouvre une session interactive pour 24 processus/threads sur astro_thin, pour 15 minutes, en priorité normale.
Il faut penser à quitter sa session intéractive avec exit si on veut y mettre un terme avant la fin du te1Gmps réservé.