slurm - Harvard Wiki

1/6/2015
SLURM - usuarios.nlhpc.cl
SLURM
De usuarios.nlhpc.cl
SLURM es el gestor de colas instalado en muchos de los súper computadores del TOP500
(//www.top500.org), y también en Leftraru. Si Ud. quiere lanzar tareas dentro de Leftaru, debe hacerlo a
través de Slurm.
Este es un pequeño tutorial que esperamos sirva a los usuarios para entender el funcionamiento básico de
Slurm.
Contenido
1 Login y Transferencia de Archivos
2 Introducción a los comandos slurm
3 Enviar un script
3.1 Particiones SLURM Leftraru
3.2 Script Básico, test.sh
3.3 Ejemplo de ejecución de un programa compilado con Intel MPI
3.3.1 squeue: Comprobar estado del trabajo
3.3.2 scancel: Cancelar un trabajo
3.4 sinfo ­ Mostrar el estado de los nodos
4 Prioridad de tarea
4.1 Factores que determinan prioridad de tarea
4.2 Mostrar Fairshare
5 Job Arrays
5.1 Ejemplo de un Script Job Array
5.2 Otras opciones para jobs arrays
6 Bibliografía
Login y Transferencia de Archivos
Descripción de cómo iniciar la sesión utilizando la shell y transferencia segura de archivos hacia y desde el
clúster.
Sólo los inicios de sesión mediante Secure Shell (ssh)
(http://usuarios.nlhpc.cl/index.php/Tutorial_ssh_con_putty) están permitidos. La transferencia de archivos
debe utilizar un protocolo seguro, como sftp.
Al clúster se puede acceder desde el dominio de red leftraru.nlhpc.cl en el puerto 2222.
Introducción a los comandos slurm
http://usuarios.nlhpc.cl/index.php/SLURM
1/5
1/6/2015
SLURM - usuarios.nlhpc.cl
srun - ejecutar un comando en nodos de cómputo asignados
sbatch - presentar un script de trabajo
squeue - Mostrar estado de los trabajos en la cola
scancel - eliminar un trabajo
sinfo - Muestra el estado de los nodos de cómputo
Enviar un script
Particiones SLURM Leftraru
slims: 128 nodos livianos
fats: 4 nodos gruesos + mics en modo offload
mics: partición que contiene las 12 Xeon Phi
all: Todos los nodos slims+fats
Script Básico, test.sh
#!/bin/bash
#SBATCH --job-name="TEST"
#SBATCH --partition=slims
#SBATCH --nodes=20
#SBATCH --output=test-srun.out
#SBATCH --output=test-srun.out
#SBATCH [email protected]
#SBATCH --mail-type=ALL
#SBATCH --requeue
#Si un nodo falla, el trabajo que estaba ejecutándose se vuelve a encolar
#Esto último especifica que la tarea será reencolada si es que falla.
#La opción por defecto es no reencolar.
#Variables, rutas y módulos
echo $SLURM_ARRAY_TASK_ID;
echo "SLURM_JOBID="$SLURM_JOBID
echo "SLURM_JOB_NODELIST"=$SLURM_JOB_NODELIST
echo "SLURM_NNODES"=$SLURM_NNODES
echo "SLURMTMPDIR="$SLURMTMPDIR
echo "working directory="$SLURM_SUBMIT_DIR
module load intel/15.0.0
srun ./holamundo
echo "Trabajo terminado";
Una vez terminado el script, podemos ejecutar con sbatch:
[prueba@leftraru1 ~]$ sbatch test.sh
Submitted batch job 45594
[prueba@leftraru1 ~]$
Ejemplo de ejecución de un programa compilado con Intel MPI
El siguiente ejemplo, es exclusivo para una ejecución de un programa compilado con MPI de Intel.
#!/bin/bash
#SBATCH --job-name="TEST"
http://usuarios.nlhpc.cl/index.php/SLURM
2/5
1/6/2015
SLURM - usuarios.nlhpc.cl
#SBATCH --partition="slims"
#SBATCH -n 40
#SBATCH --output=test-srun.out
#SBATCH --error=test-srun.err
module load intel impi
mpirun ./hello_world_impi
squeue: Comprobar estado del trabajo
Puede utilizar squeue para saber el estado de una o varias de sus tareas
[prueba@leftraru1 ~]$ squeue -u prueba
JOBID PARTITION
NAME
USER ST
45594
slims
TEST prueba R
TIME NODES NODELIST(REASON)
0:49
20 cn[001-020]
[prueba@leftraru1 ~]$ squeue -j 45596
JOBID PARTITION
NAME
USER ST
45596
slims
TEST prueba R
TIME NODES NODELIST(REASON)
0:03
20 cn[001-020]
scancel: Cancelar un trabajo
Con scancel Ud. puede matar un proceso en ejecución
[prueba@leftraru1 ~]$ squeue -u prueba
JOBID PARTITION
NAME
USER ST
45594
slims
TEST prueba R
[prueba@leftraru1 ~]$ scancel 45594
[prueba@leftraru1 ~]$ squeue -u prueba
JOBID PARTITION
NAME
[prueba@leftraru1 ~]$
USER ST
TIME NODES NODELIST(REASON)
0:59
20 cn[001-020]
TIME NODES NODELIST(REASON)
sinfo ­ Mostrar el estado de los nodos
[prueba@leftraru1 ~]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
slims*
up infinite
128 idle cn[001-128]
fats
up infinite
4 idle cnf[001-004]
mics
up infinite
12 idle cnf001-mic[0-2],cnf002-mic[0-2],cnf003-mic[0-2],cnf004-mic[0-2]
all
up infinite
132 idle cn[001-128],cnf[001-004]
debug
up
5:00
4 idle leftraru[1-4]
[prueba@leftraru1 ~]$
Otro Ejemplo, se muestra sólo una partición específica
[prueba@leftraru1 ~]$ sinfo -p slims
http://usuarios.nlhpc.cl/index.php/SLURM
3/5
1/6/2015
SLURM - usuarios.nlhpc.cl
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
slims*
up infinite
128 idle cn[001-128]
[prueba@leftraru1 ~]$
Prioridad de tarea
Cómo ver la prioridad del trabajo. Los factores que determinan la prioridad del trabajo, incluyendo la
fórmula y pesos.
Factores que determinan prioridad de tarea
Edad ­ la cantidad de tiempo que el trabajo ha estado esperando en la cola
Tamaño de la tarea ­ número de nodos solicitados por el trabajo
Partición ­ prioridad para una partición determinada
Mientras más tareas se ejecuten en el cluster, menor será la prioridad.
Mientras menos tareas se ejecuten en el clúster, más alta es la prioridad.
Mostrar Fairshare
sshare <flag>
­­accounts=group_name
­­all ­­accounts=group_name #Muestra FairShare para los miembros del grupo
Job Arrays
Un Job Array (matriz de trabajo) es una colección de trabajos similares.
Una Job Array es un grupo de puestos de trabajo casi idénticas presentadas con 1 script SLURM.
Ejemplo de un Script Job Array
#!/bin/bash
#SBATCH --job-name="TEST"
#SBATCH --array=0-1424
#SBATCH --partition=slims
#SBATCH --output="Test6f00-%A_%a.out"
#SBATCH [email protected]
#SBATCH --mail-type=ALL
#SBATCH --share
echo $SLURM_ARRAY_TASK_ID;
sleep 100;
echo "Done";
Enviar el script:
[prueba@leftraru1 ~]$ sbatch job_array.sh
http://usuarios.nlhpc.cl/index.php/SLURM
4/5
1/6/2015
SLURM - usuarios.nlhpc.cl
Otras opciones para jobs arrays
#Ejecutar un job array después de un job array específico
#SBATCH --depend=after:123 tarea.sh
#Esto hará que el proceso no se inicie hasta que el jobarray 123 haya terminado.
#Esperar un elemento específico dentro de un job array:
sbatch --depend=after:123_4 my.job
#Esto esperará al jobid 4 del jobid 123
Bibliografía
Manual Oficial de Slurm (http://slurm.schedmd.com/documentation.html)
Obtenido de «http://usuarios.nlhpc.cl/index.php?title=SLURM&oldid=115»
Esta página fue modificada por última vez el 26 nov 2014, a las 14:37.
Esta página se ha visitado 174 veces.
El contenido está disponible bajo Creative Commons Reconocimiento Compartir Igual no comercial
a menos que se indique lo contrario.
http://usuarios.nlhpc.cl/index.php/SLURM
5/5