wiki:formato_basico_slurm

Formato básico de un fichero slurm

Un fichero slurm no es más que un shell script que mediante una cabecera de líneas de comentario, instruye a slurm sobre las características del trabajo a realizar, y mediante unas líneas de órdenes lanza los procesos en sí.

A los ficheros slurm se le suele poner la extensión .slurm, pero es algo convencional y no obligatorio. De esa manera podríamos tener un fichero slurm que se llamara trabajo-uno.slurm

El caso más sencillo de uso sería algo así:

#!/bin/bash

#SBATCH -J hello
#SBATCH -p normal
#SBATCH -o hello-%j-%a.out
#SBATCH --array=1-10                

# Ejecutar un script python con un argumento
srun python hello-parallel-fast.py $SLURM_ARRAY_TASK_ID

La primera línea nos indica que se trata de un fichero a ser interpretado por el bash. Vemos como todas las líneas de comentario siguientes van dirigidas para ser preprocesadas por el comando sbatch que veremos en otro apartado. Son las siguientes:

  • -J le da nombre al trabajo tal como se verá en la cola.
  • -p especifica la partición que se usará para el trabajo, normal o fat en nuestro caso.
  • -o especifica el nombre de los ficheros de salida para cada una de las ejecuciones. Se pueden usar variables como %j que se sustituirá por el nombre del trabajo o %a que se sustituye por la iteración de la ejecución del array.
  • --array especifica el número de iteraciones que se realizarán, de 1 a 10 en este caso, pudiendo usar el valor del array como argumento de nuestro programa.

Al final viene la línea que ejecuta nuestro proceso en sí. Se precede por el comando srun y simplemente ejecuta el programa python hello-parallel-fast.py pasándole como argumento el identificador de la ejecución del array que se trate, que como hemos dicho irá de uno a diez.

Al invocar el fichero con sbatch trabajo-uno.slurm, el gestor de colas mandará diez veces el mismo proceso a diez nodos diferentes de la partición normal de nuestro cluster.

Si nuestro programa en python necesita muy poca memoria y un solo procesador, es evidente que estamos desperdiciando muchos recursos reservando 10 nodos para este trabajo, que se puede dilatar durante muchas horas o días. Es por ello que en la parte de "casos de uso" veremos como poder afinar más en la selección de recursos para no acaparar nosotros solos todos los nodos.

Last modified 2 years ago Last modified on May 2, 2023, 2:44:25 PM