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 threads par Task
#SBATCH --mail-type=END # Notification par email de la
#SBATCH --mail-user=prenom.nom@aniti.fr # fin de l'exécution du job.
#SBATCH --partition=CPU-Nodes
# 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 :
- Le multithreading étant activé sur les serveurs de la partition 'CPU-Nodes', le paramètre --cpus-per-task correspond au nombre de threads à allouer par task, et doit être un multiple de deux.
- 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 5120 Mo par thread demandé (soit 5 Go) pour les nœuds de calcul de la partition CPU-Nodes (4 threads donneront droit à 5120*4 = 20480 Mo ≈ 20 Go)
- Allocation RAM de 10240 Mo par CPU demandé (soit 10 Go) pour les nœuds de calcul de la partition GPU-Nodes (4 CPUs donneront droit à 10240*4 = 40960 Mo ≈ 40 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=CPU-Nodes
- 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.
[prenom.nom@cr-login-1 ~]# sbatch job.sh`