- Gebruik gemaakt van wait als init zodat de processen opgeruimt worden - mpitests-mpich als mpi demo toegevoegd - In README: testen uitgebreid met mpi & logfiles sbatch beschreven
2.4 KiB
Een mini slurm cluster als docker compose omgeving
Introductie
Op dit moment zijn we aan het onderzoeken of we via docker containers een slurm omgeving kunnen maken waarin de Deltares waqua en d-hydro modelen kunnen draaien.
Dit cluster is een POK van slurm in docker containers. De doelen hiervan is:
- Uitzoeken of slurm in docker kan draaien
- Uitzoeken of we de deltares modelen hierin kunnen draaien
- Kennis overdracht van slurm
Build instructies
De submit en reken nodes zijn afhankelijk van een basis image slurm-base. Hierin staan al een aantal files die op zowel reken nodes als submit node aanwezig moet zijn.
Deze moet eerst gebouwt worden met een docker commando:
docker build -t slurm-base:latest slurm-base
Hierna kan het cluster gebouwt worden via:
docker-compose build
En gestart worden via:
docker-compose up -d
Testen
De status van het cluster
Met de volgende commando's kun je status informatie krijgen:
- sinfo
- squeue
- scontrol ping
- scontrol show nodes
- scontrol show partition
- scontrol show job
Een simpel shell script
Plaats het volgende shell script ergens in '''/home''':
#!/bin/sh
hostname
sleep $(( ${RANDOM}%40+40 ))
Vervolgens kun je dit script met sbatch 8 keer submitten. Wat je ziet is dat elke node 2 scripten start.
De overige 4 blijven in de queue staan.
Je kunt de output van de shell script bekijken in de logfiles slurm-<nr>.out
Mpich test programma's
Via srun kunnen we programma's vanaf de submit node in de voorgrond draaien. De output komt dan gewoon naar het scherm.
Start het mpi hello test programma met:
srun --mpi=pmi2 -n 4 /usr/lib64/mpich/bin/mpitests-osu_hello
We zien dat hij netjes meld dat hij met 4 nodes gedraait heeft.
We kunnen ook een latency test draaien met 2 nodes:
srun --mpi=pmi2 -n 2 /usr/lib64/mpich/bin/mpitests-osu_acc_latency
In dit geval draaien beide programma's op de zelfde node. Laten we het zelfde doen maar dan een mpi programma per node:
srun --mpi=pmi2 -N 2 -n 2 /usr/lib64/mpich/bin/mpitests-osu_acc_latency
In dat geval zien we een hogere latency!
Ten slotte een test waarbij mpi op alle beschikbare cpu's draait:
srun --mpi=pmi2 -n 4 /usr/lib64/mpich/bin/mpitests-osu_allgather
Todo
Nu
- Integratie waqua/d-hydro.
- Workshop schrijven.
Voor productie
- Persistent maken job administratie.
- Redundante master nodes.
- Submit nodes die geen master node zijn.