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.
#!/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.
# 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.