Running jobs/fr: Difference between revisions

Jump to navigation Jump to search
Updating to match new version of source page
No edit summary
(Updating to match new version of source page)
Line 4: Line 4:
Si vous n'avez jamais travaillé sur une grappe partagée de grande taille, nous vous recommandons de lire d'abord [[What_is_a_scheduler%3F/fr|Qu'est-ce qu'un ordonnanceur?]]
Si vous n'avez jamais travaillé sur une grappe partagée de grande taille, nous vous recommandons de lire d'abord [[What_is_a_scheduler%3F/fr|Qu'est-ce qu'un ordonnanceur?]]


<div class="mw-translate-fuzzy">
{{box|'''Toutes les tâches doivent être soumises via l'ordonnanceur.'''
{{box|'''Toutes les tâches doivent être soumises via l'ordonnanceur.'''
<br>  
<br>  
Les seules exceptions sont pour les tâches de compilation et autres tâches qui devraient utiliser moins de 10 minutes de temps CPU et moins de 4Go de mémoire vive.  Ces tâches peuvent être exécutées sur un nœud frontal.
Les seules exceptions sont pour les tâches de compilation et autres tâches qui devraient utiliser moins de 10 minutes de temps CPU et moins de 4Go de mémoire vive.  Ces tâches peuvent être exécutées sur un nœud frontal.
Aucun processus ne doit être exécuté sur un nœud de calcul sans d’abord avoir été traité par l’ordonnanceur.}}
Aucun processus ne doit être exécuté sur un nœud de calcul sans d’abord avoir été traité par l’ordonnanceur.}}
</div>


L'ordonnancement des tâches se fait à l'aide de   
L'ordonnancement des tâches se fait à l'aide de   
Line 32: Line 34:
}}
}}


<div class="mw-translate-fuzzy">
Sur les superordinateurs d'usage général, cette tâche réserve un (1) cœur et 256Mo de mémoire pendant 15 minutes. Sur [[Niagara/fr|Niagara]], la tâche réserve le nœud entier avec toute sa mémoire.
Sur les superordinateurs d'usage général, cette tâche réserve un (1) cœur et 256Mo de mémoire pendant 15 minutes. Sur [[Niagara/fr|Niagara]], la tâche réserve le nœud entier avec toute sa mémoire.
Les directives (ou ''options'') comprises dans le script ont le préfixe <code>#SBATCH</code> et doivent précéder toutes les commandes exécutables. La [https://slurm.schedmd.com/sbatch.html page sbatch] décrit toutes les directives disponibles. Pour chaque tâche, notre politique demande de fournir au moins une durée (<code>--time</code>) et un nom de compte (<code>--account</code>); voyez la section [[Running jobs/fr#Comptes_et_projets|Comptes et projets]] ci-après.
Les directives (ou ''options'') comprises dans le script ont le préfixe <code>#SBATCH</code> et doivent précéder toutes les commandes exécutables. La [https://slurm.schedmd.com/sbatch.html page sbatch] décrit toutes les directives disponibles. Pour chaque tâche, notre politique demande de fournir au moins une durée (<code>--time</code>) et un nom de compte (<code>--account</code>); voyez la section [[Running jobs/fr#Comptes_et_projets|Comptes et projets]] ci-après.
</div>


Les directives peuvent aussi être des arguments en ligne de commande pour  <code>sbatch</code>. Par exemple,
Les directives peuvent aussi être des arguments en ligne de commande pour  <code>sbatch</code>. Par exemple,
Line 43: Line 47:
=== Mémoire ===
=== Mémoire ===


<div class="mw-translate-fuzzy">
La quantité de mémoire peut être demandée avec <code>--mem-per-cpu</code> (mémoire par cœur) ou <code>--mem</code> (mémoire par nœud). Avec les grappes d'usage général, 256Mo par cœur sont alloués par défaut. Avec [[Niagara/fr|Niagara]], il n'est pas nécessaire de spécifier la quantité de mémoire car seuls les nœuds entiers sont alloués avec toute la mémoire disponible.
La quantité de mémoire peut être demandée avec <code>--mem-per-cpu</code> (mémoire par cœur) ou <code>--mem</code> (mémoire par nœud). Avec les grappes d'usage général, 256Mo par cœur sont alloués par défaut. Avec [[Niagara/fr|Niagara]], il n'est pas nécessaire de spécifier la quantité de mémoire car seuls les nœuds entiers sont alloués avec toute la mémoire disponible.
</div>


