Direkt zum Inhalt

Informationen zum Stapelsystem PBS Professional

Für den Umgang mit dem Stapelsystem PBS Pro sind folgende Kommandos vorhanden:

KommandoBeschreibung
qsub {parameter} {jobskript}Abgabe eines Jobs
qstat {parameter} {job-id}Status eines/aller Ihrer Jobs abfragen
qalter {parameter} {job-id}Parameter eines Jobs nachträglich anpassen
qdel {parameter} {job-id}Job beenden bzw. löschen

Jobs werden an das Clustersystem mittels Skripten übergeben. Der Skriptkopf beginnt mit einer Hash-Bang Zeile (z.B.: "#!/bin/bash") und enthält anschließend Kommandos für das Stapelsystem PBS. Anweisungen dafür beginnen mit "#PBS":

AnweisungBeschreibung
#PBS -N JobnameName des Jobs
#PBS -l select=X:ncpus=Y:mpiprocs=Y:mem=ZgbRessourcenanforderung bzgl. Hardware
#PBS -l walltime=XX:YY:ZZRessourcenanforderung bzgl. Laufzeit
#PBS -l place={scatter|vscatter|pack|free|{:excl|exclhost|shared}{|:group=host}scatter ... Jeder Chunk bekommt eine eigene Node
vscatter ... Jeder Chunk bekommt eine eigene VNode (entspricht einem Prozessorsockel) 
pack ... Alles wird auf einer Node gerechnet
free ... Wahllose Verteilung der Chunks
excl ... Kein weiterer Job startet auf der VNode, auch wenn noch Ressourcen frei sind
exclhost ... Die komplette Node wird blockiert
shared ... Standardverhalten; Ressourcen werden mit anderen Jobs geteilt
group=host ... Alle Chunks müssen auf der gleichen Node sein
#PBS -m abeE-Mail Benachrichtigung bei Abbruch, Beginn und Ende des Jobs
#PBS -M Ihre [dot] Mailadresse [at] tu-freiberg [dot] deE-Mailempfänger für Benachrichtigungen
#PBS -o standardausgabe.outAlternative Ausgabedatei verwenden
Standardwert: "<jobname>.o<jobid>
#PBS -e fehlerausgabe.outAlternative Fehlerausgabedatei verwenden
Standardwert: "<jobname>.e<jobid>
#PBS -r y "Rerunable", Job bei Fehler automatisch neu einstellen
Standardwert: "true"
#PBS -q entryqAngabe der Queue
Nur für GPU- und institutseigene Knoten notwendig

Alle Parameter können auch als qsub-Parameter auf der Kommandozeile mitgegeben werden und überschreiben in diesem Fall Werte in einem Jobskript.

Nach dem Festlegen der oben genannten PBS Optionen sollte der Hauptteil des Skriptes mindestens Folgendes enthalten:

  • zu ladende Software
  • Programmaufruf mit Eingabedatei und ggf. weiteren Parametern

Konkrete Beispiele finden Sie unter den Beispielskripten.

Erklärung zu den angeforderten Ressourcen

ParameterBeschreibung
selectAnzahl der angeforderten "Chunks".
ncpusAnzahl der Cores pro Chunk
Kann maximal 40 bzw. 64 sein.
mpiprocsAnzahl der MPI-Prozesse pro Core.
Kann maximal zwei Mal die Anzahl ncpus sein (Hyper-Threading).
ompthreadsAnzahl der OpenMP Threads je Prozess.
Kann maximal zwei Mal die Anzahl ncpus sein (Hyper-Threading).
memAngeforderter Arbeitsspeicher pro Chunk.
Mögliche Einheiten: MB, GB, TB
ngpusAngeforderte GPUs pro Chunk
Kann maximal gleich "1" sein, da nur eine GPU pro Node vorhanden ist
walltime Maximale Laufzeit im Format HHH:MM:SS

Beispiel 1: qsub -l select=2:ncpus=20:mpiprocs=10:ompthreads=2:mem=40GB,walltime=10:00:00 -o job.out -e job.err pbspro.script

Hier soll eine parallele Berechnung von maximal 10 Stunden durchgeführt werden. Die Ausgabedateien sind job.out und job.err. Die Prozesse verteilen sich auf 2 Chunks mit je 20 Cores, welche wiederum 10 MPI-Prozesse haben. D.h. um die 20 geforderten Cores auszulasten, muss die Anwendung mit 2 Threads pro MPI-Prozess laufen. Die Walltime muss im Format HHH:MM:SS auch wenn Null-Werte mit angegeben sind. Die Auswertung des Strings erfolgt von rechts nach links.

  • walltime=120:00 ergibt demzufolge nicht 120 h, sondern 2 h
  • um 120 h zu erhalten, muss man walltime=120:00:00 spezifizieren

