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.


Jobskript 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.


my_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.

  • Keine Stichwörter