PBSPro-Batchskripte für Abaqus
- Einfaches PBSpro-Skript (SGI Altix)
Auf SGI Altix ist die Arbeit sehr einfach: ein großer Rechner mit schneller MPI-Verbindung zwischen allen Prozessoren, ein schneller /usertemp-Bereich. Da Abaqus viel auf Festplatte schreibt, sollte im /usertemp gearbeitet werden, und nur die wichtigen Daten im Homebereich gesichert werden.#!/bin/bash #PBS -l walltime=12:00:00 # # Abaqus mit 4 MPI-Tasks: #PBS -l select=4:ncpus=1 # # Falls Sie besonders viel Hauptspeicher benoetigen (Ausgabe # von qstat -f, Zeile ressources_used.mem = ...), wird Speicher # pro Task angefordert: #PBS -l select=4:ncpus=1:mem=2gb # #PBS -M mailadresse@tu-harburg.de . /etc/profile.d/module.sh module load abaqus module load intel cd $PBS_O_WORKDIR abaqus job=ABAQUS-Inputdatei user=fortrandatei \ cpus=4 interactive qstat -f $PBS_JOBID exit
- PBSpro-Skript für Linuxcluster Hali
Auf dem Linuxcluster ist das Arbeiten im /usertemp komplizierter, weil jeder Knoten eigene Festplatten hat, die von den anderen Knoten aus jeweils nicht sichtbar sind. Insbesondere muss der folgende Job aus einem globalen Verzeichnis (im Homebereich) gestartet werden, sonst ist $PBS_O_WORKDIR auf dem Rechenknoten nicht sichtbar.
Die MPI-Verbindung zwischen den einzelnen Hali-Knoten ist viel langsamer als innerhalb eines Knotens oder innerhalb der SGI Altix. Prüfen Sie also, ob Jobs mit mehr als 8 Cores sich überhaupt lohnen - auch mit Blick auf den Verbrauch an Abaqus-Token!
Das hier vorgeschlagene Skript funktioniert auch auf SGI Altix.#!/bin/bash #PBS -j oe #PBS -l walltime=10:00:00 # #PBS -l select=8:ncpus=1 #PBS -M mailadresse@tu-harburg.de . /etc/profile.d/module.sh module load abaqus module load intel # lokales Arbeitsverzeichnis anlegen. Das bekommt mit der Jobnummer, # also z.b. 12345.hali01, sicherheitshalber einen eindeutigen Namen. # Ein selbst gewaehlter Name tut es auch. Und wenn nur ein Job auf # einmal gerechnet wird, kann man auf ein eigenes Unterverzeichnis # ganz verzichten. # # grp/id durch den persoenlichen Pfad ersetzen! mkdir /usertemp/grp/id/$PBS_JOBID # Aus dem Startverzeichnis werden die Startdaten # in das Arbeitsverzeichnis kopiert. cd $PBS_O_WORKDIR cp Beispiel.inp /usertemp/grp/id/$PBS_JOBID # Ins Arbeitsverzeichnis wechseln und los geht's! cd /usertemp/grp/id/$PBS_JOBID abaqus job=Beispiel input=Beispiel cpus=8 interactive # Wichtige Ergebnisse ins Home-Startverzeichnis sichern. cp Beispiel.* $PBS_O_WORKDIR # Und, sofern so pauschal moeglich, aufraeumen. cd /usertemp/grp/id rm -rf $PBS_JOBID # Alternativ kann man sich nach Jobende auf dem # Rechenknoten einloggen (auch waehrend des Jobs zur # Kontrolle) und selektiv sichern bzw. aufraeumen. qstat -f $PBS_JOBID exit
Erläuterungen
- -l walltime=12:00:00 reserviert 12 Stunden
Laufzeit. Maximal sind 150 Stunden möglich, aber man
sollte die Zeit möglichst genau abschätzen. Eine
Queue braucht man nicht anzugeben, die sucht sich PBSPro selbst aus.
- -l select=4:ncpus=1 ein paralleler Lauf mit 4 CPUs. Mit Ausnahme
von seriellen Jobs sollte man eine gerade Anzahl von CPUs
wählen, denn die SGI Altix ist aus Boards mit je 2 bis 4 CPUs
aufgebaut, und man bekommt jeweils ganze Boards exklusiv. Ebenso ist
es auf Hali günstig, die Boards mit je 2 oder 8 CPUs ganz
auszufüllen.
- -M mailadresse bitte angeben, denn PBSPro verschickt
bei Unfällen eine Nachricht an die Hinterbliebenen.
- Per module werden Pfade und Sonstiges
gesetzt. Üblicherweise ist die jeweils neueste Version
Default, man kann aber auch ältere Versionen wählen.
- $PBS_O_WORKDIR ist das Verzeichnis, von dem aus man den
Job geschickt hat. Eine absolute Pfadangabe ist auch ok.
- qstat -f gibt u.a. den Ressourcenverbrauch aus. Sinnvoll, um Zeit- und Speicherreservierung besser zu justieren, und um auf Hali zu erfahren, auf welchen Knoten der Job rechnet.
