- 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
109 lines
2.4 KiB
Markdown
109 lines
2.4 KiB
Markdown
# 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.
|