Soumettre un job

Paramétrer sa réservation de ressources

Les réservations sur le cluster se font via le scheduler Slurm, qui met les jobs soumis en file d’attente (appelées aussi partitions) jusqu’à l’allocation des ressources.

Important : lors de la soumission d’un job, il est obligatoire de mentionner les informations suivantes :

  • le nom du projet qui vous a été attribué par le comité scientifique (avec account=<nom du projet>)
  • les ressources que vous souhaitez réserver (par défaut, 1 coeur). Vous pouvez notamment utiliser :
    • -n ou ntasks= pour le nombre de tâches (vaudra 1 tâche s’il n’est pas spécifié). Par défaut, Slurm utilisera la valeur de ntasks en considérant qu’il y a un coeur par tâche. Donc le nombre de coeurs réservés sera égal à ntasks.
    • ntasks-per-node= nombre de tâches à effectuer sur un même noeud.
    • ntasks-per-socket= nombre de tâches à effectuer sur un même processeur. Pour rappel, les noeuds des files cpucourt et cpulong disposent de 2 processeurs de 20 coeurs chacun.
    • -N ou nodes= pour le nombre de noeuds. S’il n’est pas spécifié, l’allocation se basera sur les autres options de ressources. Si vous ne spécifiez que le nombre de noeuds, avec la file cpucourt (qui n’est pas exclusive) cela réservera par défaut 1 coeur par noeud réservé. Comme la file cpulong est exclusive, si vous réservez 1 noeud, vous réservez tous ses coeurs, même si vous ne les utilisez pas tous.
  • un walltime au bout duquel votre job sera arrêté par Slurm (avec time=jj-hh:mm:ss). Le walltime de votre job doit être inférieur ou égal au walltime maximum défini pour la partition sur laquelle vous soumettez votre job (voir la description des partitions ici). Par défaut, si aucune partition n’est spécifiée, le job est envoyé dans la file cpucourt.

Attention : même si votre job n’a pas terminé son exécution une fois le walltime atteint, votre job sera automatiquement arrêté. Il vous est donc fortement recommandé de bien estimer le temps d’exécution de votre job et d’introduire des points de reprise dans votre code.

Soumettre un job

Dans un script

Commande sbatch <fichier contenant votre script>

La liste complète des options lors de la soumission d’un job est à retrouver ici.

Exemple de script nommé « myJob » qui permet d’exécuter 5 tâches (ici une tâche prendra 1 coeur). Les ressources seront réservées pendant 2 heures maximum et le job sera envoyé sur la file des jobs courts (cpucourt).

#!/bin/bash

#SBATCH --job-name=myJob
#SBATCH --output=output.txt
#SBATCH --ntasks=5
#SBATCH --time=0-02:00:00 #SBATCH --account=projectname
#SBATCH --partition=cpucourt
#SBATCH --mail-user=...@univ-cotedazur.fr
#SBATCH --mail-type=BEGIN,END,FAIL

module purge
module load ...

mes commandes pour exécuter le job ...

Bien que facultatives, les commandes mail-user et mail-type vous permettent de recevoir par e-mail des notifications sur l’état de votre job.

Les modules permettent de modifier de manière dynamique vos variables d’environnement (essentiellement PATH, LD_LIBRARY_PATH ou encore MAN_PATH) en fonction du module que vous chargez. Pour plus d’informations sur l’utilisation des modules, cliquez ici. La liste complète des modules installés sur le cluster est consultable ici.

Jobs MPI

Voir cette page.

Jobs Python

Voir cette page.

GPU

Pour les jobs utilisant le GPU, il faut obligatoirement rajouter les deux options ci-dessous, gres étant le nombre de cartes V100 à réserver (entre 1 et 4).

--gres=gpu:1
--partition=gpu

Puisque vous spécifiez le nombre de cartes avec l’option gres, vous n’avez pas à modifier la variable CUDA_VISIBLE_DEVICES (tout est géré par Slurm) et vos jobs devraient avoir accès uniquement aux GPU réservés.

En mode interactif

Si vous utilisez un logiciel avec lequel il vous est nécessaire d’interagir plutôt que de le lancer via un script, vous pouvez utiliser le mode interactif. Ce mode vous permet de lancer un shell interactif sur un nœud de calcul afin que vous puissiez directement travailler dessus.

Par exemple, pour lancer un shell interactif bash pendant 1h sur la partition cpucourt :

srun -A mon_account_Slurm -p cpucourt -t 01:00:00 --pty bash -i