Soumettre un job

Pour soumettre un job sur la plateforme de calcul, vous devez disposer d’un compte calcul et vous connecter sur un serveur interactif. Trois commandes permettent la soumission de jobs.

sbatch

permet la soumission d’un script. Pour les jobs interactifs, merci de vous référer à la commande srun décrite plus bas.

% sbatch my_script.sh
sbatch: slurm_job_submit: Submission node: cca001
sbatch: slurm_job_submit: Set partition to: htc
sbatch: slurm_job_submit: Info : Partition limited to one node per job.
Submitted batch job 936607

À la soumission, des informations vous sont retournées par la commande : machine de soumission, ici cca001, la partition htc dans laquelle le job sera exécuté, ou encore l’identifiant du job 936607.

srun
permet l’allocation des ressources spécifiées, et exécute un programme ou une application. srun permet aussi l’exécution de tâches parallèles, et est en général utilisé dans un script pour lancer différentes commandes ou tâches en parallèle (jobs parallèles).

Les commandes srun et sbatch admettent les mêmes paramètres, mais l’exécution de srun n’est pas rattachée à un shell interactif, contrairement à sbatch. La principale conséquence est que les erreurs potentiellement rencontrées lors de l’exécution de srun ne seront pas remontées et transcrites dans le fichier de sortie (ce qui est le cas pour sbatch). Afin de le rattacher à un shell, on peut utiliser l’option --pty.

Note

Le répertoire de soumission du job définit le répertoire de travail. TMPDIR peut être utilisé pour le stokage de gros volumes de données, mais il n’est pas le répertoire de travail. On peut forcer Slurm à utiliser cet espace, ou un quelconque espace, comme espace de travail en utilisant l’option -D | --chdir=.

Attention

En absence d’options lors de la soumission, SLURM allouera par défaut les paramètres suivants au job :

--partition=htc
--ntasks=1
--time=7-00:00:00

Pour faciliter l’administration de la ferme de calcul, il est conseillé de déclarer une estimation approximative du temps d’exécution du job.

Principales options de sbatch

Une description succincte des principales options de sbatch est donnée ci-dessous. Pour l’ensemble des options possibles, veuillez vous référer à l’aide de la commande sbatch -h.

-n | --ntasks=
spécifie le nombre maximal de processus en parallèles lancés par le job. Par défaut il correspond au nombre de CPU alloués. Si cette option est utilisée avec srun alors la tâche sera répétée n fois.
-c | --cpus-per-task=
spécifie le nombre de cœurs par processus. Cette option doit être spécifiée si un processus parent lance des processus enfants en parallèle.
--mem=
spécifie la quantité de mémoire requise, e.g. 5G
-N | --nodes=
spécifie le nombre de serveurs de calcul requis
-L | --licenses=
spécifie les types de ressources de stockage et logicielles nécessaires au job
-p | --partition=
permet la sélection de la partition souhaitée
-t | --time=
définie une limite sur le temps d’exécution total de la tâche sur la limite maximale de 7 jours. Formats acceptés : “heures:minutes:secondes”, “jours-heures:minutes:secondes”.
-A | --account=
spécifie le groupe auquel seront imputées les ressources utilisées
-a | --array=
permet la définition d’un job tableau, le séparateur est la , pour définir une liste ou - pour définir un intervalle, e.g. array=0,6,16-32
-J | --job-name=
définit le nom du job
-D | --chdir
définit le répertoire de travail du script batch avant son exécution. Le chemin peut être spécifié comme chemin complet ou chemin relatif
-o | --output=
spécifie le nom du fichier pour la sortie standard, slurm-<jobid>.out par défaut
-e | --error=
spécifie le nom du fichier de sortie pour les erreurs
--mail-user=
spécifie l’e-mail pour la réception des notification d’intérêt, comme les changements d’état du job
--mail-type=
spécifie le type d’alerte d’intérêt reçu par e-mail

