Inhalt |
---|
PBSPro bietet zur besseren Platzierung der Jobs einige Attribute um auf das Verhalten Einfluss zu nehmen. Jedoch versuchen wir die Anzahl dieser Optionen möglichst gering zu halten, da man sonst schnell durcheinander kommt oder fehlerhafte Anforderungen stellt.
vNodes auf der UV2000
Die UV2000 besteht aus jeweils 256 CPU-Cores und 8 TB Ram. Diese sind für das Batch-System aufgeteilt in 32 vNodes mit jeweils 8 CPU-Cores und dem dazugehörigen Memory von ca. 256GB Ram, welche direkt am Memory-Controller des CPUs liegen. Dadurch ist es dem Batch-System möglich einen Job per CGroup direkt an gewisse Speicherbänke und CPU-Cores zu binden, sodass keine Kommunikation über den NUMA-Link notwendig ist. Dieser NUMA-Link wird verwendet wenn mehr Ram oder Cores als in einer vNode vorhanden benötigt wird.
Unterscheidung der Architekturen
Der Scheduler ist so konfiguriert, dass zunächst versucht wird einen Job auf einem der kleinen MPI-Knoten Knoten (Skylake, 192 GB RAM) laufen zu lassen und nur dann auf die UV2000 größeren Nodes auszuweichen, wenn ansonsten kein Platz ist (auf Grund von Ressourcenauslastung oder Anforderungen).Auf Grund der Unterschiedlichen Architekten (Bsp.: Ivybridge vs. Sandybirdge-Prozessoren) kann es vorkommen, dass ein Job obwohl er klein ist besser auf der UV2000 läuft oder umgekehrt.
Um beim Absenden des Jobs darauf Einfluss zu nehmen, gibt es das Attribut Attribut arch, welches folgende Werte kennt:
Kein Format |
---|
arch=ivybridgeskylake arch=uv2000icelake |
Jobs welche mit arch=uv2000skylake abgesendet werden, starten nur auf der UV2000 den entsprechenden Skylake nodes und umgekehrt bei arch=ivybridge startet der Job nur auf den kleinen MPI-Knoten.
Codeblock | ||||
---|---|---|---|---|
| ||||
#PBS -l select=1:ncpus=24:mem=10GB:arch=uv2000 |
Besonders wenn man viele BLAST-Jobs abschickt, sollte der Parameter arch=ivybridge genutzt werden, da es zu Problemen sonst auf der UV2000 kommen kann, die die Ausführungsgeschwindigkeit deutlich reduzierenicelake werden nur die Icelakes Nodes verwendet.
Verteilung der Chunks
PBSPro ermöglicht es zu bestimmen, ob die einzelnen Chunks auf demselben Host laufen dürfen oder müssen oder ob ein Knoten exklusiv benötigt wird. Dazu gibt es das Attribut place welches folgende Werte besitzt:
...
Wenn der Parameter nicht gesetzt wird, verwendet das Batch-System den Wert free und verteilt die Chunks beliebig über alle Knoten. Bei pack werden alle Chunks auf einen Knoten gelegt. Bei scatter werden alle Chunks auf unterschiedliche Knoten verteilt, was besonders für Netzwerk-Benchmark-Anwendungen interessant ist. Zusätzlich gibt es noch die Option vscatter um die Chunks über vNodes zu verteilen, was besonders bei der UV2000 von Bedeutung ist.
Codeblock | ||||
---|---|---|---|---|
| ||||
#PBS -l select=2:ncpus=12:mem=10GB:arch=uv2000skylake #PBS -l place=pack |
Beispiel 1 würde den Job auf die UV2000 legen und dort drei vNodes beanspruchen, da die UV2000 pro vNode nur 8 Cores hat. Diese vNodes wären jedoch direkt nebeneinander, sodass es zu möglichst wenig Geschwindigkeitseinbußen käme.
Konkreten GPU-Typ anfordern
Das Batchsystem erlaubt es einen speziellen GPU-Typ anzufordern. Dazu muss im Select-Statement der Wert accelerator_model gesetzt werden.
Folgende Werte werden derzeit unterstützt:
Wert | GPU-Typ | Jahr | Anzahl |
---|---|---|---|
gtx1080ti | Nvidia GTX 1080 TI | 2017 | 120 |
rtx8000 | Nvidia Quadro RTX 8000 | 2020 | 4 |
rtx6000 | Nvidia Quadro RTX 6000 | 2020 | 40 |
a100 | Nvidia A100 | 2020 | 56 |
Info | ||
---|---|---|
| ||
Die maximale Rechenzeit für einen GPU-Job beträgt 47:59:59 ! |
Codeblock | ||||
---|---|---|---|---|
| ||||
#PBS -l select=1:ncpus=2:ncpusngpus=121:memaccelerator_model=gtx1080ti |
Codeblock | ||||
---|---|---|---|---|
| ||||
=10GB #PBS -l place=scatter |
...
select=1:ncpus=2:ngpus=4 |
In Beispiel 3 werden 4 GPUs auf einem Server angefordert