Environment-Modules
Im folgenden wird eine kurze Übersicht über Environment-Modules gegeben. Ausführliche Informationen findet man auf der Homepage des Projekts. Auf Hummel sind spezielle Anpassungen bzw. Erweiterungen vorgenommen worden.
Environment Modules sind ein Hilfsmittel zur Verwaltung von
Umgebungsvariablen der Shell. Typischerweise werden Variable, die
Suchpfade enthalten, erweitert oder verkürzt (z.B. PATH
,
MANPATH
). Durch
Erweiterungen der Suchpfade wird Software aufrufbar gemacht. Dadurch
werden effektiv Software-Module zur Verfügung gestellt. Im Gegensatz zur
Setzung vom Umgebungsvariablen über Shell-Skripte können mit
Modules geladenen Module auch einfach wieder entfernt
werden. Die Grundidee der Modules ist, Software-Umgebungen
modular zusammenstellen zu können. Im HPC-Umfeld ist es mithilfe von
Modules einfach, Compiler oder Bibliotheken zu wechseln.
Das module
-Kommando ist eine Shell-Funktion. Während die Umgebungsvariablen, die mit module
gesetzt wurden, an
Sub-Shells exportiert werden, muss in jeder Sub-Shell die
module
-Funktion neu definiert werden, bevor sie aufgerufen
werden kann. In unserer Umgebung wird die module
-Funktion
definiert durch:
source /sw/modules/init.sh # für die sh-Familie, z.B. sh, ksh, bash source /sw/modules/init.csh # für die csh-Familie, z.B. csh, tcsh
Üblicherweise wird ein Modul nach dem Schema program/version
benannt (möglich ist auch nur program
). Die Angabe von
version
kann entfallen beim Entladen oder beim Laden, wenn
- es nur einer Version gibt,
- eine default-Version ausgezeichnet wurde (siehe die Ausgabe
von
module avail
), - man sich auf die automatische Auswahl verlässt (
module
wählt die Version, die es für die neueste hält).
Reproduzierbarkeit ist nur sichergestellt, wenn man immer auch die Version angibt.
Je nachdem, wie die zu nutzende Software strukturiert ist, kann es
erforderlich sein, dass vor der Ausführung bestimmte Module galaden
werden müssen. Das Laden solcher Module kann innerhalb eines Moduls mit
dem Schlüsselwort prereq
erzwungen werden.
Wichtige Kommandos
Geladene Module anzeigen | module list |
Verfügbare Module anzeigen | module avail |
Modul laden | module load program[/version] |
Modul entladen | module unload program |
Modul wechseln (z.B. Compiler-Version) |
module switch program program/version |
Modul-Suchpfad verkürzen oder erweitern (z.B. um ein eigenes Modul-Verzeichnis) |
module [un]use [--append] path |
Selbst-Dokumentation
Modules haben selbst-dokumentierende Eigenschaften:
Anzeigen, was ein Modul tut | module display program/version |
Kurzbeschreibung(en) eines/aller Module | module whatis [program/version] |
Kurze Hilfe/Beschreibung zu einem Modul | module help program/version |
Hilfe zu module selbst |
module help |