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. Deux commandes permettent la soumission de jobs.

sbatch

permet la soumission d’un script. La syntaxe nécessaire pour la soumission est expliquée dans l’exemple d’un job standard.

srun

permet l’allocation des ressources spécifiées, et exécute un programme ou une application. Quand lancé en ligne de commande, srun permet l’exécution de jobs interactifs ou, si utilisé dans un script pour lancer différentes commandes (tâches multiples), il permet l’exécution de tâches parallèles.

Attention

En absence d’options indiquant le temps -t, le nombre de tâches -n ou de CPUs par tâche -c, et la mémoire --mem=, la soumission du job sera refusée.

Les limites supérieurs de ces paramètres seront discutés dans le paragraphe Limites des paramètres obligatoires.

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 (voir l’exemple des jobs interactifs).

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=.

Pour surveiller le comportement de votre job, veuillez vous référer aux commandes et outils expliqués dans le chapitre Suivi des jobs.

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 : « minutes », « minutes:secondes », « heures:minutes:secondes », « jours-heures », « jours-heures:minutes » et « 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 TMPDIR 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.

Limites des paramètres obligatoires

La limite supérieure du paramètre de temps -t dépend de la qualité de service associé à la partition utilisée.

Les limites supérieures de la mémoire --mem=, et du nombre de tâches -n ou de CPUs par tâche -c dépendent de la partition et du nœud utilisés.

Pour vous aider dans l’évaluation des parametres nécessaires pour vos jobs, veuillez vous référer au paragraphe Profilage des jobs.

Voici les principales lignes directives pour les limitations de ces ressources par partition :

htc

La partition limite le job à un seul nœud. Cela implique que les limites de mémoire et de CPU seront les limites matérielles du nœud sollicité. Dans le cas de la partition htc_highmem, la limite de mémoire sera, évidemment, bien plus élevée. La partition htc_daemon limite les jobs à 1 CPU et 3 GB de mémoire.

flash

La partition a les mêmes limites de CPU et mémoire que la htc.

hpc

Dans cette partition le job peut « déborder » sur plusieurs nœuds. Les limites de mémoire et de CPU seront donc la totalité des CPU et de la mémoire disponible sur la plateforme HPC.

gpu

La partition limite le job à un seul nœud. La limite de la mémoire sera calculée comme pour la htc; en revanche, la limite du nombre de CPU est strictement liée au nombre de GPU demandés et dépend du plus faible rapport CPU/GPU de la plateforme GPU (lié au type et à la configuration du matériel correspondant).

Si, par exemple, un nœud de la plateforme a un rapport de 4 CPU pour chaque GPU, et un autre a un rapport de 5, la limite maximale sera de 4 CPU pour chaque GPU demandé.

Pour une vue d’ensemble des ressources disponibles et de leurs limites, veuillez faire référence à la page Informations sur les ressources de la plateforme de calcul.

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. Pour un exemple de syntaxe, veuillez vous referer à l’exemple d’un job standard.

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.