<div class="mw-translate-fuzzy">
Une source commune de confusion est qu'une certaine quantité de la mémoire du nœud n'est pas disponible pour la tâche, étant réservée pour le système d'exploitation, etc.  Chaque type de nœud a donc une quantité maximum à la disposition des tâches; par exemple, les nœuds de 128Go sont configurés de façon à offrir 125Go pour l'exécution des tâches soumises. Si vous demandez plus que cette quantité, votre tâche devra être exécutée avec des nœuds de plus de mémoire qui pourraient être moins nombreux.
Une source commune de confusion est qu'une certaine quantité de la mémoire du nœud n'est pas disponible pour la tâche, étant réservée pour le système d'exploitation, etc.  Chaque type de nœud a donc une quantité maximum à la disposition des tâches; par exemple, les nœuds de 128Go sont configurés de façon à offrir 125Go pour l'exécution des tâches soumises. Si vous demandez plus que cette quantité, votre tâche devra être exécutée avec des nœuds de plus de mémoire qui pourraient être moins nombreux.
</div>


<div class="mw-translate-fuzzy">
Pour compliquer davantage, K, M, G, etc. sont interprétés par Slurm comme étant des [https://fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire préfixes binaires]; ainsi <code>--mem=125G</code> équivaut à <code>--mem=128000M</code>. La quantité de mémoire que vous pouvez demander est indiquée dans le tableau ''Caractéristiques des nœuds'' pour [[Béluga#Caractéristiques_des_nœuds|Béluga]], [[Cedar/fr#Caractéristiques_des_nœuds|Cedar]], [[Graham/fr#Caractéristiques_des_nœuds|Graham]] et [[Narval#Caractéristiques_des_nœuds|Narval]].
Pour compliquer davantage, K, M, G, etc. sont interprétés par Slurm comme étant des [https://fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire préfixes binaires]; ainsi <code>--mem=125G</code> équivaut à <code>--mem=128000M</code>. La quantité de mémoire que vous pouvez demander est indiquée dans le tableau ''Caractéristiques des nœuds'' pour [[Béluga#Caractéristiques_des_nœuds|Béluga]], [[Cedar/fr#Caractéristiques_des_nœuds|Cedar]], [[Graham/fr#Caractéristiques_des_nœuds|Graham]] et [[Narval#Caractéristiques_des_nœuds|Narval]].
</div>


==Lister les tâches avec <code>squeue</code> ou <code>sq</code>==
==Lister les tâches avec <code>squeue</code> ou <code>sq</code>==


<div class="mw-translate-fuzzy">
La commande utilisée pour vérifier le statut des tâches Slurm est <code>squeue</code>; par défaut, elle fournit l'information sur '''toutes''' les tâches. La forme courte <code>sq</code> ne listera que vos propres tâches.
La commande utilisée pour vérifier le statut des tâches Slurm est <code>squeue</code>; par défaut, elle fournit l'information sur '''toutes''' les tâches. La forme courte <code>sq</code> ne listera que vos propres tâches.
</div>


<source lang="bash">
<source lang="bash">
Line 60: Line 72:
</source>
</source>


En sortie, la colonne ST montre l'état de chaque tâche. Les états les plus communs sont PD (''pending'') pour en attente, et R (''running'') pour en cours.  
<div class="mw-translate-fuzzy">
En sortie, la colonne ST montre l'état de chaque tâche. Les états les plus communs sont PD (''pending'') pour en attente, et R (''running'') pour en cours.
</div>


Pour plus d'information sur les résultats fournis par <code>sq</code> et <code>squeue</code>, et comment modifier les résultats, consultez la [https://slurm.schedmd.com/squeue.html documentation pour squeue]. <code>sq</code> est une commande créée pour nos environnements.
Pour plus d'information sur les résultats fournis par <code>sq</code> et <code>squeue</code>, et comment modifier les résultats, consultez la [https://slurm.schedmd.com/squeue.html documentation pour squeue]. <code>sq</code> est une commande créée pour nos environnements.


<div class="mw-translate-fuzzy">
'''N'exécutez pas''' à plusieurs reprises et à de courts intervalles les commandes <code>squeue</code> ou <code>sq</code> à partir d'un script ou d'une application. Ceci surcharge Slurm et risque fort de nuire à sa performance ou à son bon fonctionnement. Pour savoir quand une tâche commence et se termine, voyez plutôt [[Running jobs/fr#Obtenir_des_renseignements_par_courriel | Obtenir des renseignements par courriel]] ci-dessous.
'''N'exécutez pas''' à plusieurs reprises et à de courts intervalles les commandes <code>squeue</code> ou <code>sq</code> à partir d'un script ou d'une application. Ceci surcharge Slurm et risque fort de nuire à sa performance ou à son bon fonctionnement. Pour savoir quand une tâche commence et se termine, voyez plutôt [[Running jobs/fr#Obtenir_des_renseignements_par_courriel | Obtenir des renseignements par courriel]] ci-dessous.
</div>


==Enregistrer le résultat==
==Enregistrer le résultat==


<div class="mw-translate-fuzzy">
Par défaut, le résultat est écrit dans un fichier dont le nom commence par ''slurm-'', suivi de l'ID de la tâche et du suffixe ''.out'', par exemple <code>slurm-123456.out</code>. La présence de l'ID dans le nom du fichier s'avère pratique pour le débogage. Le fichier est placé dans le répertoire à partir duquel la tâche a été soumise.
Par défaut, le résultat est écrit dans un fichier dont le nom commence par ''slurm-'', suivi de l'ID de la tâche et du suffixe ''.out'', par exemple <code>slurm-123456.out</code>. La présence de l'ID dans le nom du fichier s'avère pratique pour le débogage. Le fichier est placé dans le répertoire à partir duquel la tâche a été soumise.
</div>




Line 78: Line 96:
==Comptes et projets==
==Comptes et projets==


<div class="mw-translate-fuzzy">
Chaque tâche doit être associée à un nom de compte correspondant à un [[Frequently_Asked_Questions_about_the_CCDB/fr#Qu.27est-ce_qu.27un_RAP.3F|RAP (pour ''Resource Allocation Project'']]). Si vous êtes membre d'un seul compte, l'ordonnanceur associe automatiquement vos tâches à ce compte.
Chaque tâche doit être associée à un nom de compte correspondant à un [[Frequently_Asked_Questions_about_the_CCDB/fr#Qu.27est-ce_qu.27un_RAP.3F|RAP (pour ''Resource Allocation Project'']]). Si vous êtes membre d'un seul compte, l'ordonnanceur associe automatiquement vos tâches à ce compte.
</div>


Si vous recevez un des messages suivants en soumettant une tâche, vous avez accès à plus d'un compte.
Si vous recevez un des messages suivants en soumettant une tâche, vous avez accès à plus d'un compte.
Line 94: Line 114:
  #SBATCH --account=def-user-ab
  #SBATCH --account=def-user-ab


<div class="mw-translate-fuzzy">
Pour connaître le nom du compte correspondant à un projet,  
Pour connaître le nom du compte correspondant à un projet,  
connectez-vous à [https://ccdb.computecanada.ca CCDB]  
connectez-vous à [https://ccdb.computecanada.ca CCDB]  
Line 99: Line 120:
contient la chaîne de caractères à utiliser avec la directive <code>--account</code>. Sachez qu'un projet qui a reçu une allocation de ressources   
contient la chaîne de caractères à utiliser avec la directive <code>--account</code>. Sachez qu'un projet qui a reçu une allocation de ressources   
peut être associé à une grappe en particulier (ou à un groupe de grappes) et qu'il se peut
peut être associé à une grappe en particulier (ou à un groupe de grappes) et qu'il se peut
qu'il ne puisse être transféré de cette grappe à une autre.  
qu'il ne puisse être transféré de cette grappe à une autre.
</div>


Dans l'exemple suivant, les tâches soumises par <code>--account=def-fuenma</code> seront attribuées à zhf-914-aa.
Dans l'exemple suivant, les tâches soumises par <code>--account=def-fuenma</code> seront attribuées à zhf-914-aa.
Line 106: Line 128:
<br clear=all> <!-- This is to prevent the next section from filling to the right of the image. -->
<br clear=all> <!-- This is to prevent the next section from filling to the right of the image. -->


<div class="mw-translate-fuzzy">
Si vous prévoyez utiliser toujours le même compte pour toutes les tâches, vous trouverez utile de définir les variables d'environnement suivantes dans votre fichier <code>~/.bashrc</code>&nbsp;:  
Si vous prévoyez utiliser toujours le même compte pour toutes les tâches, vous trouverez utile de définir les variables d'environnement suivantes dans votre fichier <code>~/.bashrc</code>&nbsp;:  
  export SLURM_ACCOUNT=def-someuser
  export SLURM_ACCOUNT=def-someuser
Line 111: Line 134:
  export SALLOC_ACCOUNT=$SLURM_ACCOUNT
  export SALLOC_ACCOUNT=$SLURM_ACCOUNT
Slurm utilisera dans le script la valeur de <code>SBATCH_ACCOUNT</code> plutôt que la directive <code>--account</code>. Même si vous spécifiez un nom de compte dans le script, '''la variable d'environnement a priorité'''. Pour remplacer la variable d'environnement, il faut fournir un nom de compte comme argument en ligne de commande avec <code>sbatch</code>.
Slurm utilisera dans le script la valeur de <code>SBATCH_ACCOUNT</code> plutôt que la directive <code>--account</code>. Même si vous spécifiez un nom de compte dans le script, '''la variable d'environnement a priorité'''. Pour remplacer la variable d'environnement, il faut fournir un nom de compte comme argument en ligne de commande avec <code>sbatch</code>.
</div>


<code>SLURM_ACCOUNT</code> joue le même rôle que <code>SBATCH_ACCOUNT</code>, mais pour la commande <code>srun</code> plutôt que <code>sbatch</code>. Il en est de même pour <code>SALLOC_ACCOUNT</code>.
<code>SLURM_ACCOUNT</code> joue le même rôle que <code>SBATCH_ACCOUNT</code>, mais pour la commande <code>srun</code> plutôt que <code>sbatch</code>. Il en est de même pour <code>SALLOC_ACCOUNT</code>.
Line 116: Line 140:
== Exemples de scripts ==
== Exemples de scripts ==


<div class="mw-translate-fuzzy">
===Tâches séquentielles===
===Tâches séquentielles===
Une tâche séquentielle est une tâche qui ne nécessite qu'un seul cœur. Il s'agit du type de tâche le plus simple dont un exemple se trouve ci-dessus dans la section [[#Soumettre_des_tâches_avec_sbatch|Soumettre des tâches avec sbatch]].
Une tâche séquentielle est une tâche qui ne nécessite qu'un seul cœur. Il s'agit du type de tâche le plus simple dont un exemple se trouve ci-dessus dans la section [[#Soumettre_des_tâches_avec_sbatch|Soumettre des tâches avec sbatch]].
</div>


<div class="mw-translate-fuzzy">
=== Lot de tâches  ===  
=== Lot de tâches  ===  
Un lot de tâches (''task array'' ou ''array job'') sert à soumettre un ensemble de tâches à l'aide d'une seule commande. Chacune des tâches du lot se distingue par la variable d'environnement <code>$SLURM_ARRAY_TASK_ID</code> comportant une valeur distincte pour chaque instance de la tâche. L'exemple suivant crée 10 tâches avec <code>$SLURM_ARRAY_TASK_ID</code> ayant les valeurs de 1 à 10 :
Un lot de tâches (''task array'' ou ''array job'') sert à soumettre un ensemble de tâches à l'aide d'une seule commande. Chacune des tâches du lot se distingue par la variable d'environnement <code>$SLURM_ARRAY_TASK_ID</code> comportant une valeur distincte pour chaque instance de la tâche. L'exemple suivant crée 10 tâches avec <code>$SLURM_ARRAY_TASK_ID</code> ayant les valeurs de 1 à 10 :
</div>


{{File
{{File
Line 133: Line 161:
}}
}}


<div class="mw-translate-fuzzy">
Voyez d'autres exemples à la page [[Job arrays/fr|Vecteurs de tâches]] et la documentation détaillée [https://slurm.schedmd.com/job_array.html Slurm de SchedMD.com].
Voyez d'autres exemples à la page [[Job arrays/fr|Vecteurs de tâches]] et la documentation détaillée [https://slurm.schedmd.com/job_array.html Slurm de SchedMD.com].
</div>


=== Tâche multifil ou tâche OpenMP ===  
=== Tâche multifil ou tâche OpenMP ===  
Line 177: Line 207:
Pour des informations et des exemples d'ordonnancement sur les ressources GPU, consultez [[Using GPUs with Slurm/fr|Ordonnancement Slurm des tâches avec GPU]].
Pour des informations et des exemples d'ordonnancement sur les ressources GPU, consultez [[Using GPUs with Slurm/fr|Ordonnancement Slurm des tâches avec GPU]].


<div class="mw-translate-fuzzy">
== Tâches interactives ==
== Tâches interactives ==
Si la soumission de tâches en lot est la façon la plus efficace d'utiliser les grappes de Calcul Canada, il est cependant possible de soumettre des tâches interactivement,  ce qui peut s'avérer utile pour&nbsp;:
Si la soumission de tâches en lot est la façon la plus efficace d'utiliser les grappes de Calcul Canada, il est cependant possible de soumettre des tâches interactivement,  ce qui peut s'avérer utile pour&nbsp;:
Line 182: Line 213:
* l'utilisation des outils de console interactifs de R et iPython;
* l'utilisation des outils de console interactifs de R et iPython;
* les projets intensifs de développement, de débogage ou de compilation.
* les projets intensifs de développement, de débogage ou de compilation.
</div>


Pour démarrer une session interactive sur un nœud de calcul, utilisez [https://slurm.schedmd.com/salloc.html salloc]. Dans l'exemple suivant, nous avons deux tâches sur deux cœurs CPU et 3Go de mémoire, pour une durée d'une heure.
Pour démarrer une session interactive sur un nœud de calcul, utilisez [https://slurm.schedmd.com/salloc.html salloc]. Dans l'exemple suivant, nous avons deux tâches sur deux cœurs CPU et 3Go de mémoire, pour une durée d'une heure.
Line 190: Line 222:
  salloc: Relinquishing job allocation 1234567
  salloc: Relinquishing job allocation 1234567


<div class="mw-translate-fuzzy">
Il est aussi possible d'exécuter des applications graphiques en mode interactif sur un nœud de calcul en ajoutant l'indicateur '''--x11''' à la commande <code>salloc</code>. Pour ce faire, il faut d'abord activer la redirection X11 (''Enable X11 forwarding''); consultez la page [[SSH/fr|SSH]]. Prenez note qu'une tâche interactive d'une durée de moins de trois (3) heures est susceptible d'être lancée peu de temps après sa soumission puisque nous leur avons dédié des nœuds de test. Les tâches de plus de trois (3) heures sont exécutées sur les nœuds réguliers d'une grappe et peuvent être en attente pour plusieurs heures et même plusieurs jours avant d'être lancées à un moment imprévisible et possiblement inopportun.
Il est aussi possible d'exécuter des applications graphiques en mode interactif sur un nœud de calcul en ajoutant l'indicateur '''--x11''' à la commande <code>salloc</code>. Pour ce faire, il faut d'abord activer la redirection X11 (''Enable X11 forwarding''); consultez la page [[SSH/fr|SSH]]. Prenez note qu'une tâche interactive d'une durée de moins de trois (3) heures est susceptible d'être lancée peu de temps après sa soumission puisque nous leur avons dédié des nœuds de test. Les tâches de plus de trois (3) heures sont exécutées sur les nœuds réguliers d'une grappe et peuvent être en attente pour plusieurs heures et même plusieurs jours avant d'être lancées à un moment imprévisible et possiblement inopportun.
</div>


== Suivi des tâches ==
== Suivi des tâches ==
Line 208: Line 242:
  $ scontrol show job -dd <jobid>
  $ scontrol show job -dd <jobid>


'''N'exécutez pas''' la commande <code>squeue</code> à plusieurs reprises et à de courts intervalles à partir d'un script ou d'une application. Cette commande surcharge Slurm et risque fort de nuire à sa performance ou à son bon fonctionnement.  
<div class="mw-translate-fuzzy">
'''N'exécutez pas''' la commande <code>squeue</code> à plusieurs reprises et à de courts intervalles à partir d'un script ou d'une application. Cette commande surcharge Slurm et risque fort de nuire à sa performance ou à son bon fonctionnement.
</div>


==== Obtenir des renseignements par courriel ====
==== Obtenir des renseignements par courriel ====
Line 219: Line 255:
==== Résultats en mémoire tampon ====
==== Résultats en mémoire tampon ====


<div class="mw-translate-fuzzy">
Normalement, les résultats d'une tâche non interactive sont mis en mémoire tampon (''buffered''), ce qui veut dire qu'il y a habituellement un temps d'attente entre le moment où les données de la tâche sont enregistrées et celui où vous pouvez voir les résultats dans un nœud de connexion. Ce temps d'attente dépend de l'application que vous utilisez et de la charge exercée sur le système de fichiers; il peut varier de moins d'une seconde à jusqu'à ce que la tâche se termine.
Normalement, les résultats d'une tâche non interactive sont mis en mémoire tampon (''buffered''), ce qui veut dire qu'il y a habituellement un temps d'attente entre le moment où les données de la tâche sont enregistrées et celui où vous pouvez voir les résultats dans un nœud de connexion. Ce temps d'attente dépend de l'application que vous utilisez et de la charge exercée sur le système de fichiers; il peut varier de moins d'une seconde à jusqu'à ce que la tâche se termine.
</div>


<div class="mw-translate-fuzzy">
Il existe des façons de réduire ou même d'éliminer ce temps d'attente, mais elles ne sont pas recommandées parce que l'utilisation de la mémoire tampon assure la bonne performance générale du système de fichiers. Si vous avez besoin de faire le suivi des résultats d'une tâche ''en temps réel'', utilisez plutôt une [[#Tâches_interactives|tâche interactive]] comme décrit ci-dessus.
Il existe des façons de réduire ou même d'éliminer ce temps d'attente, mais elles ne sont pas recommandées parce que l'utilisation de la mémoire tampon assure la bonne performance générale du système de fichiers. Si vous avez besoin de faire le suivi des résultats d'une tâche ''en temps réel'', utilisez plutôt une [[#Tâches_interactives|tâche interactive]] comme décrit ci-dessus.
</div>


=== Tâches terminées ===
=== Tâches terminées ===
Line 266: Line 306:
Les processus lancés avec <code>srun</code> partagent les ressources utilisées par la tâche en question. Il faut donc éviter de lancer des processus qui utiliseraient les ressources au détriment de la tâche. Dans les cas où les processus utilisent trop de ressources, la tâche pourrait être arrêtée; le fait d'utiliser trop de cycles CPU ralentit une tâche.
Les processus lancés avec <code>srun</code> partagent les ressources utilisées par la tâche en question. Il faut donc éviter de lancer des processus qui utiliseraient les ressources au détriment de la tâche. Dans les cas où les processus utilisent trop de ressources, la tâche pourrait être arrêtée; le fait d'utiliser trop de cycles CPU ralentit une tâche.


<div class="mw-translate-fuzzy">
'''Note ː''' Dans les exemples précédents, <code>srun</code> fonctionne uniquement sur des tâches soumises avec <code>sbatch</code>. Pour faire le suivi d'une tâche interactive, ouvrez plusieurs fenêtres avec <code>tmux</code> et démarrez les processus dans des fenêtres distinctes.
'''Note ː''' Dans les exemples précédents, <code>srun</code> fonctionne uniquement sur des tâches soumises avec <code>sbatch</code>. Pour faire le suivi d'une tâche interactive, ouvrez plusieurs fenêtres avec <code>tmux</code> et démarrez les processus dans des fenêtres distinctes.
</div>


== Annuler une tâche ==
== Annuler une tâche ==
Line 281: Line 323:
==Resoumettre une tâche pour un calcul de longue durée==
==Resoumettre une tâche pour un calcul de longue durée==


<div class="mw-translate-fuzzy">
Pour les calculs nécessitant une durée plus longue que la limite de temps du système, l'application doit pouvoir gérer des [[Points_de_contr%C3%B4le|points de contrôle]]
Pour les calculs nécessitant une durée plus longue que la limite de temps du système, l'application doit pouvoir gérer des [[Points_de_contr%C3%B4le|points de contrôle]]
(''checkpointing''). Elle doit aussi permettre la sauvegarde de son état intégral dans un fichier de point de contrôle (''checkpoint file'') et pouvoir redémarrer et poursuivre le calcul à partir du dernier état.  
(''checkpointing''). Elle doit aussi permettre la sauvegarde de son état intégral dans un fichier de point de contrôle (''checkpoint file'') et pouvoir redémarrer et poursuivre le calcul à partir du dernier état.
</div>


Plusieurs utilisateurs auront peu d'occasions de redémarrer un calcul, et ceci peut se faire manuellement. Dans certains cas cependant, des redémarrages fréquents sont requis et une certaine forme d'automatisation peut être appliquée.  
Plusieurs utilisateurs auront peu d'occasions de redémarrer un calcul, et ceci peut se faire manuellement. Dans certains cas cependant, des redémarrages fréquents sont requis et une certaine forme d'automatisation peut être appliquée.  


<div class="mw-translate-fuzzy">
Les deux méthodes recommandées sont  
Les deux méthodes recommandées sont  
* l'utilisation de vecteurs de tâches (''job arrays'') Slurm;
* l'utilisation de vecteurs de tâches (''job arrays'') Slurm;
* la resoumission à partir de la fin du script.
* la resoumission à partir de la fin du script.
</div>


Consultez l'information sur le [[Tutoriel_Apprentissage_machine#Morcellement_d'une_longue_tâche | morcellement d'une longue tâche]] dans notre [[Tutoriel Apprentissage machine|tutoriel en apprentissage machine]].
Consultez l'information sur le [[Tutoriel_Apprentissage_machine#Morcellement_d'une_longue_tâche | morcellement d'une longue tâche]] dans notre [[Tutoriel Apprentissage machine|tutoriel en apprentissage machine]].
Line 385: Line 431:
}}
}}


<div class="mw-translate-fuzzy">
'''Remarque ː''' Le test servant à déterminer s'il faut soumettre une seconde tâche (<code>work_should_continue</code> dans notre exemple) doit être un ''test positif''. Vous pourriez être tenté de vérifier l'existence d'une condition d'arrêt (par exemple, la rencontre d'un critère de convergence) et soumettre une seconde tâche si la condition ''n'est pas détectée''. Cependant, si une erreur inattendue survient, la condition d'arrêt pourrait ne pas être repérée et la séquence de tâche se poursuivrait indéfiniment.
'''Remarque ː''' Le test servant à déterminer s'il faut soumettre une seconde tâche (<code>work_should_continue</code> dans notre exemple) doit être un ''test positif''. Vous pourriez être tenté de vérifier l'existence d'une condition d'arrêt (par exemple, la rencontre d'un critère de convergence) et soumettre une seconde tâche si la condition ''n'est pas détectée''. Cependant, si une erreur inattendue survient, la condition d'arrêt pourrait ne pas être repérée et la séquence de tâche se poursuivrait indéfiniment.
</div>


<div class="mw-translate-fuzzy">
== Automatiser la soumission de tâches ==
== Automatiser la soumission de tâches ==
Comme nous l'avons déjà mentionné, [[Running jobs/fr#Lot_de_tâches|les lots de tâches]] peuvent être utilisés pour automatiser la soumission des tâches. Nous offrons quelques autres outils plus avancés pour l'exécution d'un grand nombre de tâches séquentielles, parallèles ou utilisant des GPU. Ces outils appliquent une technique nommée ''farming'', ''serial farming'' ou ''task farming'' qui se traduit par ''grappe de serveurs'' et parfois ''ferme de serveurs'' ou ''ferme de calcul''.  En plus d'automatiser le flux du travail, ces outils améliorent l'efficacité du traitement en regroupant plusieurs petites tâches de calcul pour créer moins de tâches, mais qui ont des durées plus longues.
Comme nous l'avons déjà mentionné, [[Running jobs/fr#Lot_de_tâches|les lots de tâches]] peuvent être utilisés pour automatiser la soumission des tâches. Nous offrons quelques autres outils plus avancés pour l'exécution d'un grand nombre de tâches séquentielles, parallèles ou utilisant des GPU. Ces outils appliquent une technique nommée ''farming'', ''serial farming'' ou ''task farming'' qui se traduit par ''grappe de serveurs'' et parfois ''ferme de serveurs'' ou ''ferme de calcul''.  En plus d'automatiser le flux du travail, ces outils améliorent l'efficacité du traitement en regroupant plusieurs petites tâches de calcul pour créer moins de tâches, mais qui ont des durées plus longues.
</div>


Les outils suivants sont disponibles sur nos grappes&nbsp;:
Les outils suivants sont disponibles sur nos grappes&nbsp;:
Line 425: Line 475:
Remarquez qu'une tâche qui aurait obtenu un nœud entier de type Skylake avec par exemple <code>#SBATCH --cpus-per-task=32</code> partagerait les 16 cœurs CPU restants avec une autre tâche; pour réserver le nœud entier, il faut demander les 48 cœurs ou ajouter l'option <code>#SBATCH --constraint=broadwell</code> au script de la tâche.  
Remarquez qu'une tâche qui aurait obtenu un nœud entier de type Skylake avec par exemple <code>#SBATCH --cpus-per-task=32</code> partagerait les 16 cœurs CPU restants avec une autre tâche; pour réserver le nœud entier, il faut demander les 48 cœurs ou ajouter l'option <code>#SBATCH --constraint=broadwell</code> au script de la tâche.  


<div class="mw-translate-fuzzy">
''N'utilisez pas cette option si vous n'êtes pas certain que votre tâche requiert une architecture particulière.'' Les tâches pour lesquelles aucune architecture particulière n'est spécifiée sont dirigées sur les nœuds Broadwell ou Skylake et sont généralement exécutées plus tôt.
''N'utilisez pas cette option si vous n'êtes pas certain que votre tâche requiert une architecture particulière.'' Les tâches pour lesquelles aucune architecture particulière n'est spécifiée sont dirigées sur les nœuds Broadwell ou Skylake et sont généralement exécutées plus tôt.
</tab>
</tab>
</div>


<tab name="Graham">
<tab name="Graham">
Line 448: Line 500:
== Dépannage ==
== Dépannage ==


<div class="mw-translate-fuzzy">
==== Pour éviter les caractères cachés ====
==== Pour éviter les caractères cachés ====
Le fait d'utiliser un logiciel de traitement de texte plutôt qu'un éditeur de texte peut causer des problèmes à vos scripts. En travaillant sur la grappe directement, il est préférable d'utiliser un éditeur comme nano, vim ou emacs. Si vous préparez vos scripts hors ligne,
Le fait d'utiliser un logiciel de traitement de texte plutôt qu'un éditeur de texte peut causer des problèmes à vos scripts. En travaillant sur la grappe directement, il est préférable d'utiliser un éditeur comme nano, vim ou emacs. Si vous préparez vos scripts hors ligne,
Line 455: Line 508:
* '''sous Mac'''
* '''sous Mac'''
** dans une fenêtre de terminal, utilisez un éditeur comme nano, vim ou emacs
** dans une fenêtre de terminal, utilisez un éditeur comme nano, vim ou emacs
</div>


<div class="mw-translate-fuzzy">
==== Annulation de tâches dont les conditions de dépendance ne sont pas satisfaites ====
==== Annulation de tâches dont les conditions de dépendance ne sont pas satisfaites ====
Une tâche dépendante soumise avec <code>--dependency=afterok:<jobid></code> attend que la tâche parent soit terminée avant de s'exécuter. Si la tâche parent s'arrête avant sa fin (c'est-à-dire qu'elle produit un code de sortie non nul), la tâche dépendante ne sera jamais exécutée et elle est automatiquement annulée. Pour plus d'information sur la dépendance, voir [https://slurm.schedmd.com/sbatch.html sbatch].
Une tâche dépendante soumise avec <code>--dependency=afterok:<jobid></code> attend que la tâche parent soit terminée avant de s'exécuter. Si la tâche parent s'arrête avant sa fin (c'est-à-dire qu'elle produit un code de sortie non nul), la tâche dépendante ne sera jamais exécutée et elle est automatiquement annulée. Pour plus d'information sur la dépendance, voir [https://slurm.schedmd.com/sbatch.html sbatch].
</div>


==== Module non chargé par une tâche ====
==== Module non chargé par une tâche ====
Line 504: Line 560:
</source>
</source>


<div class="mw-translate-fuzzy">
Pour résoudre ce problème, ajoutez au script la ligne <code>module load nixpkgs/16.09 intel/2016.4 openmpi/2.1.1</code> avant de charger quantumespresso/6.1
Pour résoudre ce problème, ajoutez au script la ligne <code>module load nixpkgs/16.09 intel/2016.4 openmpi/2.1.1</code> avant de charger quantumespresso/6.1
</div>


==== Propagation de variables d’environnement  ====
==== Propagation de variables d’environnement  ====
35,874

edits

Navigation menu