Jean Zay : partitions Slurm GPU

Les partitions disponibles

Tous les projets DARI ou Accès Dynamique (AD) ayant des heures GPU ont à leur disposition des partitions Slurm définies sur Jean Zay.

Depuis le 8/12/2020, les projets ayant des heures GPU V100 ont accès par défaut à une nouvelle partition permettant d'utiliser tous types de nœuds accélérés quadri-GPU à 160 Go de mémoire (ce qui correspond aux anciennes partitions gpu_p1 et gpu_p3 réunies). Par défaut, le temps d'exécution est de 10 minutes et il ne peut dépasser 100 heures (soit --time=HH:MM:SS ≤ 100:00:00 c.f. ci-dessous).

Cette nouvelle partition comprenant à la fois des GPU Nvidia V100 ayant 16 Go de mémoire et des GPU Nvidia V100 ayant 32 Go de mémoire, si vous désirez vous limiter à un seul type de GPU, vous devez le spécifier en ajoutant dans vos scripts l'une des directives SLURM suivantes :

  • #SBATCH -C v100-16g # pour sélectionner des nœuds ayant des GPU à 16 Go de mémoire (i.e. gpu_p3)
  • #SBATCH -C v100-32g # pour sélectionner des nœuds ayant des GPU à 32 Go de mémoire (i.e. gpu_p1)

Si, auparavant, vous spécifiiez explicitement l'une des partitions gpu_p1 ou gpu_p3 dans vos scripts de soumission, vous devez remplacer la directive SLURM #SBATCH --partition=... correspondante par l'une des deux directives #SBATCH -C v100-... ci-dessus.

Remarque importante : Si votre travail peut s'exécuter indifféremment sur des GPU ayant 16 Go ou 32 Go de mémoire, il est préférable de ne pas cibler spécifiquement un type de nœud donné (i.e. ne pas spécifier d'option -C v100-16g ou -C v100-32g) afin de limiter le temps d'attente en queue de vos travaux.

