Batch Slurm

Un Batch Slurm est un fichier qui décrit une demande d'allocation de ressources pour l'exécution d'un traitement (Job). Il comprend deux parties :

  • les paramètres du Job via des options SBATCH écrites sous forme de commentaires Shell (Bash, ...). Ces options permettent de spécifier les ressources demandées (CPUs, RAM, temps...), le nom du Job, l'emplacement du ficher output, l'adresse email pour les notifications...

  • le traitement (script shell).

Un Job Slurm peut être structuré pour être instancié en grand nombre (Arrays), être découpé en étapes (Steps) et peut exécuter une ou plusieurs Task(s).

Job

Un Job est une allocation de ressources (CPUs, RAM, temps...) réservées pour l'exécution d'un traitement spécifique.

  • L'allocation est définie dans le Batch en nombre de Tasks (ntasks) multiplié par le nombre de CPUs par Task (cpus-per-task) et correspond aux ressources maximum utilisables en parallèle

  • Le script crée un ou plusieurs Job Steps et gère la distribution des Tasks sur les nœuds de Calcul.

Job Steps

Un Job Step représente une étape ou section du traitement effectué par le Job. Il exécute une ou plusieurs Tasks via la commande "srun". Ce découpage en Job Steps offre une grande flexibilité dans l'organisation des étapes du Job et la gestion et l'analyse des ressources allouées :

  • les Steps peuvent être exécutés séquentiellement ou en parallèle,

  • un Step peut initier une ou plusieurs Tasks exécutées en parallèle,

  • les Steps sont pris en charge par les commandes sstat/sacct, permettant à la fois un suivi de l'avancement Step-by-Step du Job pendant l'exécution, et des statistiques détaillées d'utilisation des ressources pour chaque Step (pendant et après exécution).

Tasks

Une Task est un processus auquel sont allouées les ressources définies dans le Batch par l'option "--cpus-per-task". Une Task peut disposer de ces ressources comme n'importe quel processus (création de threads, de sous-processus éventuellement eux-mêmes multi-threadés).

Il s'agit de l'unité d'allocation de ressources du Job. Les CPUs non utilisés par une Task seront "perdus", non-utilisables par aucune autre Task ou Step. Si la Task crée plus de processus/threads que de CPUs alloués, ces threads se partageront l'allocation.

Partition

Une Partition est un groupement logique de nœuds de calcul. Le Cluster OSIRIM est scindé en plusieurs partitions distinctes : « 48CPUNodes », « 24CPUNodes », « GPUNodes » et « RTX6000Node », chacune composée de nœuds de calcul de dimension différente. Cette séparation permet de spécialiser et optimiser chaque partition pour un type de jobs particulier.