Allgemeines
Mit dem wechseln wir auch auf Umstieg auf RHEL 9 zur Erstellung des zentralen Modulsystems. SPACK
SPACK ermöglicht es aber auch, viele verschiedene Softwarepakete schnell und einfach als Nutzer selbst zu bauen – die bei Spack verfügbaren sehen Sie mit „spack list <name>
“.
Da die systemweite SPACK-Installation für das zentrale Modulsystem konfiguriert ist, müssen dafür aber einige der Standardeinstellungen modifiziert werden.
SPACK bietet dafür : Environments oder nutzerspezifische Konfigurationsdateien in zwei Möglichkeiten~/.spack/
.
Wir empfehlen Environments, wie im Folgenden beschrieben.
Anlegen:
spack env create <$HOME/Pfad/zum/Environment>
Zum Beispiel, wenn man das Environment „Mein_Env“ nennen möchte:
spack env create $HOME/Mein_Env
oder – wenn man sich schon im entsprechenden Verzeichnis befindet – einfach
spack env create .
Zum Beispiel, wenn man das Environment „Mein_Env“ erstellen möchte:
mkdir -p $HOME/Mein_Env
cd Mein_Env
spack env create .
Bitte beachten Sie, dass Sie einen Pfad angeben müssen. Wenn Sie nur einen Verzeichnisnamen angeben, interpretiert Spack dies als sogenanntes „managed Environment“. Dies führt zu einem Fehler, da in diesem Fall das Verzeichnis für das Environment in einem Unterverzeichnis der Spack-Installation erstellt werden sollte, das jedoch in einem schreibgeschützten Dateisystem sich befindet.
Aktivieren:
Das Environment wird dann mit
spack env activate <$HOME/Pfad/zum/Environment>
oder über seinen symbolischen Namen
spack env activate Mein_Env
aktiviert.
Statt „spack env activate
“ kann man synonym auch den kürzeren Alias „spacktivate
“ benutzen.
Deaktivieren:
spack env deactivate
(oder der kürzere Alias „despacktivate
“)
entlädt das Environment, was die verfügbaren Module wieder auf die des zentralen SPACK-Modulsystems reduziert.
Vor dem Deaktivieren eines Environments müssen alle mit „spack load <Paketname>“ geladenen Pakete mit „spack unload <Paketname>“ entladen werden, da sonst die Arbeitsumgebung unübersichtlich werden und viele Programme unbrauchbar werden können.
Konfiguration für SPACK Environment
Im neu erzeugten Environment muss die Konfiguration angepasst werden: „spack config edit
“.
Alternativ kann die <$HOME/Pfad/zum/Environment>/spack.yaml
-Datei mit einem Texteditor Ihrer Wahl bearbeitet werden.
Die Konfiguration sollte wie folgt angepasst werden („# …
“ kennzeichnen Kommentare, die weggelassen werden können):
Konfiguration in spack.yaml
# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
##### Config Settings #####
config:
install_tree:
root: ~/myspackapps
build_jobs: 16
build_stage:
- $tempdir/$user/spack-stage
- $user_cache_path/stage
test_stage: $user_cache_path/test
source_cache: ~/packapps/cache
misc_cache: $user_cache_path/cache
packages:
all:
permissions:
read: group
write: group
group: <YOUR USERID/TUID> # alternatively the GROUPID related to a project dir you want to use, need to change install_tree, too
gcc:
buildable: true
llvm:
buildable: true
intel-oneapi-compilers:
buildable: true
upstreams:
spack-instance-1:
install_tree: /shared/spapps
modules:
lmod: /shared/spmodules
##### Config Settings End #####
# add package specs to the `specs` list
specs: []
view: false
concretizer:
unify: when_possible
reuse: true
Softwaremodule mit SPACK
Eigene Software-Pakete (in Spack-Speak „specs“) können Sie Ihrem Environment auf zweierlei Weise hinzufügen: per spack
-Befehl oder über das direkte Editieren der <$HOME/Pfad/zum/Environment>/spack.yaml
-Datei, wobei letzteres vor dem Aktivieren erfolgen muss).
Mit
spack add gcc@8 %gcc@11.4.1
fügen Sie z.B. den GCC hinzu.
Sind alle „specs“ für das Environment definiert, stößt
spack install
deren Build an (also den Kompilier- und Installiervorgang).
Was € und % bedeuten
Die Spack-Syntax mit „@“ and „%“ bedeutet:
software@version
= erzeuge die gewünschte Software in genau der gewünschten Version%compiler@version
= mit diesem Compiler in genau dessen angegebener Version
Mit dem „:“ (Doppelpunkt) können Sie auch „von-bis-Bereiche“ für Versionen vorgeben:
software@1:3
= erzeuge die Software in Version 1, 2 oder 3
Lassen Sie die Angabe „@version
“ ganz weg, nimmt Spack die jüngste Version sowohl von „software
“ als auch vom „%compiler
“ an (bzw. die für dieses „software
“-Paket „bevorzugte“ Compilerversion).
Softwaremodule mit SPACK
LMod-kompatible Module
Sie können SPACK auch dazu verwenden, LMod-kompatible Modulfiles für die selbstgebaute Software zu erzeugen. Dazu müssen Sie in der <$HOME/Pfad/zum/Environment>/spack.yaml
-Datei ein geeignetes Verzeichnis dafür vorgeben:
modules:
default:
roots:
lmod: ~/myspackmodules