aide mémoire pbs: options de soumission, création de piles de calculs

La commande de soumission à une liste d'attente de calcul permet une optimisation de son temps de travail et de la gestion des ressources informatiques (que ce soit en terme de cpus, ou en terme de licences quand celles ci sont en faible nombre et que les utilisateurs en ont un besoin immodéré).

Nous avons déjà indiqué l'option pour spécifier un noeud de calcul, qsub -l, afin de permettre un calcul sur un noeud précis.

L'option -a permet de spécifier la date de début de calcul; elle s'écrit comme suit:

qsub -a 2000 monScript.job

pour un lancement effectif du calcul a 20:00 le jour même. Le jour, moi et année peuvent être spécifié également:

qsub -a AnnéeMoisJourHeureMinute.Secondes monScript.job

ce qui donne, pour un calcul qui doit être lancé le 15 juin 2025 à 17h56 et 13 s

qsub -a 2506151756.13 monScript.job

ou encore

qsub -a 202506151756.13 monScript.job

Ces calculs s'afficherons avec un 'W' par un qstat.

De  la même manière, on peut lancer des calculs en conditionnels, soumis à la réalisation d'une autre calcul par exemple; ceci permet alors la mise en batterie de calculs qui s'exécutent les uns à la suite des autres.

Cette option est -W:

qsub -W depend=afterok:JobId monScript.job

Cette commande ne lancera le script monScript.job que si et seulement si le calcul no jobId est fini, avec succès. On peut nuancer la condition en utilisant à la place de afterok afternotok (exécution si le calcul jobId s'est terminé par une erreur) ou afterany (exécution quoi qu'il arrive au calcul précédent).

Ceci permet alors la mise en oeuvre de piles de calculs qui se déclenches les uns à la suite des autres automatiquement (post-traitement, autre calcul, etc....). Pour ce faire, il suffit de crée un fichier texte, par exemple, lancement.job, et de le remplir comme suit (entendus que les fichiers de soumission de tous les calculs ont déjà été fait):

#!/bin/bash
calcul1=$(qsub job1.job)
echo $calcul1
calcul2=$(qsub -W depend=afterany:$calcul1 job2.job)
echo $calcul2
calcul3=$(qsub -W depend=afterany:$calcul2 job3.job)
echo $calcul3

L'exécution du fichier lancement.job se fait dans un terminal : 

./lancement.job

Si cela ne fonctionne pas, c'est que le fichier n'est pas exécutable; il faut remédier à cela en changeant les droits et en rajoutant l'exécution

chmod a+x lancement.job

puis, relancer.

Le calcul 1 se lancera aussitôt (sauf si on spécifie une option -a); le second attendra que le précédent ai finit. Le troisième attendra que le second soit achevé.

Le premier calcul s'affichera en 'R' par un qstat, les autres par un 'H'.

:~/monRepertoire> qstat

Job id                  Name             User            Time Use S Queue
----------------------- ---------------- --------------- -------- - -----
6497                       calcul1          charles      00:00:00 R batch          
6498                       calcul2          charles             0 H batch          
6499                       calcul2          charles             0 H batch          

Écrire un commentaire

Quelle est la troisième lettre du mot qfjnze ? :