| 1 | == Trabajo de una tarea multi threaded == |
| 2 | 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. |
| 3 | {{{ |
| 4 | #!/bin/bash |
| 5 | #SBATCH --job-name=parallel_job # Nombre del trabajo |
| 6 | #SBATCH --mail-type=END,FAIL # Eventos para recibir correos electrónicos (NONE, BEGIN, END, FAIL, ALL) |
| 7 | #SBATCH --mail-user=micorreo@uco.es # Dirección de correo electrónico donde se enviarán los correos |
| 8 | #SBATCH --nodes=1 # Ejecutar todos los procesos en un solo nodo |
| 9 | #SBATCH --ntasks=1 # Ejecutar una sola tarea |
| 10 | #SBATCH --cpus-per-task=4 # Número de núcleos de CPU por tarea |
| 11 | #SBATCH --mem=1gb # Solicitud de memoria para el trabajo |
| 12 | #SBATCH --time=00:05:00 # Límite de tiempo hrs:min:seg |
| 13 | #SBATCH --output=parallel_%j.log # Registro de salida y error estándar |
| 14 | pwd; hostname; date |
| 15 | |
| 16 | echo "Ejecutando programa generador de números primos en $SLURM_CPUS_ON_NODE núcleos de CPU" |
| 17 | |
| 18 | /data/training/SLURM/prime/prime |
| 19 | |
| 20 | date |
| 21 | }}} |
| 22 | |
| 23 | 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. |
| 24 | |
| 25 | 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. |