PBSpro Batch-System
Auf dem Parallelrechner SGI Altix sowie den Linuxclustern Hali und Apis wird das Batchsystem PBSpro der Firma Altair eingesetzt.
Wichtige Befehle und Optionen
qsub: Absenden von Batch-Jobs
In der Kommandozeile werden Batch-Jobs mit qsub mein_job abgeschickt. Wichtige qsub-Optionen sind in der folgenden Tabelle zusammengefasst. Sie können als Kommandozeilenoptionen z.B. qsub -l walltime=4:00:00 mein_job oder zeilenweise im Batchskript z.B.#PBS -l walltime=4:00:00angegeben werden, siehe auch die Beispielskripte unten auf dieser Seite. Sind Optionen doppelt, im Skript und in der Kommandozeile, angegeben, übernimmt PBSpro den Wert aus der Kommandozeile.
Eine Queue sollte nicht angegeben werden. PBSpro wählt die Queue an Hand der geforderten Ressourcen.
| qsub Option | Beispiel | Bemerkung |
|---|---|---|
| -M <Mailadresse> | -M name@tu-harburg.de | Muss angegeben werden, weil Systemmails sonst nicht ankommen! |
| -l <resource> | -l ncpus=4 | SMP-paralleler Job auf 4 Cores. Default: 1 Core. |
| -l mem=8gb | Job benötigt max. 8 GB RAM Memory. | |
| -l mem_per_core=eins | Job benötigt max. 1GB RAM pro Prozess/Thread. 1GB RAM/Core ist Minimalausstattung auf Hali, Altix und Apis. |
|
| -l walltime=1:30:0 | Job wird max. 1 Stunde, 30 Min., 0 Sek. laufen. Default: 6 Stunden. | |
| -l select=4:os=rhel:ncpus=12 | Job soll auf 4 Red-Hat-Knoten mit je 12 Kernen laufen | |
| -W depend=<cond> | -W depend=afterok:job1 -W depend=afternotok:job1 -W depend=afterany:job1 |
Der Job wird gestartet, wenn 'job1' ohne Fehler beendet ist, 'job1' mit Fehler abgebrochen wurde, 'job1' ohne oder mit Fehler beendet ist. |
| -r n | markiert Job als not rerunnable, d.h. Job wird nach Neustart von PBSpro (z.B. Wartung, Rechnerabsturz) nicht neu gestartet. | |
| -I | Interaktiver Job. qsub -I muss in der Kommandozeile aufgerufen werden, #PBS -I im Skript wird ignoriert. | |
| -N <jobname> | -N my_job | Name des Batchjobs, max. 15 Zeichen. Default: Skriptname. |
| -m [abe|n] | -m ae | PBS sendet Mailnachricht, wenn Job abgebrochen wird (a), startet (b), endet (e) oder nie (n). Default: Mail bei Abbruch. |
| -o <filename> -e <filename> |
-o job1.out -e job1.error |
Lenkt Standard Output bzw. Error um. Default: <jobname>.o<job_id> bzw. <jobname>.e<job_id>. |
| -j oe | -o job1.out -j oe | Schreibt Standard Output und Error in den selben File, -e wird ignoriert. |
| -V | Alle Umgebungsvariablen werden aus der Shell
übernommen, von der aus qsub aufgerufen wird. Praktisch, um ssh-Authentifizierung für Grafikausgabe zu übergeben (nur altix4). Unerwünschte Nebeneffekte möglich! |
|
| -l core=<type> | -l core=single -l core=dual -l core=quad -l core=hexa | Prozessortyp festlegen. Man beachte die Bestückung der Compute Server mit den verschiedenen Mehrkernprozessoren. Dies ist oftmals eine unnötige Einschränkung für PBSPro. |
| -l vnode=<host> | -l vnode=hali15 | Rechenknoten festlegen, dies ist eine starke Einschränkung für PBSPro. |
qstat: Jobs anzeigen
- qstat -a zeigt eine Liste aller laufender und wartender Jobs mit u.a. Job-ID, Anzahl der Cores, angeforderter Laufzeit, und ggfls. der bisherigen Laufzeit.
- qstat -au <User> zeigt eine Liste aller Jobs des Nutzers <user>.
- qstat -f <Jobid> gibt Details zum Job
<Jobid> aus. Interessant ist u.a.
- der tatsäliche Hauptspeicherbedarf resources_used.mem,
- die Laufzeit resources_used.walltime,
- auf Hali die Knoten, auf denen der Job rechnet exec_host.
qout: Ausgabe laufender Jobs anzeigen
Die Jobausgabe wird erst nach Jobende in die Ausgabedatei geschrieben. Die Ausgabe laufender Jobs kann man mit qout <jobid> anzeigen.
qalter: Parameter wartender Jobs ändern
Solange Jobs noch in der Queue warten, können mit qalter <Optionen> <Job-ID> z.B. die Ressourcenanforderung erhöht oder gesenkt, der Jobname geändert oder E-Mail-Benachrichtigungen angefordert werden. Die Syntax der Optionen von qalter entspricht der von qsub.
qdel: Jobs löschen
Jeder Nutzer kann seine eigenen wartenden oder laufenden Jobs mit qdel <Job-ID> löschen.
xpbs: graphisches Frontend
Alle Aufgaben können auch mit Hilfe des graphischen Frontends xpbs erledigt werden.
PBSpro Dokumentation
Beispielskripte
Serieller Job
Ein kurzer Job mit umgelenkter Ausgabe und Umbenennung im File job1. Hier wird der Ressourcenverbrauch mit qstat -f angezeigt, um für folgende Jobs Hauptspeicher und Rechenzeit abschätzen zu können.#!/bin/bash #PBS -o myjob.out #PBS -j oe #PBS -l walltime=0:15:00 #PBS -l ncpus=1 # Modules initialisieren . /etc/profile.d/module.sh # Intel-Compilerumgebung laden # (z.B. falls ./my_programm die MKL nutzt) module load intel # In das Arbeitsverzeichnis wechseln # (alternativ explizite Pfadangabe) cd $PBS_O_WORKDIR ./my_program # Ressourcenverbrauch ausgeben qstat -f $PBS_JOBID exit
Paralleler Job mit MPI auf der SGI Altix
PBS setzt die Variablen OMP_NUM_THREADS und NCPUS auf die Anzahl der verwendeten Prozessoren. Da ein reiner MPI-Job ohne Threads arbeitet, sollte OMP_NUM_THREADS explizit auf 1 gesetzt werden.#!/bin/bash #PBS -o myjob.out #PBS -j oe #PBS -l ncpus=8 #PBS -l walltime=1:30:00 #PBS -M name@tu-harburg.de cd $PBS_O_WORKDIR export OMP_NUM_THREADS=1 mpirun -np $NCPUS ./myprog qstat -f $PBS_JOBID
Paralleler Job mit Shared Memory (OpenMP,...) auf SGI Altix
Die Variable OMP_NUM_THREADS wird von PBS gesetzt. Auf der SGI Altix bindet das Kommando dplace die einzelnen Threads fest an jeweils einen Core, damit ein Thread nicht von seinem lokalen Hauptspeicher weg auf ein anderes Board migriert werden kann.Außerdem fordert dieser Job viel Hauptspeicher an.
#!/bin/bash #PBS -o myjob.out #PBS -j oe #PBS -l ncpus=8 #PBS -l walltime=1:30:00 #PBS -l mem=59gb #PBS -M name@tu-harburg.de cd $PBS_O_WORKDIR dplace -x2 -c0-$((OMP_NUM_THREADS-1)) ./myprog qstat -f $PBS_JOBID
Hybrider paralleler Job mit MPI und Shared Memory auf der SGI Altix
Im folgenden Skript wird die Anzahl der MPI-Tasks automatisch aus der Zahl angeforderter Prozessoren (NCPUS) und der Threads po Task (OMP_NUM_THREADS) bestimmt.#!/bin/bash #PBS -o myjob.out #PBS -j oe #PBS -l ncpus=12 #PBS -l walltime=1:30:00 #PBS -M name@tu-harburg.de export OMP_NUM_THREADS=4 export MPI_TASKS=$(($NCPUS / $OMP_NUM_THREADS)) export MPI_OPENMP_INTEROP=yes cd $PBS_O_WORKDIR mpirun -np $MPI_TASKS ./myprog qstat -f $PBS_JOBID
Ansprechpartner
Fragen, Anregungen? Wenden Sie sich an die Ansprechpartner zum wissenschaftlichen Rechnen im RZ!
