Versionen im Vergleich

Schlüssel

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

An unserem Lehrstuhl wird ein aus 40 42 Rechenknoten bestehendes Cluster betrieben. Dieses ist sowohl für Studierende, welche am Lehrstuhl Abschluss- bzw. Projektarbeiten anfertigen, sowie für die Mitarbeiter des Lehrstuhls zugänglich. Für die faire Zuteilung von Ressourcen wird innerhalb des Clusters die Scheduling-Software OpenPBS eingesetzt.

...

HOSTCPURAMNVRAMHDDSSDETHERNETINFINIBAND
node21 - node382x Xeon E5-2697v2 (12x 2,7 Ghz)128 GB--128 GB1 Gbit/s56 Gbit/s
node63 - node64Xeon E3-1220 (4x 3,1 GHz)32 GB-1 TB240 GB

1 Gbit/s

56 Gbit/s
node65 - node72Xeon E5-1650 (6x 3,5 GHz)64 GB-1 TB240 GB

1 Gbit/s

56 Gbit/s
node73 - node80Xeon E5-1650 (6x 3,5 GHz)64 GB-1 TB480 GB

1 Gbit/s

56 Gbit/s

node81 - node82Xeon Silver 4216 (16x 2,1 GHz) 64 GB-1 TB480 GB  10 Gbit/s100 Gbit/s
node83 - node84Xeon Gold 5218 (16x 2,3 GHz) 64 GB128 GB2 TB480 GB    1 Gbit/s   100 Gbit/s

Verteilte Jobs

Das OpenPBS System unterstützt die Möglichkeit Jobs auf mehreren Hosts parallel auszuführen, um bspw. ein verteiltes System aufzusetzen. Ein beispielhaftes Jobskript, welches zwei Hosts zur Ausführung nutzt und hierbei den Ausführungsort unterscheidet, könnte folgendermaßen aussehen.

Codeblock
languagebash
titleJobskript mit mehreren Hosts
#!/bin/bash
#PBS -l select=1:ncpus=4:mem=8gb+1:ncpus=1:mem=4gb
#PBS -l place=scatter

pbsdsh bash my_script.sh

Die Angabe von place=scatter bewirkt, dass die innerhalb der ersten Zeile angegebenen Ressourcen auf verschiedene Hosts verteilt werden. Nachdem die Ressourcen des Jobs verfürbar sind, wird das Jobskript auf dem ersten Knoten gestartet, von wo aus ein weiteres Skript mittels des pbsdsh Befehls auf allen beteiligten Knoten (inklusive des ersten) ausgeführt wird. Dieser Befehl ist blockierend und kehrt erst zurück, wenn alle Knoten den angegebenen Befehl bearbeitet haben.

Codeblock
languagebash
titlemy_script.sh
# Erster Knoten
if [ "${PBS_NODENUM}" == "0" ]; then
  echo "Erster Knoten"
fi

# Zweiter Knoten
if [ "${PBS_NODENUM}" == "1" ]; then
  echo "Zweiter Knoten"
fi

Im auszuführenden Skript kann mittels der Umgebungsvariable PBS_NODENUM der Host, auf welchem das Skript aktuell ausgeführt wird, unterschieden werden.

Singularity Container

Status
colourGreen
titleVersion • 3.7.0

Sofern Software benötigt wird die nicht auf dem Cluster installiert ist und sich nicht im Home-Verzeichnis installieren lässt, weil beispielsweise Root-Rechte benötigt werden, so kann ein Singularity-Container verwendet werden. Hierzu ist es vorerst notwendig einen Container zu bauen. Eine Anleitung findet sich innerhalb der offiziellen Dokumentation. Da das Bauen von Containern ausschließlich mit root-Rechten möglich ist, muss dies außerhalb des Clusters geschehen.

Alternativ ist es möglich den Container mittels eines Remote Builders in der Sylabs Cloud zu bauen. Hierfür wird ein entsprechender Account benötigt.

Nachdem der Container gebaut und auf das Cluster übertragen wurde, kann er mit den folgenden Befehlen gestartet werden.

Codeblock
languagetext
themeMidnight
titleInteraktives arbeiten in einem Singularity Container
student@node80:~/containers$ singularity shell my_custom_container.sif 
Singularity>

Der standarmäßig gesetzte Prompt Singularity> kann durch setzen der SINGULARITYENV_PS1 Umgebungsvariable angepasst werden. Das folgende Beispiel ergänzt zu Anfang den Namen des Containers. Die Umgebungsvariable kann auch in ~/.bashrc gesetzt werden.

Codeblock
languagetext
themeMidnight
titleAnpassen des Prompts
student@node80:~/containers$ export SINGULARITYENV_PS1='(${SINGULARITY_NAME/.sif/}) \[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
student@node80:~/containers$ singularity shell my_custom_container.sif 
(my_custom_container) student@node80:~/containers$ 

Home-Directory / NFS

Die Daten in Ihrem Homeverzeichnis werden über das Network File System (NFS) bereitgestellt. Die Daten werden nicht durch ein Backup gesichert. Zudem ist zu beachten, dass unsere NFS-Dateisystemversion keine Sperren auf Dateien anbietet. Letzteres kann dazu führen, dass manche Software nicht ausführbar / installierbar ist, obwohl dies zu Hause auf dem Laptop geklappt hat. Das Problems mit Locks ist selten, aber falls es auftritt nicht sofort erkennbar, daher dieser Hinweis.

NVRAM

Unter Linux wird NVRAM über das Dateisystem bereitgestellt und die Anwendungen können dann Dateien mit mmap in den Adressraum einblenden. Auf den Knoten die NVRAM haben wird der Zugriff im Dateisystem durch das Verzeichnis /mypmemfs bereitgestellt. Hier kann jeder Benutzer Dateien erzeugen und seine Dateien lesen, schreiben und loeschen (die Berechtigungen entsprechend denen im /tmp Verzeichnis).

Der Persistent Memory Development Kit (PMDK) mit gcc etc. wird durch folgenden Singularity Container bereitgestellt: /software/container/pmem.sif. Um diesen zu nutzen kann eine Shell im Container gestartet werden. Hierbei ist es wichtig, dass /mypmemfs mit dem Bind-Parameter gemountet wird.

Codeblock
languagetext
themeMidnight
titlePMDK mit Singularity nutzen
student@node83:~$ singularity shell --bind /mypmemfs pmem.sif

...

node85 - node86Xeon Gold 5318N (24x 2,1 GHz)192 GB128 GB-480 GB10 Gbit/s100 Gbit/s