Programme interaktiv starten
Interaktives Arbeiten im Linux-Cluster - Überblick
Unter "interaktivem Arbeiten" versteht man die direkte Bedienung eines Servers, weil z.B. das auszuführende Programm zur Laufzeit Benutzereingaben benötigt. Das kann ein Programm mit grafischer Benutzeroberfläche wie Matlab sein, aber auch Programmentwicklung oder eine Softwareinstallation ins eigene Homeverzeichnis.
In diesem Kapitel werden folgende Themen erläutert:
- Grafische Benutzeroberflächen vom Linux-Cluster auf den eigenen PC übertragen
- Erste Schritte im Linux-Cluster direkt auf dem Node its-cs10 zu Testzwecken ohne Reservierung
- Reservieren von Nodes um direkt auf diesen interaktiv Arbeiten zu können.
Anzeigen grafischer Oberflächen
Um eine grafische Oberfläche wie die von Matlab oder Abaqus vom Linux-Cluster auf den eigenen Computer übertragen zu können, muss die sogenannte "X11 Weiterleitung" bzw. "X Window" genutzt werden.
Unter Linux muss dafür lediglich beim ssh-Befehl die Option "-Y" (empfohlen) oder alternativ "-X" angehängt werden.
Unter Windows gibt es mehre Möglichkeiten:
- Wenn Sie das Programm MobaXterm (empfohlen) für den Zugriff auf den Linux-Cluster verwenden, können Sie ohne weitere Einstellungen grafische Benutzeroberflächen übertragen.
- Alternativ setzen Sie die Programme PuTTY und Xming (X Server for Windows) gemeinsam ein. Wenn Xming gestartet ist, zeigt dieses ein "X" in der rechten unteren Ecke der Windowsoberfläche an. In PuTTY muss noch das X11 aktiviert werden. Dies geht im PuTTY Menü unter Connection/SSH/X11. Dort setzen Sie den Hacken bei "Enable X11 forwarding" und geben als "X display location" den Wert "localhost:0" ohne Anführungszeichen an.
Interaktives Arbeiten ohne Reservierung
Für interaktive Arbeiten (Programmentwicklung, Softwareportierung) steht der Rechner its-cs10.its.uni-kassel.de zur Verfügung. Der Zugang auf diesen Rechner erfolgt vom its-cs1 (der Zugriff auf diesen Node ist unter Zugang beschrieben) per ssh its-cs10. Aus aus dem Hochschulnetz ist auch der direkte Zugriff per ssh uk00123@its-cs10.its.uni-kassel.de möglich.
Der Knoten its-cs10 ist nicht an die Ressourcenverwaltung des Linux-Clusters angebunden und darf als einziger Server direkt zum Arbeiten verwendet werden. Dafür bietet der Knoten für Test- und Entwicklungszwecke die gleiche Softwareumgebung wie das Linux-Cluster und besitzt die gleichen Programme.
Interaktives Arbeiten auf allokiertem Node
Es ist möglich, einen Computer des Clusters für eine bestimmte Zeit zu reservieren. Das hat im Gegensatz zur Verwendung des its-cs10 den Vorteil, dass die allokierten (=reservierten) Ressourcen dann nur dem einen Nutzer zur Verfügung stehen und weiterhin die Konsole nach jedem abgearbeiteten Befehl genutzt werden kann. Sollen eigentlich nur aufwändige Programme ausgeführt werden und dieser interaktive Zugriff nicht nötig sein, wird der "normale" Batch-Betrieb mit einem Submit-Script empfohlen!
Um einen Node zu reservieren gibt es zwei Möglichkeiten. In beiden Fällen müssen Sie sich auf dem its-cs1 befinden:
Variante 1:
Über das Kommando salloc beantragen Sie die gewünschten Ressourcen. Nach Zuteilung dieser Ressourcen kann mit dem Kommando srun Befehle auf den reservierten Ressourcen, statt auf dem its-cs1 selbst, ausgeführt werden. Der Vorteil dieser Variante ist, dass die Ressourcen reserviert bleiben, auch wenn Sie mehrere Befehle absetzen. Erst nach dem Schließen des Shell mittels Strg+D oder Ablauf der Reservierungszeit wird die Reservierung beendet.
Im folgendem Beispiel wird ein Knoten aus der Partition "public" für eine Stunde beantragt und anschließend mit dem Kommando srun xterm ein Shellfenster auf dem zugewiesenen Knoten gestartet:
uk00123@its-cs1:/home/users/000/uk00123> salloc -p public -t 1:00:00 salloc: Granted job allocation 5404733 uk00123@its-cs1:/home/users/000/uk00123> srun xterm |
Variante 2:
Im folgenden Beispiel wird auf vorheriges salloc verzichtet. Die Ressourcen werden dann durch den srun Befehl allokiert und direkt das Programm xterm gestartet.
uk00123@its-cs1:/home/users/000/uk00123> srun -p minijobs -t 1:00:00 xterm salloc: Granted job allocation 5404734 |
Wird das mit srun gestartete Programm (hier xterm) beendet, wird auch die Reservierung beendet.
In einem Shellfenster von xterm können auf dem zugewiesenen Knoten nun weitere Anwendungen oder Skripte innerhalb der angeforderten Zeit gestartet werden. Sie können sich mit dem Befehl "hostname" vergewissern, dass die Befehle wirklich auf dem reservierten Node und nicht auf dem its-cs1 ausgeführt werden.
Einzelnes Programm starten:
Natürlich lassen sich auch andere Anwendungen mit grafischer Benutzeroberfläche aufrufen, wie z.B. Mathematica:
uk00123@its-cs1:/home/users/000/uk00123> srun -p minijobs -t 1:00:00 Mathematica |
Die Optionen von srun und salloc spezifizieren die Ressourcen für den interaktiven Betrieb (benötigte Hardware, Laufzeit, Partition, etc.). Dies ist jedoch nur dann ohne Wartezeit möglich, wenn die angeforderten Ressourcen zur Verfügung stehen und nicht bereits belegt sind. Evtl vergeht eine längere Wartezeit, bis die Ressourcen frei sind. Tipp: Vorher mit srun herausfinden, in welcher Partitition bereits Nodes verfügbar sind und gezielt Nodes aus dieser Partition mit der -p Option anfordern.
Mehrere Nodes/CPUs gleichzeitig allokieren:
Es ist möglich, mit mehreren Nodes gleichzeitig zu arbeiten. Dafür kann bei salloc und srun die Option -N 2 für zwei Nodes oder -n 4 für 4 CPUs verwendet werden. Ein mit srun abgesetzter Befehl wird nun auf allen reservierten Ressourcen ausgeführt und Ausgaben erscheinen in zufälliger Reihenfolge.
MPI-Anwendungen benötigen das srun-Kommando nicht. Diese werden nach dem salloc-Aufruf direkt mit mpirun gestartet. mpirun greift dann automatisch auf die Ressourcen zu, die mit salloc zugewiesen wurden.
Beispiele:
Kommando | Beschreibung |
---|---|
salloc -N1 -p exec --exclusive -t 2:00:00 | Ein Rechner aus der Partiton exec wird für 2 Stunden benötigt. Die Nutzung soll exclusiv sein. D.h. Anwendungen anderer Nutzer sollen auf den beantragten Rechner nicht zugelassen werden. |
salloc -N1 -p exec --mem=64000 | Ein Rechner aus der Partition exec mit mindestens 64 GB Hauptspeicher wird benötigt. |
salloc -N2 -C Infiniband | 2 Rechner mit Infiniband-Vernetzung werden benötigt |
salloc -N2 -C Infiniband -C 12cores | 2 Rechner mit Infiniband-Vernetzung und jeweils 12 CPU-Kernen werden benötigt |
Allgemeine Syntax für salloc:
Syntax: | salloc [options] [<command> [command args]] |
-C <feature> | specify features of Linux Cluster |
--exclusive | job allocation can not share nodes with other running jobs |
--mem=<MB> | specify real memory required per node |
-N <min[-max]> | min to max of nodes will be allocated to this job. |
-p <partition> | request specific partition for resource allocation |
-t <time> | set limit on total run time of the job allocation |