En estos ejemplos siempre se van a reservar un total de cuatro cores. Se variarán el número de nodos y de tareas, para ver las diferentes maneras de hacer la reserva y paralelismo: memoria compartida, distribuida o híbrido.
Si se quieren reservar para una tarea 4 cores para crear 4 threads :
$ sbatch -n 1 -c 4 script.sh
En el caso de MPI donde cada tarea es ejecutada en un core, la reserva de 4 cores en 2 nodos diferentes sería:
$ sbatch -n 4 --task-per-node=2 -c 1 script.sh
En caso de un ejemplo híbrido con OpenMP y MPI, en el cual se quiere reservar 2 tareas de 2 cores cada una en 2 nodos diferentes :
$ sbatch -n2 --task-per-node=1 -c 2 script.sh
Se especifica que se reserven 2 nodos y 1 tarea por nodo, por lo que tendremos 2 tareas en total (procesos MPI). También que reserve dos cores por tarea, por lo que cada proceso podrá tener dos hebras.
Nº tareas (-n) |
Cores por tarea (-c) |
Nº nodos |
Cores totales a usar |
Reserva de recursos (cores reservados) |
Tipo paralelismo |
|
-n 1 –cpus-per-task=4 | 1 | 4 | 1 | 4 | 4 | Memorica compartida |
-n 2 –task-per-node=1 –cpus-per-task=2 | 2 | 2 | 2 | 4 | >4* | Híbrido |
-n 4 –task-per-node=2 –cpus-per-task=1 | 4 | 1 | 2 | 4 | >4* | Memoria distribuida |
* Cuando se reserva más de un nodo, se hace una reserva exclusiva del nodo, incluso aunque no se usen todos sus recursos