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.
Last modified 2 years ago
Last modified on May 8, 2023, 9:53:22 AM