Exemple de Batch : Job simple
Ce premier exemple montre l'exécution d'un traitement simple (un seul Step, implicite, d'une seule Task, implicite).
Description du Job :
Encodage d'un fichier vidéo. L'encodage sera "multi-threadé" en utilisant "ffmpeg" et l'option "-threads".
Contenu du Batch (job.sh) :
# Options SBATCH :
#SBATCH --job-name=Encode-Simple # Nom du Job
#SBATCH --cpus-per-task=4 # Allocation de 4 CPUs par Task
#SBATCH --mail-type=END # Notification par email de la
#SBATCH --mail-user=bob@irit.fr # fin de l'exécution du job.
#SBATCH --partition=24CPUNodes
# Traitement
module purge # élimine de l'environnement tous les modules chargés
module load ffmpeg/0.6.5 # charge le module ffmpeg version 0.6.5
ffmpeg -i video.mp4 -threads $SLURM_CPUS_PER_TASK [...] video.mkv
Remarques :
-
Il n'est pas obligatoire de spécifier la mémoire nécessaire par CPU dans le batch. Par défaut, chaque Job dispose automatiquement d'une allocation RAM qui est variable suivant la partition utilisée :
- Allocation RAM de 8000 Mo par CPU demandé (soit 8 Go) pour les nœuds de calcul de la partition 48CPUNodes (4 CPUs donneront droit à 8000*4 = 32000 Mo ≈ 32 Go)
- Allocation RAM de 7500 Mo par CPU demandé (soit 7,5 Go) pour les nœuds de calcul de la partition 24CPUNodes (4 CPUs donneront droit à 7500*4 = 30000 Mo ≈ 30 Go)
- Allocation RAM de 9000 Mo par CPU demandé (soit 9 Go) pour les nœuds de calcul de la partition GPUNodes (4 CPUs donneront droit à 9000*4 = 36000 Mo ≈ 36 Go)
- Allocation RAM de 4500 Mo par CPU demandé (soit 4,5 Go) pour le nœud de calcul de la partition RTX6000Node (4 CPUs donneront droit à 4500*4 = 18000 Mo ≈ 18 Go)
-
L'option SBATCH "ntasks" n'est ici pas nécessaire car 1 est la valeur par défaut.
- La sélection de la partition à utiliser se fait avec l'option
SBATCH "partition" :
#SBATCH --partition=24CPUNodes
- La variable d'environnement "SLURM_CPUS_PER_TASK" contient la valeur de l'option SBATCH "cpus-per-task" et est transmise à ffmpeg de manière à toujours utiliser autant de threads pour l'encodage que de CPUs disponibles pour le Job. D'autres variables d'environnement Slurm sont disponibles ! (liste complète)
Variable d'environnement Valeur (Option #SBATCH correspondante) SLURM_JOB_PARTITION Partition utilisée (--partition) SLURM_JOB_NAME Nom du Job (Attention,contrairement aux options output/error, les variables %j%N... ne sont pas remplacées!) SLURM_NTASKS Nombre de tasks (--ntasks) SLURM_CPUS_PER_TASK Nombre de CPUs par task (--cpus-per-task) SLURM_JOB_NUM_NODES Nombre de noeuds demandés/déduits (--nodes) SLURM_JOB_NODELIST Liste des noeuds utilisés (--nodelist)
Exécution du batch :
Le Batch est transmis à Slurm via la commande \"sbatch\" qui, sauf erreur ou refus, crée un Job et le place dans la file d\'attente.
[bob@co2-slurm-client1 ~]$ sbatch job.sh`