Esistono diversi modi per inviare i lavori SLURM a un cluster e il modo principale consiste nell'inviare uno script con lo sbatch
comando come mostrato di seguito:
sbatch runcscript.sh
Nel mio recente tentativo di sviluppare un'applicazione web con back-end come scheduler SLURM per la gestione dei lavori, ho fatto riferimento alla documentazione SLURM per reindirizzare STDOUT e STDERR a un file w.r.t all'id del lavoro come mostrato di seguito:
#!/bin/bash #SBATCH --job-name=qsim #SBATCH --partition=standard-low #SBATCH -o $SLURM_JOB_ID.output #SBATCH -e $SLURM_JOB_ID.error python UWVr6QCFKLGgx6sRtsnRZyRrajJdbPF4CsKGUqd7S4r.py
Sfortunatamente, l'output non è stato sostituito con la variabile $SLURM_JOB_ID
.
$ls -lrt -rw-rw-r-- 1 vivekn vivekn 737 Sep 17 12:43 $SLURM_JOB_ID.output -rw-rw-r-- 1 vivekn vivekn 580 Sep 17 12:43 $SLURM_JOB_ID.error
Dopo ricerche piuttosto approfondite e la guida giusta di Harvard mi ha mostrato che il modo in cui mi riferivo era sbagliato e dovevo cambiare lo script dei lavori SLURM come di seguito:
#!/bin/bash #SBATCH --job-name=qsim #SBATCH --partition=standard-low #SBATCH -o %j.output #SBATCH -e %j.error python UWVr6QCFKLGgx6sRtsnRZyRrajJdbPF4CsKGUqd7S4r.py
Il %j nel nome del file sarà sostituito dal JobID in fase di esecuzione.
Tuttavia, devo ancora scoprire perché la variabile di ambiente SLURM $SLURM_JOB_ID non ha funzionato. Aggiornerò una volta che avrò una spiegazione. Se hai suggerimenti o risposte, scrivi nella sezione commenti qui sotto.