
- Das Modulverzeichnis, bzw. "Lmod: A New Environment Module System"
- Tippen Sie einmal den Befehl module av ein (av=available).

- Sie werden direkt erschlagen von einer gigantischen Liste an Software. Sie können "Enter" gedrückt halten und die Liste setzt sich immer weiter fort oder Sie brechen mit "q" ab.
- Das Modulverzeichnis enthält sehr viele Einzelprodukte und deren Abhängigkeiten.
- Im gelb markierten Bereich sehen Sie beispielsweise verschiedene Versionen von Python.

- Sie können die Ergebnisse etwas eingrenzen, wenn Sie einen Suchbegriff mitgeben, z.B. Python.
- Probieren Sie: module av Python
- Wie Sie sehen, ist das Suchergebnis auf alle Pakete begrenzt, die Python im Namen enthalten.

- Schauen wir uns nun eines der Produkte genauer an mit: module show Python/3.12.3-GCCcore-13.3.0

- Sie erhalten eine Detailansicht mit Informationen über das Modul.
- Im gelb markierten Bereich befindet sich die Information über die Abhängigkeiten. Wenn Sie dieses Python Modul laden, dann werden gleichzeitig auch alle gelb markierten Module geladen.
Diese Module können wieder eigene Abhängigkeiten haben. Das laden des Python Moduls wird also ggf. eine große Anzahl anderer Module laden.

- Laden Sie nun das Python Modul mit: module add Python/3.12.3-GCCcore-13.3.0

- Wenn Sie jetzt python --version eintippen, werden Sie sehen, dass das gewählten Python Environment bereitgestellt wurde.
- Mit module li können Sie einsehen, welche Abhängigkeiten alle geladen worden sind.

- Wie Sie sehen wurden 11 Abhängigkeiten mit dem Modul Python mitgeladen.

- Laden Sie nun ein anderes Modul, dann kann es zu Konflikten kommen.
- Bevor Sie ein anderes Modul laden, sollten Sie immer das zuvor benutze Modul wieder entfernen. Dies geschieht über den Befehl module purge

- Vielleicht ist Ihnen beim Befehl module av schon aufgefallen, dass alle Module in einem bestimmten Verzeichnis liegen.

- Es gibt vier solcher Verzeichnisse. Wenn Sie sich, wie hier jetzt, auf dem Server "main.cc4.fh-muenster.de" befinden, dann wird easybuild01-cascadelake verwendet.
- Befinden Sie sich aber beispielsweise auf einer Rechennode, dann wird möglicherweise ein anderes Modulverzeichnis genutzt, bzw. muss genutzt werden.
- easybuild01-cascadelake
- easybuild02-haswell
- easybuild03-skylake
- easybuild04-icelake
- Nodes: g06, g07, g08. g09
- Der Grund für diesen Aufbau liegt in der Prozessorarchitektur der CPU der entsprechenden Nodes.
Wird ein Softwarepaket beispielsweise auf einem CascadeLake CPU kompiliert, dann ist es nicht zwingend lauffähig auf einer Node mit einer Haswell CPU.
Aus diesem Grund benötigt jeder CPU Typ ein eigenes Software Modulverzeichnis - Sollten Sie in einer Ihrer Berechnungen auf den Fehler "Ungültiger Maschinenbefehl" stoßen, dann liegt es sehr wahrscheinlich daran,
dass Sie ein Modul aus einem Modulverzeichnis geladen haben, was mit der CPU nicht kompatibel ist.

- Sie können zwischen den Modulverzeichnissen wechseln.
- Tippen Sie beispielsweise module unuse /srv/software/dvz/easybuild01-cascadelake/modules/all

- Wenn Sie nun module av eintippen, werden Sie sehen, dass keine Module mehr vorhanden sind.

- Laden Sie jetzt ein anderes Modulverzeichnis, z.B. mit module use /srv/software/dvz/easybuild02-haswell/modules/all

- Wenn Sie jetzt erneut module av eintippen, werden die Module aus dem Modulverzeichnis easybuild02-haswell aufgelistet.
- Der Wechsel zwischen Modulverzeichnissen ins besonders dann wichtig, wenn Sie lastverteilt rechnen, wie in Lastverteilung mit SLURM beschrieben.
Stellen Sie in Ihrem Script immer sicher, dass Sie das richtige Modulverzeichnis geladen haben, bevor Sie mit module add... Ihr Modul laden.