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éen
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.
Important
Pour vous aider dans l’évaluation des parametres nécessaires pour vos jobs, veuillez vous référer au paragraphe Profilage des jobs.
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.
Voici les principales lignes directives pour les limitations de ces ressources par partition :
htc
limite le job à un seul nœud, cela implique que les limites CPU seront les limites matérielles du nœud sollicité ; la mémoire sera limité à 150 GB.htc_daemon
limite les jobs à 1 CPU et 3 GB de mémoire.htc_highmem
les limites CPU et mémoire seront les limites matérielles du nœud sollicité.
flash
a les mêmes limites de CPU et mémoire quehtc
.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
limite le job à un seul nœud. La limite de la mémoire sera calculée comme pourhtc_highmem
; 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é.
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.