Lanzar trabajos

Siempre use srun o sbatch para iniciar jobs.

Sí no inicio sus jobs con sbatch o srun significa que estan ejecutandose en el frontend del cluster y serán cancelados sin previo aviso.

Iniciar un trabajo (job)

La forma de usar el cluster es en base a trabajos batch (job) en la cual se define la cantidad de recursos a solicitar y el software especifico a ejecutar.

Script base para lanzar trabajos, se debe modificar en base a los recursos solicitados y el software usado. Los Job que no utilicen todos los recursos solicitados serán cancelados sin previo aviso.

Script para usar un nodo de forma simple en base al número de tareas y tiempo de computo

myjob.slurm
#!/bin/bash
## save this file as myjob.slurm
## nodes request and configuration	
#SBATCH --job-name=mydemojob	        # job Name
#SBATCH --ntasks=4                      # Total number of tasks requested
#SBATCH --mem=1G                       # total of memory requested 
#SBATCH --time=01:30:00                 # Run time (hh:mm:ss) - 1.5 hours
#SBATCH --partition=compute-slim        # Name of partition 

## output
#SBATCH --output=%u_%x_%j.out           # output  userName_jobName_jobId.out

# Put your software in this line
hostname 

Script para usar un nodo en especifico

myjob.slurm
#!/bin/bash
## save this file as myjob.slurm
## nodes request and configuration	
#SBATCH --job-name=mydemojob	        # job Name
#SBATCH --ntasks=4                      # Total number of tasks requested
#SBATCH --mem=1G                       # total of memory requested 
#SBATCH --time=01:30:00                 # Run time (hh:mm:ss) - 1.5 hours
#SBATCH --partition=compute-slim        # Name of partition
#SBATCH --nodelist=compute-slim-0-0     # Run in specific node

## output
#SBATCH --output=%u_%x_%j.out           # output  userName_jobName_jobId.out

# Put your software in this line
hostname

La cantidad de memoría y threads que se usarán dependen del tipo de job que se ejecutará. Se recomienda usar 1 thread y 1G como norma general y modificar según corresponda.

La cantidad de threads y memoria sólo son utilices cuando el código del job puede aprovechar estos recursos. Sí usa un programa consulte la documentación o asegúrese que su código pueda usar multiples threads.

Ejecutaremos desde nuestra cuenta el comando " sbatch" y el archivo "myjob.slurm" lo que nos entregará el id asignado a nuestro job

Al terminar el job veremos que nos crea un archivo de salida en base al patrón indicado

Ver estado de un trabajo

Para ver el estado de un trabajo ya ejecutado podemos usar sacct -j junto con el número del trabajo

sacct -j IdJob

Cancelar un trabajo

Para cancelar un trabajo debemos usar el comando scancel y el id del job

Ver recursos disponibles

Para ver el estado del cluster podemos usar el comando sinfo, la columna STATE nos indica el estado del nodo y la columna TIMELIMIT nos indica el tiempo máximo que un job puede ejecutarse en una cola.

down: El nodo esta fuera de linea

idle: El nodo esta libre

alloc: el nodo esta usado al 100%

mix: El nodo esta en uso pero no al 100%

drng: El nodo esta en transición desde un estado alloc o mix al estado drain

drain: El nodo esta en mantenimiento

sinfo

Sí necesita usar un nodo en estado down, drng o drain use sbatch para ingresar su job a la cola. Los jobs se ejecutarán según la prioridad en la cola cuando el nodo vuelva a estar operativo.

Ver cola de trabajos

Con el comando squeue se puede ver la cola y saber en que estado se encuentra nuestro job. En general un job en una ejecución normal debería estar en dos estados PENDING (PD) esperando en la cola o RUNNING (R) ejecutándose en un nodo.

# ver cola de trabajo del usuario
squeue  -u `whoami` 
# ver cola de trabajo general de todo el clúster
squeue  

Last updated