Beispiel 2: qsub -l select=2:ncpus=40:mpiprocs=80:mem=80GB

Es werden zwei volle Knoten inkl. der Hyper-Threads gebucht.

Beispiel 3: qsub -l select=1:ncpus=40:ompthreads=80:mem=80GB

Hier wird eine OpenMP-Anwendung einen Knoten vollständig auslasten.
 

Beispiel 4: qsub -l select=1:ncpus=40:mpiprocs=40:ompthreads=2:mem=80GB

 

Dieses Beispiel zeigt eine die Anforderung für eine hybride Anwendung mit 40 MPI-Ranks und je zwei OpenMP-Threads je Rank.

Interaktive Jobs

Im Stapelbetrieb interaktiv auf einer Kommandozeile zu arbeiten, ermöglicht z.B. Tests zu absolvieren oder Programme zu debuggen . Dazu nutzen Sie den Befehl qsub -I [Optionen] (groß i). Die Optionen sind analog zu den oben genannten PBS-Anweisungen.

Beispiel: qsub -I -l select=1:ncpus=10:mpiprocs=10:mem=10GB # (erst groß i, dann klein L)
 

Ebenso können Sie interaktive Jobs nutzen, um grafische Anwendungen auf Ihrem Endgerät darzustellen und dabei aber Rechenkapazitäten vom Cluster zu nutzen. Unterstützung seitens der Anwendung wird vorausgesetzt. Dazu verwenden Sie qsub -I -X [Optionen]. Loggen Sie sich vorher auch auf dem Loginknoten mit aktiviertem X-Forwarding ein ("ssh -X mlogin01").

Reservierungen

Um Ressourcen des Systems für einen gewissen Zeitraum exklusiv zu nutzen ohne an einen einzelnen Job und an dessen Wartezeit gebunden zu sein, kann man über PBS Reservierungen vornehmen. Dazu dienen folgende Kommandos.

KommandoErklärung
pbs_rsubErstellen einer Reservierung
pbs_rstatStatusabfrage von Reservierungen
pbs_rdelEine Reservierung löschen
pbs_ralterEine Reservierung ändern

Folgende Parameter können bei pbs_rsub verwendet werden:

ParameterBeschreibung
-R [[[[CC]YY]MM]DD]hhmm[.SS]Startzeitpunkt
-E [[[[CC]YY]MM]DD]hhmm[.SS]Endzeitpunkt
-D [[HH:]MM:]SSDauer der Reservierung
-N <Name>Name der Reservierung
-l <Ressourcenanforderung>Ressourcenmenge definieren
-U <Nutzerliste>Kommagetrennte Nutzerliste
-m abceE-Mail Benachrichtigung bei Abbruch, Beginn, Bestätigung und Ende der Reservierung
-M <E-Mail-Liste>Kommagetrennte Liste an E-Mailadressen für Benachrichtigungen

Für die Zeitangaben müssen mindestens zwei der drei genannten Parameter gesetzt sein.

Beispiel

pbs_rsub -R 0800 -D 06:00:00 -l select=5:ncpus=40:mem=100gb

Erklärung

Dieser Befehl fordert 5 Knoten mit je 40 Cores und 100GB Arbeitsspeicher für 6h ab zum nächsten 08:00 Uhr Zeitpunkt.

Verwendung

Der Rückgabewert kann wie folgt aussehen: "R1234.mmaster CONFIRMED". Im Reservierungszeitfenster schicken Sie Ihre Jobs dann an die Queue "R1234", z.B.:
qsub -q R1234 -l select=5:ncpus=40:mem=100gb
Die Aufteilung der gebuchten Ressourcen auf mehrere Jobs ist möglich.

Stehen die angeforderten Ressourcen und/oder der angeforderte Zeitraum nicht zur Verfügung, wird die Reservierung "R1234.mmaster DENIED" abgewiesen.

Limitierungen

Innerhalb eines Jobs sind nur die angeforderten Ressourcen sichtbar. Dies kann zur Folge haben, dass eine Überbuchung von CPU oder Arbeitsspeicher Ihre Programme und damit ggf. den ganzen Job abstürzen lässt.