Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 5 Nächste Version anzeigen »

 

Das Batchsystem verwaltet die eingegangenen Arbeitsaufträge und startet die Ausführung auf den eigentlichen Rechenknoten des Clusters.

Die folgende Abbildung gibt einen Überblick über den gesamten Arbeitsablauf eines Arbeitsauftrags auf Hilbert.

  1. Die Entwicklung der Programme bzw. Skripte und gegebenenfalls das Datenmanagement findet in der Regel auf dem eigenen Rechner statt.
  2. Die Programme/Skripte und Daten werden auf den Festplattenspeicher des Login-Knoten übermittelt.
  3. Ein Shell-Skript wird an das Batchsystem geschickt. Dieses Skript enthält sowohl Meta-Informationen zum Auftrag, als auch den eigentlichen Auftrag in Form eines Skripts oder eines Programmaufrufs.
  4. Das Batchsystem sortiert es gemäß spezieller Kriterien den Arbeitsauftrag in Warteschlangen ein, konfiguriert gemäß der Meta-Informationen den angefragten virtuellen Rechner und startet die Bearbeitung.
  5. Während der Bearbeitungszeit kann entweder über das Batchsystem oder über das Monitoring-Tool "myJam" der Status des Auftrags überwacht werden.

 

Das Batchsystem ist zentraler Bestandteil der Arbeit mit Hilbert. Es nimmt die Arbeitsaufträge der Nutzer entgegen, plant deren Ausführung, konfiguriert die virtuellen Rechner und starte die Jobs.

Kommunikation mit dem Batchsystem

Die Kommunikation geschieht über spezielle Konsolen-Befehle. Die folgende Liste führt häufig verwendeten Befehle auf:

  1. Ein Arbeitsauftrag an das Batchsystem senden:

    qsub SHELL-SCRIPT

    "SHELL-SCRIPT" bezeichnet hier den Namen  des entsprechenden Skripts, dass die Meta-Informationen und die eigentliche Befehle bzw. Programmaufrufe des Arbeitsauftrags umfassen. Die Inhalte und Struktur eines solchen Skripts wird weiter unten besprochen. Als Rückantwort des qsub Befehls wir Ihnen die Job-ID mitgeteilt mit deren Hilfe Sie den Status des Arbeitsauftrags überwachen können.

  2. Einen bereits übermittelten Arbeitsauftrag (gegebenenfalls anhalten und) löschen:

    qdel JOB-ID

    "JOB-ID" bezeichnet die Job-ID Ihres Arbeitsauftrags, die Ihnen beim übermitteln des Arbeitsauftrags zugeteilt wurde (siehe "qsub").

  3. Statusinformationen abrufen:

    qstat -f JOB-ID
    qstat -u ACCOUNT-NAME
    qstat -q

    In der ersten Zeile werden Informationen zu einem konkreten Arbeitsauftrag abgerufen. In der zweiten Zeile werden Informationen zu allen Arbeitsaufträgen, die unter Ihrem Namen übermittelt wurden, abgefragt. In der letzten Zeile wird der Status (Auslastung, etc) der Warteschlangen des Batchsystems ausgelesen. (Weiterführende Informationen: Kapitel 11 im PBS Pro User's Guide)

Das Shell-Skript

Das folgenden Minimalbeispiel illustriert den Aufbau und den Inhalt eines typischen Shell-Skripts.

startScript1.sh (Minimalbeispiel)
#!/bin/bash
# PBS -l select=1:ncpus=2:mem=3gb
# PBS -l walltime=01:59:00
# PBS -A "HPC-Project"

module load R

R CMD BATCH --slave R-Script.R R-Output.Rout

Mit dem Ausdruck in Zeile (1) wird mitgeteilt, dass es sich in der Folge um ein Bash-Skript handelt. (2)-(4) Beinhalten PBS-Direktiven, Anweisungen für das Batchsystem. In Zeile (2) wird mit dem Schlüsselwort "select" angegeben wieviele Rechenknoten involviert sein sollen (ein Rechenknoten umfasst i.d.R. mehrere  Prozessoren und diese wieder mehrere Kerne). Mit dem Schlüsselwort "ncpus" wird die Anzahl an Kernen angegeben die je Knoten benutzt werden sollen. Zuletzt wird mit "mem" der zu reservierende Arbeitsspeicher je Knoten festgelegt.

"walltime" beschreibt die  erwartete Rechendauer. Gemäß der Rechendauer wird der Arbeitsauftrag in eine passende Warteschlange eingruppiert. Unter anderem gibt es die drei Warteschlangen, die sich insbesondere in der maximalen Rechendauer unterscheiden (I) "short" (weniger als 2h), (II) "work" (weniger als 72h bzw. 3 Tage) und (III) "long" (weniger als 168h bzw. 1 Woche).

In der letzten PBS-Direktive in Zeile (4) wird angegeben zu welchem beantragten Projekt dieser Arbeitsauftrag gehört. Das "HPC-Project" ist hierbei der Projekt-Name, der beim Antrag zur Nutzung des HPC-Clusters angegeben wurde.

Nach den PBS-Direktiven kommt der eigentliche Arbeitsauftrag in Form des Bash-Skripts. Mit "module ..." wird dem System mitgeteilt welche Softwareumgebung bereitgestellt werden soll (siehe hierzu ....). In diesem Beispiel soll eine Softwareumgebung mit der Statistiksoftware R bereitgestellt werden.

Mit dem Befehl in der letzten Zeile wird R im Batch-Mode gestartet und führt das angegebene R-Skript aus und speichert die Resultate in die Datei "R-Output.Rout".

Ein solches Skript würde dann mit "qsub startScript1.sh" an das Batchsystem übermittelt werden.

Paralleles Arbeiten in der Shell

Häufig bieten die genutzten Programme wie Matlab, R, usw. Möglichkeiten die gewünschten Berechnungen auf mehrere Prozessoren zu verteilen. Eine weitere Möglichkeit ist direkt in Shell gegeben. Der folgende Code zeigt ein Skript, in dem zuerst zwei R-Instanzen geöffnet werden, die jeweils ein Skript verarbeiten. Das "&" Zeichen am Ende der Zeile weist das System an, nicht auf die Fertigstellung zu warten und beginn dann parallel mit dem nächsten Befehl. Der Befehl "wait" bewirkt, dass bei der Abarbeitung des Batch-Skripts solange gewarte wird, bis die zuvor begonnenen Befehle beendet wurden. Daran schließt sich zwei weitere Aufrufe von R an.

startScript1.sh (Minimalbeispiel)
#!/ bin / bash
# PBS -l select =1: ncpus =2: mem =3 gb
# PBS -l walltime =01:59:00
# PBS -A " SinStatEc "

module load R
R CMD BATCH --slave R-Script1.R R-Output1.Rout &
R CMD BATCH --slave R-Script2.R R-Output2.Rout &
wait
R CMD BATCH --slave R-Script3.R R-Output3.Rout &
R CMD BATCH --slave R-Script4.R R-Output4.Rout &
wait

Das parallele Arbeiten in der Shell kann durch Programme wie "parallel" (benötigt "module load Parallel") stark angepasst und feiner gesteuert werden.

  • Keine Stichwörter