Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Codeblock
languagebash
titlestartScript1.sh (Minimalbeispiel)
firstline2
linenumberstrue
#!/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.

Codeblock
languagebash
titlestartScript1.sh (Minimalbeispiel)
firstline2
linenumberstrue
#!/ 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- Script . R R - Output . RoutOutput2.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.In d