IN KÜRZE
Kosten
Kostenpflichtig
Geringfügige Nutzung oder Testrechnungen sind kostenfrei.
Dokumentation
–
Vorinstalliert auf dem Cluster
Ja, aber das Linux auf dem Cluster wird nicht offiziell unterstützt.
Allgemein
Abaqus ist eine Finite-Elemente-Software von SIMULIA. Sie ist auf dem Cluster in der Version 2021 installiert. Achtung: Die auf dem OMNI-Cluster installierte Betriebssystem-Version (Rocky Linux 8.6) wird von Abaqus offiziell nicht unterstützt.
Um Abaqus zu nutzen, muss das entsprechende Modul geladen werden:
module load abaqus
Ein guter Einstiegspunkt ist die integrierte Hilfefunktion von Abaqus, erreichbar mit dem Befehl:
abaqus doc
Dieser Befehl öffnet ein Fenster und Sie müssen deshalb mit X11-Forwarding (ssh -X
) angemeldet sein.
Die Abaqus-Dokumentation ist außerdem aus dem Programm selbst erreichbar.
Lizenzen
Abaqus darf auf dem Cluster nicht benutzt werden, ohne sich an den Kosten zu beteiligen, die Nutzung ist nicht umsonst.
Die Fakultät IV finanziert die Abaqus-Lizenzen an der Uni Siegen. Sie dürfen nur für nicht kommerzielle Zwecke in Lehre und Forschung eingesetzt werden. Die Kosten sind jeweils im Dezember für das Folgejahr fällig und werden anteilsmäßig von verschiedenen Instituten getragen. Die Höhe der Kosten ergibt sich nach Anteil der Nutzung. Geringfügige Nutzung oder Testrechnungen sind kostenfrei. Ansprechpartner für die Abaqus-Lizenz-Vereinbarungen ist Holger Poggel.
Mit dem Befehl lmstat
können die zur Verfügung stehenden Token (Lizenzen) für Abaqus angezeigt werden. Der lmstat
-Befehl verfügt über Zusatzoptionen, die mit der Option lmstat -h
angezeigt werden können. Beispielsweise zeigt die Option lmstat -a
einen vollständigen Überblick der einzelnen Abaqus-Module sowie die Anzahl der freien Lizenzen für jedes Modul.
$ lmstat
lmutil - Copyright (c) 1989-2008 Acresso Software Inc. All Rights Reserved.
Flexible License Manager status on Thu 11/15/2012 16:33
...
Die Umgebungsdatei von Abaqus wurde erweitert, sodass die Option queue=tokens
benutzt werden kann, um für einen Job die benötigten Token im Voraus zu ermitteln, ohne die Berechnung zu starten:
$ abaqus -j myjob -queue tokens
Number of Tokens Required: 5
oder alternativ:
$ abaqus j=myjob cpus=12 queue=tokens
Number of Tokens Required: 14
Nutzung
Abaqus verfügt über eine grafische Oberfläche sowie einen Kommandozeilenmodus. Erstere kann mit
abaqus cae
aufgerufen werden.
Kommandozeilenbefehle bestehen in der Regel aus dem Wort abaqus
und mindestens einem weiteren Befehl. Mögliche Kommandozeilenbefehle können mit abaqus help
angezeigt werden:
$ abaqus help
In the following execution procedures, "abaqus" refers to the command
used to run Abaqus.
Obtaining information
abaqus {help | information={environment | local | memory | release |
support | system | all} [job=job-name] | whereami}
...
Mit Abaqus auf dem Cluster rechnen
Abaqus kann parallele Rechnungen durchführen, da es intern MPI verwendet. Allerdings wird pro Prozess eine Lizenz benötigt und die Kosten vervielfachen sich entsprechend. Außerdem müssen zum Zeitpunkt der Rechnung genügend freie Lizenzen zur Verfügung stehen.
Die übliche Vorgehensweise für Abaqus-Jobs besteht darin, im Job-Skript den Abaqus-Befehl mit der entsprechenden Input-Datei aufzurufen:
abaqus job=<Jobname> input=<Inputdatei.inp> cpus=$SLURM_NTASKS
Die Umgebungsvariable $SLURM_NTASKS
wird durch SLURM am Anfang eines Jobs gesetzt. Sie dient dazu, dass Sie die Anzahl der Prozesse, die Abaqus starten darf, nicht bei jedem Job händisch anpassen müssen.
Alternativ kann von der umfangreichen Python-Funktionalität von Abaqus Gebrauch gemacht werden. So kann ein Python-Skript geschrieben werden, das Abaqus aufruft. Im Job-Skript wird dann nur Python mit dem entsprechenden Python-Skript aufgerufen:
python3 <Skriptname.py>
Tipp für Numpy/Scipy-Nutzer: Abaqus benutzt die Datentypen "int32"
, "float32"
und "float64"
. Wenn Sie in Python (z.B. in einem Numpy-Array) den Datentyp int
angeben, stoppt Abaqus mit der Fehlermeldung, dass 64-Bit-Integers nicht unterstützt werden. Die in dieser Meldung empfohlene Lösung, den Datentyp "int"
zu verwenden, ist irreführend, weil dieser auf dem Cluster standardmäßig 64-Bit-Integers erzeugt. Stattdessen ist es notwendig, explizit 32-Bit-Integer-Werte zu verwenden (z.B. dtype="int32"
im Falle von Numpy-Arrays).