Jobs einreichen mit SLURM

Aus HPC@HU

Version vom 6. August 2024, 12:40 Uhr von Mielczad (Diskussion | Beiträge) (Interaktive Sessions hinzugefügt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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