
Table des matières
Jean Zay : allocation mémoire avec Slurm sur les partitions CPU
Actuellement, les options Slurm --mem
et --mem-per-cpu
sont désactivées sur Jean Zay car elles ne permettent pas de configurer convenablement l'allocation mémoire d'un travail. Celle-ci est déterminée automatiquement à partir du nombre de CPU réservé.
Pour ajuster la quantité de mémoire allouée à votre job, il faut donc ajuster le nombre de CPU réservés par tâche (ou processus) en spécifiant l'option suivante dans vos scripts batch, ou lors d'un salloc
en mode interactif :
--cpus-per-task=... # --cpus-per-task=1 par défaut
Remarque : par défaut, --cpus-per-task=1
et la quantité de mémoire allouée est suffisante pour la plupart des travaux lancés sur les partitions CPU. La majorité des utilisateurs n'a donc pas à modifier la valeur de cette option. Cette page s'adresse aux utilisateurs qui ont un besoin en mémoire plus important.
Sur la partition cpu_p1
Les nœuds de la partition cpu_p1
donnent accès à 156 Go de mémoire utile, pour 40 cœurs CPU. L'allocation mémoire y est déterminée automatiquement à hauteur de :
- 3,9 Go par cœur CPU lorsque l'hyperthreading est désactivé (option Slurm
--hint=nomultithread
)
Par exemple, un job spécifiant --ntasks=1 --cpus-per-task=5
sur la partition cpu_p1
aura accès à 1 x 5 x 3,9 Go = 19,5 Go de mémoire si l'hyperthreading est désactivé (comptez la moitié sinon).
Sur la partition prepost
Les nœuds de la partition prepost
donnent accès à 2,88 To de mémoire utile, pour 48 cœurs CPU. L'allocation mémoire y est déterminée automatiquement à hauteur de :
- 60 Go par cœur CPU lorsque l'hyperthreading est désactivé (option Slurm
--hint=nomultithread
)
Par exemple, un job spécifiant --ntasks=1 --cpus-per-task=12
sur la partition prepost
aura accès à 1 x 12 x 60 Go = 720 Go de mémoire si l'hyperthreading est désactivé (comptez la moitié sinon).
Remarques
- Vous pouvez augmenter la valeur de
--cpus-per-task
tant que la demande ne dépasse pas la totalité de la mémoire disponible sur le nœud. Attention, les heures de calcul seront décomptées en proportion. Par exemple, en spécifiant les options--ntasks=10 --cpus-per-task=2
, 20 cœurs CPU seront réservés et donc comptabilisés pour votre travail. - Si vous réservez un nœud de calcul en exclusivité, vous avez accès à la totalité de la mémoire du nœud, indépendamment de la valeur donnée à
--cpus-per-task
. L'équivalent d'un travail sur le nœud entier vous est alors facturé. - Pour les codes OpenMP : si la valeur donnée à l'option
--cpus-per-task
ne coïncide pas avec le nombre de threads sur lequel vous souhaitez exécuter votre code, il faut spécifier la variable d'environnement :export OMP_NUM_THREADS=...
- La quantité de mémoire allouée pour votre job est visible en lançant la commande Slurm :
scontrol show job $JOBID # chercher la valeur de la variable mem
Attention, tant que le job est en queue (PENDING), Slurm estime la mémoire allouée à un job sur la base de cœurs logiques. Si vous avez réservé des cœurs physiques (avec
--hint=nomultithread
), la valeur indiquée peut donc être deux fois inférieure à la valeur attendue. Celle-ci est mise à jour et devient correcte lors du lancement du job.