Jobs einreichen mit SLURM
Aus HPC@HU
Einführung
Der Queue-Manager für HPC@HU ist SLURM ( siehe https://slurm.schedmd.com/quickstart.html )
Ein Beispiel kann wie folgt aussehen:
#!/bin/bash
#SBATCH --ntasks=1 # Run on a single CPU
#SBATCH --mem=1gb # Job memory request
#SBATCH --time=00:05:00 # Time limit hrs:min:sec
#SBATCH --partition=std
#SBATCH --account=nutzername
hostname
Hier steht hostname beispielhaft für einen Script oder die Ausführung einer Software für Berechnungen.
Sollten im Script Variablen gesetzt werden, ist es wichtig dass dies erst nach der Definition des Jobs für SLURM geschieht.
Nennt sich der Scirpt submit.bash
, lässt sich dieser dann über
sbatch submit.bash
beim Scheduler einreichen.
Der aktuelle Status lässt sich über
squeue
oder
squeue -u Nutzername
abfragen.
Parallelisierung mit mehreren Compute-Knoten:
Es ist möglich Berechnungen über mehrere Compute-Knoten laufen zu lassen. Hierbei sollte bedacht werden, dass Abhängig von den Virtuellen Maschinen in der aktuellen Konfiguration, die Kommunikation lokal auf einem Server oder über 100GBit/s Ethernet stattfindet.
Hierbei ist die Integration von openMPI und SLURM von der Nutzerseite einfach zu handhaben.
Um eine Berechnung über 2 Compute-Knoten laufen zu lassen, definiere ich zum Beispiel meine Anzahl an Threads sowie die Anzahl der Knoten:
#!/bin/bash #SBATCH --ntasks=40 # Run 40 threads/processes #SBATCH --ntasks-per-node=20 # Run 20 per compute node #SBATCH --nodes=2 # Run on 2 nodes #SBATCH --mem=80gb # Job memory needed per node (per node is important!!) #SBATCH --time=96:00:00 # Time limit hrs:min:sec #SBATCH --partition=std #SBATCH --account=<user account>
Danach rufe ich mein Programm ganz gewöhnlich über mpirun auf. Der Aufruf des Programms (hier xhpl) sieht dann wie folgt aus:
mpirun -np 40 xhpl
Interaktive Sessions
Es ist möglich interaktive Sessions auf den Compute Knoten zu starten. Hierbei müsse die Ressourcen direkt auf der Befehlszeile angefordert werden, zum Beispiel wie folgt:
srun --nodes=1 --exclusive --pty bash -i
oder auch
srun --nodes=1 --ntasks-per-node=1 --time=01:00:00 --pty bash -i
Verfügbare Ressourcen:
Aktuell eingerichtete virtuelle Maschinen verfügen über je:
- 64 Threads (ûber 32 Kerne)
- 256GB Arbeitsspeicher
- knapp 1,5TB lokalen scratch