Modules & Verfûgbare Software
Aus HPC@HU
Übersicht & Grundlagen zur Nuzung
Die bereitgestellten Compute-Knoten nutzen Linux, genaugenommen ein OpenSUSE.
HPC-typisch wird zentral Software bereitgestellt. Verfügbare Software wird über eine Modulumgebung geladen.
Welche Software verfügbar ist, lässt sich über module avail
sowie module spider <name>
in Erfahrung bringen.
(Online Anleitung für lmod https://lmod.readthedocs.io/en/latest/010_user.html )
Wir bieten aktuell drei Gruppe von Software an:
- /hu "Von Uns" kompilierte Software welche zentral bereitgestellt wird.
- /all Über EasyBuild ( siehe http://docs.easybuild.io/what-is-easybuild/ ) bereitgestellte Software
- /intel Software welche mit Installer ausgeliefert wurde (wie zum Beispiel Intel OneAPI)
Bei der Auswahl von Software sollte darauf geachtet werden dass die Groß- und Kleinschreibung von Bedeutung ist, sprich gcc ist nicht gleich GCC.
Die finalen Pfade sind aktuell auch nicht endgültig festgelegt und können sich noch verändern.
Ferner wird empfohlen sich nicht auf die Defaults zu verlassen und die Version einer Software explizit auszuwählen.
Anwendungsbeispiel:
Die verfügbaren openmpi Versionen lassen sich mit dem Befehl
module spider openmpi
erfragen
Ist daraufhin die Version erwünscht, lässt sich diese mit dem Befehl
module load openmpi/5.0.3-gcc14.1.0
laden.
Aktuell geladene Module lassen sich mit
module list
anzeigen, während
module purge
alle geladenen Module "entlädt".
Aktuell wird die verfügbare Software noch ausgebaut, wodurch sich die Liste relativ schnell entwickelt. Für einen Überblick der aktuell verfügbaren Software wird gebeten diese direkt auf dem System abzufragen. Vor allem mit EasyBuild installierte Software bringt standardmäßig sehr viele kleine Abhängigkeiten mit.
Einen ersten Überblick über einige der wichtigeren Pakete (als Eigenkompilation) bietet die folgende Liste:
Verfügbare Software
Programmiersprachen und Compiler
- gcc
- 9.5.0
- 10.5.0
- 11.4.0
- 12.3.0
- 13.2.0
- 14.1.0
- Intel OneApi
- 2024.1
- Julia
- 1.10.3
- python
- 3.8.19
- 3.9.19
- 3.10.14
- 3.11.9
- 3.12.3
- QT (opensource)
- 5.15.14
- R
- 4.4.0
- ruby
- 3.3
Bibliotheken und Tools
- AMD AOCL
- 4.2.0 gcc
- 4.2.0 aocl
- apache-maven
- 3.9.8
- bash
- 5.2.21
- bc
- 1.0.7
- bison
- 3.8.2
- BLIS
- 4.2.0
- block2
- p0.5.3rc13 openmpi/5.0.3 gcc/14.1.0 OpenBLAS/0.3.26
- boost
- 1.85 gcc/13.2.0
- 1.85 gcc/14.1.0
- Catch2
- 3.6.0 cmake/3.29.3
- cmake
- 3.16.9
- 3.20.6
- 3.27.2
- 3.29.2
- 3.29.3
- costa
2.2.2
- cuda
- 10
- 11
- 12.0
- 12
- 12.1
- 12.2
- 12.3
- 12.4
- 12.4.1
- crest
- 3.0.1 cmake/3.29.3 OpenBLAS/0.3.26-gcc13.2.0 openmpi/5.0.3-gcc13.2.0 gcc/13.2.0
- 3.0.1 cmake/3.29.3 OpenBLAS/0.3.26-gcc14.1.0 openmpi/5.0.3-gcc14.1.0 gcc/14.1.0
fftw
- 3.3.0 gcc/14.1.0
- 3.3.0 openmpi/5.0.3 gcc/14.1.0
- flex
- 2.6.4
- fmt
- 10.2.1
- gsl
- 2.8
- hdf5
- 1.14.4.3
- lapack
- 3.12.0 gcc/13.2.0
- 3.12.0 gcc/14.1.0
- libflame
- 4.2.0
- libunwind
- 1.8.1
- libxc
- 6.6.2
- magma
- 2.8.8
- miniconda3
- 24.3.0-0
- miniforge3
- 24.1.2-0
- mpich
- 3.2.0 gcc/12.3.0
- 3.3.0 gcc/12.3.0
- 4.1.3 gcc/12.3.0
- 4.2.1 gcc/14.1.0
- OpenBLAS
- 0.3.26 gcc/13.2.0
- 0.3.26 gcc/14.1.0
- OpenCoarrays
- 2.9.3 mpich/3.3.0 gcc/12.3.0
- 2.10.2 openmpi/5.0.3 gcc/14.1.0
- OpenMPI
- 4.1.6 gcc/13.2.0
- 5.0.3 gcc/13.2.0
- 5.0.3 gcc/14.1.0
- patch
- 2.7.6
- proj
- 9.4.1 gcc/14.1.0
- scalapack
- 2.2.0
- spglib
- 2.4.0 gcc/14.1.0
- sirius
- 7.5.2
- spla
- 1.6.1
- swig
- 4.2.1
- szip
- 2.1.1
- umpire
- 2024.02.01
Software
- gdal
- 3.9.0 gcc/14.1.0 proj/9.4.1 swig/4.2.1 python/3.12.3
- hadoopp
- 3.4.0
- hpl
- v2.3
- ior
- 4.0.0 openmpi/5.0.3 gcc/14.1.0
- ncdu
- 1.20
- OpenFOAM
- 11
- v2312
- ORCA
- 5.0.4
- quantum-espresso
- 7.3.1 OpenBLAS/0.3.26 fftw/3.3.10 penmpi/5.0.3 gcc/14.1.0
- xtb
- 6.7.0 lapack/3.12 OpenBLAS/0.3.26 gcc/13.2.0
- 6.7.0 lapack/3.12 OpenBLAS/0.3.26 gcc/14.1.0
Fehlt was?
Da es sich beim HPC um ein Linux System handelt, ist es möglich eigene Software zu entwickeln. Die Einbindung von Software findet überwiegend über zwei grundlegende Variablen statt. PATH
für ausführbare Binärdateien sowie LD_LIBRARY_PATH
für verlinkte Bibliotheken.
Über ein export PATH=/new/path:$PATH
sowie export LD_LIBRARY_PATH=/new/path:$LD_LIBRARY_PATH
lassen sich beide erweitern. Diese Änderung gilt bis zum verlassen der Shell - oder ist "semi-permanent" wenn der Export in die .profile oder .bashrc Datei eingetragen wird.
Hierbei gilt es ferner zu beachten dass die Reihenfolge der Auflistung der verschiedenen Pfade von Bedeutung ist: die zuerst gefundene Variante wird genommen.
Obschon es möglich ist eine Software zu kompilieren, bitten wir darum bei fehlender freier Software nach Möglichkeit zuerst eine Anfrage an hpc-support@hu-berlin.de zu schicken, damit diese zentral für Alle zugänglich ist.
Bei Anfragen zu kommerzieller Software, internen Eigenentwicklungen oder anderweitig speziell lizenzierter Software stehen wir ebenfalls gerne zu Verfügung.
Python
Python wird in vielen Projekten eingesetzt. Die Nutzung von Python ist nicht immer problemfrei, darum gibt es folgend einige Empfehlungen für die Nutzung von Python, welche das Risiko von Problemen sowie die Problembeseitigung erleichtern.
Im Allgemeinen sollten Python Anwendungen in einer virtuellen Umgebung entwickelt und ausgeführt werden. Diese wird nativ von Python unterstützt und ermöglicht es Pakete auf einer bestimmten Version zu halten sowie eventuelle Inkompatibilitäten zwischen verschiedenen Projekten zu vermeiden. Ferner ist es möglich bei Problemen eine virtuelle Umgebung zu löschen und dadurch alte Pakete Rückstandslos zu entfernen. Das ist vor allem interessant da pip
oder pip3
Abhängigkeiten installieren kann, aber im Gegensatz zu typischen Linux-Paketmanagern Abhängigkeiten nicht automatisch deinstallieren kann.
Eine virtuelle Umgebung kann wie folgt erstellt werden (mit einem relativen oder absoluten Pfad):
python -m venv /Pfad/zur/neuen/virtuellen_Umgebung
Mehr dazu auf in der Dokumentation von Python: https://docs.python.org/3/library/venv.html
Sollte es aus bestimmten Gründen nicht möglich sein eine virtuelle Umgebung zu nutzen, kann man mit pip Pakete in einem bestimmten Ordner installieren.
pip3 install --target /Pfad/zum/ZielOrdner
Danach kann der Order zur Variable PYTHONPATH
hinzugefügt werden und wird dann von der Python-Umgebung erkannt.
Die virtuellen Umgebungen sind im Allgemeinen jedoch zu präferieren.
Eine weitere Alternative ist die Nutzung von conda
, welches in der Form von miniconda angeboten wird. Mit conda
lässt sich ebenfalls eine Umgebung erstellen, wobei der Funktionsumfang umfangreicher als bei pip
ist, für eine Umgebung in einem bestimmten Pfad lautet der Befehl dann wir folgt:
conda create --prefix /Pfad/zur/neuen/conda_Umgebung
Mit conda init
oder mamba init
wird die umgebund initiialisiert und die .bashrc Datei wird angepasst. Dabei werden eventuell existierende conda/mamba Konfigurationen überschrieben (!!!). Dies ist beim benutzen von mehreren Versionen potenziell problematisch.
Wenn von Nutzerseite ein conda-Ordner angelegt wird, sollte bedacht werden, dass diese im Laufe der Zeit mit der Installation von Paketen recht groß werden können.
Für Nutzer:
Für Nutzer von HPC@HU finden sich unter /software/modules/software.md
weitere Informationen über die verfügbare Software und wie diese gebaut/konfiguriert wurde.