4.1 KiB
layout |
---|
default |
Spack
Spack rappresenta uno strumento avanzato di gestione dei pacchetti, mirato a supportare simultaneamente diverse versioni e configurazioni di software su una vasta gamma di piattaforme e ambienti. In particolare, è stato appositamente progettato per rispondere alle esigenze dei grandi centri di supercalcolo, in cui numerosi utenti e team applicativi condividono installazioni comuni di software su cluster caratterizzati da architetture non convenzionali e l'utilizzo di librerie prive di un'ABI standardizzata. Un aspetto distintivo di Spack è la sua natura non distruttiva: l'installazione di una nuova versione non interferisce con le installazioni preesistenti, consentendo così la coesistenza di molteplici configurazioni sullo stesso sistema.
Amministrazione
L'ambiente Spack può essere ottenuto via git
git clone --depth=100 --branch=releases/v0.21 https://github.com/spack/spack.git spack
Una volta clonato, è possibile caricare l'ambiente con
cd spack
. share/spack/setup-env.sh
Adesso possiamo visualizzare quali sono i compilatori già installti sul sistema e quelli disponibili:
spack compiler find
spack compilers
Impieghiamo Spack sul cluster per l'installazione del software e la generazione di module file per Environment Modules.
Nello specifico, configuriamo la generazione dei moduli tramite il file di configurazione
dei moduli in /mnt/raid/software/spack/etc/spack/modules.yaml
modules:
default:
enable:
- tcl
tcl:
hash_length: 0
include:
- gcc
exclude_implicits: true
projections:
all: '{name}/{version}-{compiler.name}-{compiler.version}'
gcc: '{name}/{version}'
^mpi: '{name}/{version}-{^mpi.name}-{^mpi.version}-{compiler.name}-{compiler.version}'
all:
conflict:
- '{name}'
autoload: direct
Per aggiornare i moduli si può usare il comando
spack module tcl refresh --delete-tree -y
Per rendere disponibili i file di modulo su tutti i nodi è necessario aggiungere
il path alla configurazione di sistema. Questo può essere fatto creando il file
addspackmodulepath.sh
:
#!/bin/bash
apt-get install -y environment-modules
echo '/mnt/raid/software/spack/share/spack/modules/linux-ubuntu20.04-aarch64/ # Spack Modules' >> /etc/environment-modules/modulespath
ed eseguendo
./runsetup.sh addspackmodulepath.sh
Utenza
Per l'utenza la presenza di Spack è virtualmente invisibile, ciò a cui gli utenti hanno accesso sono i file di modulo per il caricamento nell'ambiente del software installato.
Si possono investigare i moduli disponibili con il comando
module avail
e caricare nell'ambiente con il comando
module load programma/versione-compilatore
o rimuovere con
module unload programma/versione-compilatore
Un ambiente pulito può essere ottenuto con il comando
module purge
È importante che si faccia uso sempre di catene di moduli compatibili, ovvero
di moduli (software) generato/compilato con il medesimo compilatore. Altrimenti
si rischia la creazione di ambienti inconsistenti e impossibili da usare. I file
di modulo sono generati in modo da richiedere il caricamento delle dipendenze
dirette che sono state usate nella loro creazione, tipicamente dipendenze sulla implementazione di MPI scelta (OpenMPI
o MPICH
).
Esempio: carichiamo un diverso compilatore, al login la richiesta
gcc --version
risponderà
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Eseguiamo il comando
module load gcc/12.3.0
seguito da
gcc --version
che ora ci risponderà
gcc (Spack GCC) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.