wiki:multi_threaded_task

Version 1 (modified by tonin, 2 years ago) (diff)

--

Trabajo de una tarea multi threaded

Es un caso muy habitual, donde un programa que tiene un solo hilo de ejecución y por tanto necesita un solo core, se tiene que lanzar N veces variando los argumentos.

#!/bin/bash
#SBATCH --job-name=parallel_job     # Nombre del trabajo
#SBATCH --mail-type=END,FAIL        # Eventos para recibir correos electrónicos (NONE, BEGIN, END, FAIL, ALL)
#SBATCH --mail-user=micorreo@uco.es # Dirección de correo electrónico donde se enviarán los correos
#SBATCH --nodes=1                   # Ejecutar todos los procesos en un solo nodo
#SBATCH --ntasks=1                  # Ejecutar una sola tarea
#SBATCH --cpus-per-task=4           # Número de núcleos de CPU por tarea
#SBATCH --mem=1gb                   # Solicitud de memoria para el trabajo
#SBATCH --time=00:05:00             # Límite de tiempo hrs:min:seg
#SBATCH --output=parallel_%j.log    # Registro de salida y error estándar
pwd; hostname; date

echo "Ejecutando programa generador de números primos en $SLURM_CPUS_ON_NODE núcleos de CPU"

/data/training/SLURM/prime/prime

date

la diferencia con el ejemplo single threaded es que en este caso el número de cpus-per-task es 4, que corresponderán a 4 hilos de ejecución de la tarea. Aquí a diferencia del anterior no ejecutamos seriadamente N repeticiones, aunque se podría combinar también con la capacidad de arrays de slurm para hacerlo si fuera el caso.

También hemos aprovechado para ilustrar ls forma de decirle a slurm que nos avise por correo, en este caso cuando el trabajo termine y cuando falle.