Zu Entwicklungszwecken gibt es zwei getrennte Server, welche nur für Compile und Development verwendet werden dürfen. Es gibt ein Walltime-Limit von 4 Stunden und es wird empfohlen interaktive Jobs zu nutzen.

Auf den Servern sind diverse Entwicklungspakete für Standardbibliotheken und Debugger installiert.

Schritt-für-Schritt-Anleitung

  1. Login auf dem Login-Server per ssh

    ssh Kennung@hpc.rz.uni-duesseldorf.de
  2. Interaktiven Job anfordern mit 10 Kernen, 10GB Ram und 4 Stunden Walltime

    qsub -A Projekt -I -l select=1:ncpus=10:mem=10G -l walltime=3:59:00
  3. Nach wenigen Sekunden werden Sie auf einen der Knoten verbunden.

  4. Nun können Sie auf dem Knoten wie gewohnt Module laden und Code kompilieren

Automatischer Logout

Wenn Sie in ihren interaktiven Jobs Programme starten die möglicherweise schnell wieder beendet sind, empfiehlt es sich der Shell mitzuteilen, dass sie sich automatisch ausloggen soll um die Ressourcen vom Job wieder freizugeben.

Eine einfach Lösung dafür ist es, die Variable TMOUT zu setzen:

~/.bashrc
if [ ! -z ${PBS_JOBID+x} ]; then
        TMOUT=3600
        readonly TMOUT
        export TMOUT
fi

Damit wird eine interaktive Session innerhalb eines Jobs nach 1 Stunde ohne Eingabe / neue Programmstarts beendet.

Bash History

Die Standard-Shell der interaktiven Session, Bash, protokolliert ausgeführte Befehle auf der Kommandozeile in der sogenannten history analog zu einem Browserverlauf. Dies kann hilfreich sein, um bereits ausgeführte Befehle wiederzuverwenden, ohne sie neu eintippen zu müssen. Durch Eingabe des Befehls history kann der gesamte gespeicherte Verlauf ausgegeben werden. Alternativ können durch Angabe eines Parameters n (history n) die letzten n Befehle angezeigt werden.

History durchsuchen

Der Verlauf kann auch dazu verwendet werden, bereits ausgeführte Befehle zu suchen und direkt in der aktuellen Eingabeaufforderung einzufügen. Dazu dient beispielsweise das Tastenkürzel Ctrl+R. Dann ändert sich der Text der Eingabeaufforderung zu (reverse-i-search) und es kann ein Suchbegriff eingegeben werden. Die Kommandozeile schlägt automatisch den ersten Treffer zu diesem Suchbegriff vor, durch erneutes Drücken von Ctrl+R können weitere Treffer angezeigt werden. Die Treffer werden in einer umgekehrt chronlogischen Reihenfolge angezeigt (zuletzt eingegebene Befehle zuerst). Der vorgeschlagene Befehl kann vor der Ausführung noch bearbeitet werden, anschließend mit Enter die Ausführung bestätigen.

History zwischen verschiedenen Instanzen synchronisieren

Der Verlauf wird normalerweise erst beim Beenden einer interaktiven Session gespeichert. Während der Session ist der aktuelle Verlauf nur für die jeweilige Sitzung sichtbar. Für weitere, parallele Sitzungen desselben Nutzers ist der aktuelle Verlauf nicht sichtbar. Außerdem wird der Verlauf nicht gespeichert, wenn die Sitzung durch PBS beendet wird, z.B. weil die angeforderte Walltime abgelaufen ist.

Um diese Probleme zu addressieren, ist es möglich, den Verlauf nach der Eingabe jedes Befehls direkt zu sichern (und neu zu laden). So sind neue Kommandos direkt für alle Sitzungen desselben Nutzers sichtbar, und der Verlauf geht auch nicht verloren, wenn die Sitzung durch PBS beendet wird. Dazu in der Datei .bashrc im Benutzerverzeichnis die folgende Zeile anfügen:

echo 'declare PROMPT_COMMAND="history -a;history -r"'  >> ~/.bashrc

Von nun an wird jede neue interaktive Session diese Einstellung berücksichtigen und den Verlauf immer sofort speichern.

Kommentar

  1. Anonym sagt:

    Verwandter Artikel führt zu falschen Seite!