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`