đĄ Astuces
Grappes de calcul - Alliance Canada
Récupérer les tùches échouées et les relancer
Il sâagit dâune solution âĂ la mitaineâ qui peut ĂȘtre remplacĂ©e par lâutilisation de lâoutil META-Farm de lâAlliance.
Mise en contexte
On veut calculer le PCI pour plusieurs espÚces. Initialement le array range allait de 1-243, ce qui correspondait aux 243 espÚces. AprÚs le premier lancement du script, 33 espÚces (ou tùches) avaient échouées:
- Récupérer le statut des tùches (
sjobexitmod) - Récupérer les lignes qui présentent le pattern
FAILED(grep) - Récupérer la premiÚre colonnes qui contient
jobId_taskId(awk) - Couper les strings au niveau de
_et récupérer la deuxiÚme partie de string qui correspond à la tùche ID (cut) - Enregistrer la sortie dans un fichier (
>)
sjobexitmod -l jobId > sjobexitmod_status.txt
grep -e 'FAILED' sjobexitmod_status.txt | awk '{print $1}' | cut -d '_' -f 2 > failed_task_id.txt- Dans le fichier bash envoyĂ© Ă lâordonnanceur slurm, crĂ©er une variable shell qui pourra ĂȘtre importĂ© dans lâenvironnement
R.
#!/bin/bash
#SBATCH --account=def-dgravel
#SBATCH --array=1-33
#SBATCH -t 01:00:00
#SBATCH --mem-per-cpu=50GB
#SBATCH --cpus-per-task=1
#SBATCH --job-name=Summer_school_test
#SBATCH --mail-user=juhc3201@usherbrooke.ca
#SBATCH --mail-type=ALL
echo $SLURM_ARRAY_TASK_ID
FAILED_TASK_ID=$(sed -n "${SLURM_ARRAY_TASK_ID}p" failed_task_id.txt)
echo $FAILED_TASK_ID
module load StdEnv/2023 gcc/12.3 gdal/3.7.2 arrow/15.0.1 udunits/2.2.28 r/4.4.0
Rscript pci.rfailed_task_id <- as.integer(Sys.getenv("FAILED_TASK_ID")) #rĂ©cupĂšre la variable shell FAILED_TASK_IDIci la taille de lâarray correspond au nombre de tĂąches qui ont Ă©chouĂ©. sed permet de rĂ©cupĂ©rer la valeur dans le fichier failed_task_id.txt qui correspond au numĂ©ro du SLURM_ARRAY_TASK_ID. Et cette task_id est utilisĂ©e pour indexer le nom de lâespĂšce qui manque (dans cet exemple).