TUHH > Servicebereiche > Rechenzentrum > Software > ABAQUS: PBSPro-Skript

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.
Noch Fragen?