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> [myName4myEnv]
oder – wenn man sich schon im entsprechenden Verzeichnis befindet – einfach
spack env create . [myName4myEnv]
Aktivieren:
Das Environment wird dann mit
spack env activate <$HOME/Pfad/zum/Environment>
oder über seinen symbolischen Namen
spack env activate myName4myEnv
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.
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