s.l.u.r.m

Utilización de SLURM

SLURM Workload Manager o formalmente (Simple Linux Utility for Resource Management) es un sistema de manejo de cluster y calendarización de tareas para grandes y pequeños cluster Linux, el cual es open source, tolerante a fallas y altamente escalable.

  1. Asigna acceso exclusivo y/o no exclusivo a recursos (nodos de cómputo) a usuarios por un tiempo determinado para que estos puedan ejecutar una tarea. - Provee un framework para iniciar, ejecutar y monitorear tareas (normalmente tareas paralelas) en un conjunto de nodos asignados. - Coordina la solicitud de recursos a través de una cola de tareas pendientes.

¿Cómo se encarga Slurm de manejar los jobs?

  • Asignando recurso de cómputo solicitados por el job * Ejecutando el job y * Reportando la salida de la ejecución al usuario.
  • Preparar un script * Enviar job para ejecución.
ComandoDescripción
squeuever información de jobs en cola
sinfover cola, partición e información del nodo
sbatchenviar un job a través de un script
srunenviar un job interactivo
scancelcancelar jobs en cola
scontrolcontrol e información detallada de jobs, colas y particiones.
sstatver a nivel de sistema la utilización de recursos (memoria, I/O, energía)
sacctver a nivel de sistema la utilización de recursos de jobs completados.

Este es un ejemplo de un script (ejemplo1.sh) con los elementos mínimos para ejecutar el programa namd a través de slurm:

#!/bin/bash   #Shell a usar durante la simulación para este caso es bash

#SBATCH -J NAMD-NOMBRE-SIMULACION   #Nombre de la simulacion reemplazar por nombre apropiado

#SBATCH --nodes=1      #Numero de nodos donde se ejecutara la simulacion, siempre es 1 para Soroban

#SBATCH --tasks-per-node=40     #40 es el numero de procesos a ejecutar en el servidor Soroban, reemplazar por la cantidad adecuada

#SBATCH --mem=100G              #Memoria reservada para esta simulacion en el servidor

#SBATCH --partition=intel      #Particion donde se enviaran los trabajos en este caso la particion general se llama intel.

module load namd/Git-2019-11-27_Linux-x86_64-multicore              #programas o modulos necesarios para ejecutar esta simulacion, reemplazar por las adecuadas en cada caso

Para enviar este script a slurm, crear un job, y comenzar el procesamiento se requiere lo siguiente:

chmod +x ejemplo1.sh

sbatch ejemplo1.sh

Este es un ejemplo de un script (ejemplo2.sh) con los elementos minimos para ejecutar el programa R-3.6.1 a través de slurm:

#!/bin/bash   #shell usada por el usuario, para este baso es BASH

#SBATCH -J R-NOMBRE-SIMULACION   #Reemplazar R-nombre-simulacion por el nombre correspondiente a la simulación

#SBATCH --nodes=1                            #Número de nodos a donde se enviara la simulacion, para soroban es 1.

#SBATCH --tasks-per-node=1                  #Numero de tares por nodo, en este caso es 1 porque es una tarea single-thread

#SBATCH --mem=100G                          #cantidad de memoria reservada para esta simulacion, 100G, reemplazar por valor adecuado

#SBATCH --partition=intel                   #Nombre de la particion slurm donde se enviara las simulaciones en este caso la particion general se llama "intel"

module load R/3.6.1                         "Modulos necesarios para ejecutar la simulacion, para este ejemplo  solamente es necesario 'module load R/3.6.1' este ejemplo es para single thread.
<font 16px/inherit;;inherit;;inherit></font>

Para enviar este script a slurm, crear un job, y comenzar el procesamiento se requiere lo siguiente:

chmod +x ejemplo2.sh

sbatch ejemplo2.sh

Este ejemplo enviar un trabajo de 1 hilo a slurm con los parametros del script, y con limitaciones establecidas al usuario y la partición


Este ejemplo muestra como enviar varios tareas utilizando la propiedad de array-jobs en slurm, para más detalles consultar documentación oficial de slurm para ver todas las posibilidades ofrecidas en Array-Jobs.

#!/bin/bash

#SBATCH -J R-NOMBRE-SIMULACION    #Nombre de la simulacion reemplazar segun el caso
#SBATCH -a 1-11%3   #
#SBATCH --nodes=1   #Número de nodos donde se enviara el trabajo, siempe es 1 para Soroban
#SBATCH --tasks-per-node=1   #Número de hilos a ejecutar simultaneamente
#SBATCH --mem=100G                #Memoria reservada para la simulacion
#SBATCH --partition=intel         #Particion general donde se enviara la simulación, llamada 'intel'

module load R/3.6.1               #Modulo necesario cargado previamente, necesario para la simulación

cmds=(                            #comandos a ejecutar en array
'sleep 10;echo 10'
'sleep 20;echo 20'
'sleep 30;echo 30'
'sleep 40;echo 40'
'sleep 50;echo 50'
)
eval ${cmds[$SLURM_ARRAY_TASK_ID - 1]}          #desplegar informacion de los ID de cada elemento de array-job enviado

chmod +x ejemplo3.sh

sbatch ejemplo3.sh

  • s.l.u.r.m.txt
  • Last modified: 2021/10/04 08:30
  • by admin