Saltar a contenido

Trabajos dependendientes#

Esta página describe la función de dependencia de trabajos en SLURM.

Es una función se utiliza cuando se encadenan varios trabajos dependientes unos de otros. Por ejemplo:

  • Un trabajo de preprocesamiento con 1 núcleo debe ser seguido por una simulación con 16 núcleos. Los resultados deben procesarse posteriormente con un solo trabajo principal.

  • Un trabajo de procesamiento posterior debe enviarse después de que finalicen todas las tareas de una matriz de trabajo.

Uso#

El trabajo dependiente debe lanzarse utilizando el comando de sbatch especificando la opción --dependency=<type>:<listOfJobIDs>. El tipo puede ser:

  • after: el trabajo se lanza después de que el primer trabajo entre a ejecutar, es decir, que esté RUNNING.
  • afterok: el trabajo se lanza después de que el primer trabajo haya terminado con éxito.
  • afterany: el trabajo se lanza después de que el primer trabajo haya terminado, independientemente de si ha fallado o no.
  • afternotok: el trabajo se lanza después de que el primer trabajo haya terminado en fallo.
  • aftercorr: una tarea de un array de trabajos puede empezar a ejecutarse después de que el ID de otro trabajo del array haya finalizado con éxito.
  • singleton: el trabajo puede empezar a ejecutarse cuando cualquier otro trabajo con el mismo nombre y del mismo usuario haya terminado.

Ejemplo

sbatch --dependency=afterok:111111,111112 my_job_script.sh

El trabajo subyacente (del que depende este trabajo) debe enviarse primero. El ID de trabajo relacionado se puede capturar recopilando la salida del comando sbatch con la opción --parsable:

first_jobid=$(sbatch --parsable my_first_job.sh)