Batchskripte
Das einfache Batchskript
Ein einfaches Batchskript für einen Job, der auf einem Knoten mit 8 Kernen laufen soll, wird wie folgt erstellt:
#!/bin/bash
#PBS -l nodes=1:ppn=8
#PBS -l walltime=0:10:0
#das eigentliche Skript darf erst nach den PBS Kommandos beginnen und
#PBS Kommandos sollten auch nicht durch Kommentare unterbrochen werden
cd $PBS_O_WORKDIR
./myprog my_param
Die wichtigsten Parameter in dem Batchskript sind:
- walltime, in h:m:s, die in Stunden:Minuten:Sekunden angegeben. Dabei ist eine maximale Laufzeit von 1440 Stunden möglich, was 60 Tagen entspricht.
- ppn=X, Anzahl der Kerne pro Knoten
Bitte beachten Sie:
Bitte fordern Sie nur die Ressourcen an, die Sie auch tatsächlich brauchen!
Wenn Sie z.B. nur 4 Kerne benötigen, so drücken Sie dies durch "-l nodes=1:ppn=4" aus. Sie sollten dabei auch verhindern, dass mehr Prozesse gestartet werden, als Sie Kerne reserviert haben.
Das einfache Batchskript um weitere Parameter erweitern
Wollen Sie nun z.B. einen bestimmten Compiler verwenden (oder ein anderes Programm), so müssen Sie die entsprechende Moduldatei auch im Batchskript laden. Wenn sie z.B. den Intel Compiler 10.1 verwenden möchten, ist es notwendig den Pfad ihrer "~/.bashrc" vorher mit anzugeben.
Eine Vorlage eines entsprechenden Skriptes sehen Sie nun:
#!/bin/bash
#PBS -l nodes=1:ppn=2
#PBS -l walltime=48:0:0
.~/.bashrc
module load intel/10.1
cd $PBS_O_WORKDIR
./myprog my_param
Das einfache Batchskript für einen parallelen Job erweitern
Einen parallelen Job (MPI Job) auf mehreren Knoten zu starten, erfordert die Angabe der parallel zu verwendenden Knotenanzahl im Batchskript. Zusätzlich sollten Sie die entsprechende MPI-Version als Moduldatei laden.
In unserem Beispiel wollen wir einen Job auf vier Knoten mit jeweils acht Prozessen laufen lassen. Ein Beispielskript könnte folgendermaßen aufgebaut sein:
#!/bin/bash
#PBS -l nodes=4:ppn=8
#PBS -l walltime=48:0:0
.~/.bashrc
module load openmpi/1.2.6
#openmpi benutzt das TM Interface, um mit Torque zu kommunizieren. Deshalb ist
#es nicht notwendig ein hostfile zu erzeugen, da dies automatisch geschieht
mpirun myprog arg1 arg2