D'autres partitions sont disponibles :

  • La partition gpu_p2 est accessible à tous les chercheurs. Elle permet de lancer des calculs sur les nœuds accélérés octo-GPU de Jean Zay. Ces nœuds sont équipés de GPU Nvidia V100 avec 32 Go de mémoire. Par défaut, le temps d'exécution est de 10 minutes et il ne peut dépasser 100 heures (soit --time=HH:MM:SS ≤ 100:00:00 c.f. ci-dessous).
    • La sous-partition gpu_p2s donne accès au nœuds octo-GPU à 360 Go de mémoire.
    • La sous-partition gpu_p2l donne accès au nœuds octo-GPU à 720 Go de mémoire.
  • La partition gpu_p5 est uniquement accessible à tous les chercheurs qui ont effectué une demande d'heures GPU A100 via les Accès Dynamiques (AD) ou les Accès Réguliers (projets DARI). Elle permet de lancer des calculs sur les 52 nœuds accélérés octo-GPU de Jean Zay qui sont équipés de GPU Nvidia A100 reliés par une interconnexion SXM4 et ayant 80 Go de mémoire par GPU. Par défaut, le temps d'exécution est de 10 minutes et il ne peut dépasser 20 heures (soit --time=HH:MM:SS ≤ 20:00:00 c.f. ci-dessous, la QoS “qos_gpu-t4” n'est donc pas utilisable avec cette partition). Pour utiliser cette partition, vous devez spécifier la directive SLURM #SBATCH -C a100 dans vos scripts.
    Attention : ces nœuds sont équipés de processeurs AMD Milan EPYC 7543 (64 cœurs par nœud) contrairement aux autres nœuds qui comportent des processeurs Intel. Il est donc nécessaire de charger le module cpuarch/amd (module load cpuarch/amd) en premier pour avoir accès aux modules compatibles avec cette partition et de recompiler vos codes.
  • La partition prepost permet de lancer un travail sur l'un des nœuds pré/post-traitement de Jean Zay jean-zay-pp, sur lesquels les calculs ne sont pas déduits de votre allocation. Par défaut, le temps d'exécution est de 2 heures et il ne peut dépasser 20 heures (soit --time=HH:MM:SS ≤ 20:00:00, c.f ci-dessous).
  • La partition visu permet de lancer un travail sur l'un des nœuds de visualisation de Jean Zay jean-zay-visu, sur lesquels les heures de calcul ne sont pas déduites de votre allocation. Par défaut, le temps d'exécution est de 10 minutes et il ne peut dépasser 4 heures (soit --time=HH:MM:SS ≤ 4:00:00 c.f. ci-dessous).
  • La partition archive est dédiée aux commandes permettant de gérer les données (copies ou déplacements de fichiers, création d'archives) : les heures de calcul ne sont pas déduites de votre allocation. Par défaut, le temps d'exécution est de 2 heures et il ne peut dépasser 20 heures (soit --time=HH:MM:SS ≤ 20:00:00 c.f. ci-dessous).
  • La partition compil est dédiée aux compilations des codes et bibliothèques qui ne peuvent se faire sur la frontale car elles requièrent trop de temps cpu : les heures de calcul ne sont pas déduites de votre allocation. Par défaut, le temps d'exécution est de 2 heures et il ne peut dépasser 20 heures (soit --time=HH:MM:SS ≤ 20:00:00 c.f. ci-dessous).

Tableau récapitulatif des accès aux partitions de calcul GPU
Type de nœud souhaité Option Slurm correspondante
CPU GPU
40 CPU + RAM 160 Go utiles 4 GPU V100 + RAM 16 ou 32 Go par défaut (sans option)
40 CPU + RAM 160 Go utiles 4 GPU V100 + RAM 16 Go -C v100-16g
40 CPU + RAM 160 Go utiles 4 GPU V100 + RAM 32 Go -C v100-32g
24 CPU + RAM 360 ou 720 Go utiles 8 GPU V100 + RAM 32 Go --partition=gpu_p2
24 CPU + RAM 360 Go utiles 8 GPU V100 + RAM 32 Go --partition=gpu_p2s
24 CPU + RAM 720 Go utiles 8 GPU V100 + RAM 32 Go --partition=gpu_p2l
64 CPU + RAM 468 Go utiles 8 GPU A100 + RAM 80 Go -C a100

Attention aux limites de temps par défaut des partitions, qui sont délibérément basses. Pour des exécutions plus longues, vous devez spécifier une limite de temps d'exécution, qui doit rester inférieure au maximum autorisé pour la partition et la Qos utilisées. Vous devez alors utiliser :

  • soit la directive Slurm #SBATCH --time=HH:MM:SS dans votre job,
  • soit l'option --time=HH:MM:SS des commandes sbatch, salloc ou srun.

La partition par défaut n'a pas besoin d'être spécifiée pour être utilisée par les travaux demandant des GPU. Par contre, toutes les autres doivent être spécifiées explicitement pour être utilisées. Par exemple, pour la partition prepost, vous pouvez utiliser :

  • soit la directive Slurm #SBATCH --partition=prepost dans votre job,
  • soit l'option --partition=prepost des commandes sbatch, salloc ou srun.

Attention : depuis le 11 octobre 2019, tout travail demandant plus d'un nœud tourne en mode exclusif : les nœuds ne sont pas partagés. En particulier, cela implique que les heures facturées sont calculées sur la base de la totalité des nœuds réquisitionnés, y compris ceux qui ne sont que partiellement exploités.
Par exemple, la réservation de 41 cœurs CPU (soit 1 nœud + 1 cœur) sur la partition cpu_p1 entraîne la facturation de 80 cœurs CPU (soit 2 nœuds). De manière analogue sur la partition GPU par défaut, la réservation de 5 GPU (soit 1 nœud quadri-GPU + 1 GPU) entraîne la facturation de 8 GPU (soit 2 nœuds quadri-GPU). Par contre, la totalité de la mémoire des nœuds réservés est disponible dans les deux cas (de l'ordre de 160 Go utiles par nœud).

Les QoS disponibles

Pour chaque job soumis sur une partition de calcul (autre que archive, compil, prepost et visu), vous pouvez spécifier une QoS (Quality of Service) qui va déterminer les limites et la priorité de votre job :

  • la QoS par défaut pour tous les travaux GPU : qos_gpu-t3
    • durée max : 20h00 de temps Elapsed,
    • 512 GPU maximum par travail,
    • 512 GPU maximum par utilisateur (tous projets confondus),
    • 512 GPU maximum par projet (tous utilisateurs confondus).
  • une QoS pour des exécutions plus longues, uniquement disponible sur les partitions V100, et qui doit être spécifiée pour être utilisée (c.f. ci-dessous) : qos_gpu-t4
    • durée max : 100h00 de temps Elapsed,
    • 16 GPU maximum par travail,
    • 96 GPU maximum par utilisateur (tous projets confondus),
    • 96 GPU maximum par projet (tous utilisateurs confondus),
    • 256 GPU maximum pour l'ensemble des travaux demandant cette QoS.
  • une QoS réservée uniquement à des exécutions brèves effectuées dans le cadre de développement des codes ou de tests d'exécutions et qui doit être spécifiée pour être utilisée (c.f. ci-dessous) : qos_gpu-dev
    • un maximum de 10 travaux (running ou pending) simultanément par utilisateur,
    • durée max : 2h00 de temps Elapsed,
    • 32 GPU maximum par travail,
    • 32 GPU maximum par utilisateur (tous projets confondus),
    • 32 GPU maximum par projet (tous utilisateurs confondus),
    • 512 GPU maximum pour l'ensemble des travaux demandant cette QoS.

Pour spécifier une QoS différente du défaut, vous pouvez au choix :

  • utiliser la directive Slurm #SBATCH --qos=qos_gpu-dev dans votre job par exemple,
  • ou spécifier l'option --qos=qos_gpu-dev aux commandes sbatch, salloc ou srun.

Tableau récapitulatif des limites sur les QoS GPU
QoS Limite en temps Limite en ressource
par job par utilisateur (tous
projets confondus)
par projet (tous
utilisateurs confondus)
par QoS
qos_gpu-t3 (défaut) 20h 512 GPU 512 GPU 512 GPU
qos_gpu-t4 (V100) 100h 16 GPU 96 GPU 96 GPU 256 GPU
qos_gpu-dev 2h 32 GPU 32 GPU
10 travaux maximum
(running ou pending)
simultanément
32 GPU 512 GPU