This page was translated by an AI (LLM) with a cursory human check and is awaiting full review.
Running a sequential job in batch
Jobs are managed across all nodes by the Slurm software.
To submit a sequential job in batch on Jean Zay, you need to:
- Create a submission script:
- CPU example
- Quad-GPU V100 example
- Octo-GPU V100 example
- Octo-GPU A100 example
- Quad-GPU H100 example
#!/bin/bash
#SBATCH --job-name=Seq # nom du job
#SBATCH --nodes=1 # nombre de noeuds
#SBATCH --ntasks-per-node=1 # nombre de taches MPI par noeud
#SBATCH --hint=nomultithread # réservation des cœurs physiques (pas d'hyperthreading)
#SBATCH --time=00:01:00 # temps d execution maximum demande (HH:MM:SS)
#SBATCH --output=Seq%j.out # nom du fichier de sortie (%j est remplacé par le numéro du travail)
#SBATCH --error=Seq%j.out # nom du fichier d'erreur (ici en commun avec la sortie)
# on se place dans le repertoire de soumission
cd ${SLURM_SUBMIT_DIR}
# nettoyage des modules charges en interactif et herites par defaut
module purge
# chargement des modules
module load ...
# echo des commandes lancees
set -x
# execution
./seq.exe
#!/bin/bash
#SBATCH --job-name=mono_gpu # nom du job
# Il est possible d'utiliser uniquement des GPU V100 16 Go ou 32 Go
##SBATCH -C v100-16g # decommenter pour reserver uniquement des GPU V100 16 Go
##SBATCH -C v100-32g # decommenter pour reserver uniquement des GPU V100 32 Go
# Ici, reservation de 10 CPU (pour 1 tache) et d'un GPU sur un seul noeud :
#SBATCH --nodes=1 # on demande un noeud
#SBATCH --ntasks-per-node=1 # avec une tache par noeud (= nombre de GPU ici)
#SBATCH --gres=gpu:1 # nombre de GPU par noeud (max 4)
# Le nombre de CPU par tache doit etre adapte en fonction de la partition utilisee. Sachant
# qu'ici on ne reserve qu'un seul GPU (soit 1/4 des GPU du noeud), l'ideal est de reserver 1/4
# des CPU du noeud pour la seule tache :
#SBATCH --cpus-per-task=10 # nombre de CPU par tache (1/4 des CPU du noeud 4-GPU V100)
# /!\ Attention, "multithread" fait reference à l'hyperthreading dans la terminologie Slurm
#SBATCH --hint=nomultithread # hyperthreading desactive
#SBATCH --time=00:10:00 # temps maximum d'execution demande (HH:MM:SS)
#SBATCH --output=mono_gpu%j.out # nom du fichier de sortie (%j est remplacé par le numéro du travail)
#SBATCH --error=mono_gpu%j.out # nom du fichier d'erreur (ici commun avec la sortie)
# Nettoyage des modules charges en interactif et herites par defaut
module purge
# Chargement des modules
module load ...
# Echo des commandes lancees
set -x
# Le code doit etre compile avec les modules compatibles avec la partition choisie
# Execution du code
./executable_mono_gpu
# Pour lancer un script Python, il faut remplacer la dernière ligne par
# python -u script_mono_gpu.py
# L'option -u (pour unbuffered) de Python permet de désactiver la bufférisation des sorties standards
#!/bin/bash
#SBATCH --job-name=mono_gpu # nom du job
#SBATCH --partition=gpu_p2 # partition gpu_p2 : noeud octo-GPU V100 32 Go
# Ici, reservation de 3 CPU (pour 1 tache) et d'un GPU sur un seul noeud :
#SBATCH --nodes=1 # on demande un noeud
#SBATCH --ntasks-per-node=1 # avec une tache par noeud (= nombre de GPU ici)
#SBATCH --gres=gpu:1 # nombre de GPU par noeud (max 8)
# Le nombre de CPU par tache doit etre adapte en fonction de la partition utilisee. Sachant
# qu'ici on ne reserve qu'un seul GPU (soit 1/8 des GPU du noeud), l'ideal est de reserver 1/8
# des CPU du noeud pour la seule tache :
#SBATCH --cpus-per-task=3 # nombre de CPU par tache (1/8 des CPU du noeud 8-GPU V100)
# /!\ Attention, "multithread" fait reference à l'hyperthreading dans la terminologie Slurm
#SBATCH --hint=nomultithread # hyperthreading desactive
#SBATCH --time=00:10:00 # temps maximum d'execution demande (HH:MM:SS)
#SBATCH --output=mono_gpu%j.out # nom du fichier de sortie (%j est remplacé par le numéro du travail)
#SBATCH --error=mono_gpu%j.out # nom du fichier d'erreur (ici commun avec la sortie)
# Nettoyage des modules charges en interactif et herites par defaut
module purge
# Chargement des modules
module load ...
# Echo des commandes lancees
set -x
# Le code doit etre compile avec les modules compatibles avec la partition choisie
# Execution du code
./executable_mono_gpu
# Pour lancer un script Python, il faut remplacer la dernière ligne par
# python -u script_mono_gpu.py
# L'option -u (pour unbuffered) de Python permet de désactiver la bufférisation des sorties standards
#!/bin/bash
#SBATCH --job-name=mono_gpu # nom du job
#SBATCH -C a100 # partition gpu_p5 : noeud octo-GPU H100 80 Go
# Ici, reservation de 8 CPU (pour 1 tache) et d'un GPU sur un seul noeud :
#SBATCH --nodes=1 # on demande un noeud
#SBATCH --ntasks-per-node=1 # avec une tache par noeud (= nombre de GPU ici)
#SBATCH --gres=gpu:1 # nombre de GPU par noeud (max 8)
# Le nombre de CPU par tache doit etre adapte en fonction de la partition utilisee. Sachant
# qu'ici on ne reserve qu'un seul GPU (soit 1/8 des GPU du noeud), l'ideal est de reserver 1/8
#d es CPU du noeud pour la seule tache :
#SBATCH --cpus-per-task=8 # nombre de CPU par tache pour gpu_p5 (1/8 des CPU du noeud 8-GPU A100)
# /!\ Attention, "multithread" fait reference à l'hyperthreading dans la terminologie Slurm
#SBATCH --hint=nomultithread # hyperthreading desactive
#SBATCH --time=00:10:00 # temps maximum d'execution demande (HH:MM:SS)
#SBATCH --output=mono_gpu%j.out # nom du fichier de sortie (%j est remplacé par le numéro du travail)
#SBATCH --error=mono_gpu%j.out # nom du fichier d'erreur (ici commun avec la sortie)
# Nettoyage des modules charges en interactif et herites par defaut
module purge
# Activation du module permet l'accès aux modules compatibles avec la partition A100
module load arch/a100
# Chargement des modules
module load ...
# Echo des commandes lancees
set -x
# Le code doit etre compile avec les modules compatibles avec la partition choisie
# Execution du code
./executable_mono_gpu
# Pour lancer un script Python, il faut remplacer la dernière ligne par
# python -u script_mono_gpu.py
# L'option -u (pour unbuffered) de Python permet de désactiver la bufférisation des sorties standards
The modules accessible by default are not compatible with this partition,
you must first load the arch/a100 module to be able to list
and load compatible modules. To find out more, consult the section
Modules compatible with the A100 and H100 partitions.
#!/bin/bash
#SBATCH --job-name=mono_gpu # nom du job
#SBATCH -C h100 # partition gpu_p6 : noeud quadri-GPU H100 80 Go
# Ici, reservation de 24 CPU (pour 1 tache) et d'un GPU sur un seul noeud :
#SBATCH --nodes=1 # on demande un noeud
#SBATCH --ntasks-per-node=1 # avec une tache par noeud (= nombre de GPU ici)
#SBATCH --gres=gpu:1 # nombre de GPU par noeud (max 4)
# Le nombre de CPU par tache doit etre adapte en fonction de la partition utilisee. Sachant
# qu'ici on ne reserve qu'un seul GPU (soit 1/4 des GPU du noeud), l'ideal est de reserver 1/4
# des CPU du noeud pour la seule tache :
#SBATCH --cpus-per-task=24 # nombre de CPU par tache pour gpu_p6 (1/4 des CPU du noeud 4-GPU H100)
# /!\ Attention, "multithread" fait reference à l'hyperthreading dans la terminologie Slurm
#SBATCH --hint=nomultithread # hyperthreading desactive
#SBATCH --time=00:10:00 # temps maximum d'execution demande (HH:MM:SS)
#SBATCH --output=mono_gpu%j.out # nom du fichier de sortie (%j est remplacé par le numéro du travail)
#SBATCH --error=mono_gpu%j.out # nom du fichier d'erreur (ici commun avec la sortie)
# Nettoyage des modules charges en interactif et herites par defaut
module purge
# Activation du module permet l'accès aux modules compatibles avec la partition H100
module load arch/h100
# Chargement des modules
module load ...
# Echo des commandes lancees
set -x
# Le code doit etre compile avec les modules compatibles avec la partition choisie
# Execution du code
./executable_mono_gpu
# Pour lancer un script Python, il faut remplacer la dernière ligne par
# python -u script_mono_gpu.py
# L'option -u (pour unbuffered) de Python permet de désactiver la bufférisation des sorties standards
The modules accessible by default are not compatible with this partition,
you must first load the arch/h100 module to be able to list
and load compatible modules. To find out more, consult the sectionModules compatible with the A100 and H100 partitions.
- Submit this script using the
sbatchcommand:
sbatch mon_script.slurm
Notes:
- We recommend compiling and running your code in the same software environment by loading the same modules.
- The
--hint=nomultithreadoption ensures the reservation of physical cores (no hyperthreading). - The memory allocated for the job is proportional to the number of CPU cores requested. For example, if you request 1/4 of the physical CPU cores of a node, you will have access to 1/4 of its RAM memory. It is important to be consistent with the configuration of the nodes used to avoid overcharging of hours while benefiting from the memory you are entitled to. You can consult our documentation on this subject: Memory allocation with Slurm.
- In these examples, it is assumed that the executable or Python script used is located in the submission directory, i.e., the directory in which you are located when using the
sbatchcommand: the$SLURM_SUBMIT_DIRvariable is automatically set by Slurm. - The output file of the calculation will also be located in the submission directory. It is created at the beginning of the job execution; editing or modifying it during the job execution may disrupt it.
- The
module purgeis made necessary by Slurm's default behaviour: the modules you have loaded in your environment at the time you runsbatchare taken into account in the submitted job. - All jobs have resources defined by a partition and a "Quality of Service" QoS set by default in Slurm. You can modify these limits by specifying a partition and/or a QoS as indicated in our documentation detailing the partitions and QoS for CPU and GPU.
- For multi-project accounts and those with CPU and GPU hours, it is essential to specify the hour allocation on which to deduct the computing hours of the job as indicated in our documentation detailing the management of computing hours to ensure that the hours consumed by your jobs are deducted from the correct allocation.