Debemos especificar los requisitos de un trabajo mediante una serie de directivas para así informar al gestor de colas de cómo tratarlo. Estas directivas se pueden añadir como argumentos en los comandos sbatch y srun, o añadirse como comentarios en el script del trabajo. En este último caso, la sintaxis de las directivas es la siguiente:
#SBATCH --directive=value
Además, el script de trabajo contiene una serie de comandos con las tareas que se desean realizar.
Principales directivas de trabajo
línea de comandos | cabecera fichero | description |
---|---|---|
–job-name | #SBATCH --job-name=MyJob |
Nombre que aparecerá cuando se squeue or sacct. |
–account | #SBATCH --account=nesi12345 |
La cuenta a la que será cargado tu uso |
–time | #SBATCH --time=DD-HH:MM:SS |
Tiempo máximo de ejecución del trabajo |
–mem | #SBATCH --mem=512MB |
Memoria solicitada por nodo |
–cpus-per-task | #SBATCH --cpus-per-task=10 |
CPUs solicitadas por tarea |
–output | #SBATCH --output=file |
Fichero donde se redirigirá la salida estándar. %j se reemplaza por el job ID. |
–error | #SBATCH --error=file |
Fichero donde se redirigirá la salida de error estándar. %j se reemplaza por el job ID. |
–mail-user | #SBATCH --mail-user=me23@gmail.com |
dirección a la que enviar notificaciones |
–mail-type | #SBATCH --mail-type=ALL |
Eventos por los que enviar notificación (ALL = BEGIN END FAIL) |
#SBATCH --mail-type=TIME_LIMIT_80 |
Se enviará mensaje cuando su tiempo de ejecución haya alcanzado el 80% de su máximo | |
#SBATCH --workdir=pathname |
El directorio de trabajo. Si no se especifica, es el directorio desde el que se envió el trabajo | |
-N,–nodes | #SBATCH -N number, #SBATCH --nodes=number |
El número de nodos solicitados. Nota: en caso de solicitar más de uno, los nodos se reservarán de manera exclusiva aunque no se hagan uso de todos sus recursos |
-n, –ntasks | #SBATCH -n number, #SBATCH --ntasks=number |
El número de procesos que se ejecutarán |
-c, –cpus-per-task | #SBATCH -c number, #SBATCH --cpus-per-task=number |
Número de cores por proceso. El número total de cores reservados será ntasks * cpus-per-task |
–ntasks-per-node | #SBATCH --ntasks-per-node=number |
Número de procesos en cada nodo |
–ntasks-per-socket | #SBATCH --ntasks-per-socket=number |
Número de procesos en cada socket |
–constraint | #SBATCH --constraint=value |
Solicita usar nodos que tengan ciertas características. Con sinfo / scontrol show job se pueden consultar estas características |
–reservation | #SBATCH --reservation=reservation_name |
Uso de los nodos de una determinada reserva |
-a, –array=indexes | Lanzar un array de trabajos, esto es, múltiples trabajos con parámetros idénticos. Los trabajos se distinguen entre sí por la variable SLURM_ARRAY_TASK_ID, que será asignada con los índices propuestos | |
–exclusive | #SBATCH --exclusive |
Reservar un nodo completo, aunque se soliciten menos recursos de los que el nodo contiene |