Environnement et limites

Par défaut, la variable d’environnement TMPDIR a la valeur /tmp. Pendant l’execution du job, le dossier est monté dans un dossier privé /scratch/slurm.<jobid>.<taskid>/tmp. Les données temporaires ainsi que le mapping sont supprimés à la fin du job, assurant à la fois protection des données privées et sécurité.

Important

Pour la lecture d’un gros volume de données, il est recommandé d’utiliser cet espace pour ses performances étant donné que la partition /scratch a un volume important et est sur un disque local.

Chaque groupe de calcul est limité quant au nombre de slots occupés simultanément par des jobs en cours d’exécution ; la limite dépendra de la demande de ressources annuelle du groupe. Pour connaître cette limite pour un groupe (account) donné :

% sacctmgr show assoc where account="<groupe>" user= format="Account,Grpcpus"
   Account  GrpCPUs
---------- --------
  <groupe>     2000

Lorsque cette limite est atteinte, les soumissions suivantes seront mises en attente jusqu’à ce que la completion des jobs en cours libère le nombre demandé de slots. Cepandant, si vous obtenez le message suivant à la soumission :

sbatch: error: AssocMaxSubmitJobLimit
sbatch: error: Batch job submission failed: Job violates accounting/QOS policy (job submit limit, user's size and/or time limits)

ou, lors du suivi d’un job en attente, squeue retourne :

% squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
            936551       htc littlene     user PD       0:00      1 (AssocMaxJobsLimit)

alors vous avez probablement été bloqué ! Vérifiez votre boîte e-mail ou contactez le support utilisateurs.

Allocation du CPU et de la mémoire

Sans spécification particulière à la soumission, le nombre de cœurs alloué au job sera de 1, et la mémoire associée de 3G. Ce rapport entre le nombre de cœurs et la mémoire sera conservé par Slurm avec des corrections (approximation par excès) des valeurs de ressources allouées. Des exemples :

% sbatch -n 2 --mem=4G my_script.sh
Slurm allouera bien 2 cœurs CPU, du moment que la mémoire associée résultante (2 x 3 = 6 GB) couvre la valeur demandée.
% sbatch -n 2 --mem=8G my_script.sh
Slurm allouera ici 3 cœurs CPU pour permettre à la demande de 8G de passer correctement (3 x 3 = 9 GB).

Les ressources cœurs CPU et mémoire disponibles seront limitées par les spécifications des serveurs de calcul. Pour la partition par défaut htc, par exemple, on ne pourra pas demander plus de 64 cœurs CPU ou 192 GB de mémoire.

Note

Il n’est pas nécessaire d’indiquer à la fois la mémoire et le nombre de cœurs CPU requis. Il suffit de spécifier la ressource qui fixera la valeur de la seconde.

Important

  • Dans le cas de la partition htc_highmem, 37 GB seront alloués par cœur CPU,
  • Dans le cas de la partition gpu, les ressources CPU et mémoire nécessaires seront allouées automatiquement selon le nombre de GPUs demandées.

Ressources de stockage et logicielles

Il est nécessaire de déclarer à la soumission les systèmes de stockage accédés par vos jobs, ainsi que les éventuelles licences logicielles utilisées. Cette déclaration se fait en utilisant l’option -L de la commande sbatch :

% sbatch -L sps,matlab my_script.sh

Afin de connaître les limites des ressources à déclarer, utilisez la commande scontrol :

% scontrol show lic
  • Pour obtenir la liste exhaustive des ressources nécessitant une déclaration lors de la soumission :

    % scontrol show lic | grep default
    
  • Pour connaître les limitations des ressources d’un <groupe> :

    % scontrol show lic | grep -A1 <groupe>
    

Attention

Les tags _default ou _<groupe> seront à omettre dans la declaration du sbatch.

Veuillez vous référer à la page MATLAB pour la déclaration de cette ressource logicielle.