From b6956b1e3091da04fd9ca3b3a5464a244355f2a0 Mon Sep 17 00:00:00 2001 From: Cirdans-Home Date: Tue, 23 Jan 2024 11:42:32 +0100 Subject: [PATCH] Aggiunte info spack e moduli --- minimalist/_config.yml | 3 ++ minimalist/definizioni.md | 8 +++ minimalist/spack.md | 101 +++++++++++++++++++++++++++++++++++++- 3 files changed, 111 insertions(+), 1 deletion(-) diff --git a/minimalist/_config.yml b/minimalist/_config.yml index 872e833..f020d89 100644 --- a/minimalist/_config.yml +++ b/minimalist/_config.yml @@ -27,6 +27,9 @@ sidebar: - name: Software icon: link: ./software.html + - name: Spack + icon: + link: ./spack.html - name: Definizioni icon: link: ./definizioni.html diff --git a/minimalist/definizioni.md b/minimalist/definizioni.md index 891fb1a..99f9c2b 100644 --- a/minimalist/definizioni.md +++ b/minimalist/definizioni.md @@ -22,6 +22,14 @@ non esclusivo alle risorse (nodi informatici) per un certo periodo di tempo in modo che possano eseguire i *job*. Fornisce una struttura per l'avvio, l'esecuzione e il monitoraggio dei *job*. +Modulo +: I `modulefile` sono file scritti in Tool Command Language, TCL, e sono +interpretati dal programma `module` tramite l'interfaccia utente del modulo. +I file dei moduli possono essere caricati (`load`), scaricati (`unload`) o +commutati al volo (`switch`) mentre l'utente sta lavorando; e possono essere +utilizzati per implementare le politiche del cluster relative all'accesso e +all'utilizzo delle applicazioni. + Scalabilità forte (strong scaling) : Il numero di processori aumenta mentre la dimensione del problema rimane costante. Ciò si traduce anche in un carico di lavoro ridotto per processore. diff --git a/minimalist/spack.md b/minimalist/spack.md index 12b36c9..a8f7e25 100644 --- a/minimalist/spack.md +++ b/minimalist/spack.md @@ -1,7 +1,13 @@ +--- +layout: default +--- + # Spack [Spack](https://spack.io/) 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* ```bash git clone --depth=100 --branch=releases/v0.21 https://github.com/spack/spack.git spack @@ -11,10 +17,103 @@ 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: ```bash spack compiler find spack compilers ``` + +Impieghiamo Spack sul cluster per l'installazione del software e la generazione +di *module file* per [Environment Modules](https://modules.readthedocs.io/en/latest/). + +Nello specifico, configuriamo la generazione dei moduli tramite il file di configurazione +dei moduli in `/mnt/raid/software/spack/etc/spack/modules.yaml` +```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}' + all: + conflict: + - '{name}' +``` +Per aggiornare i moduli si può usare il comando +```bash +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`: +```bash +#!/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 +```bash +./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 +```bash +module avail +``` +e caricare nell'ambiente con il comando +```bash +module load programma/versione-compilatore +``` +o rimuovere con +```bash +module unload programma/versione-compilatore +``` +Un ambiente pulito può essere ottenuto con il comando +```bash +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. + +**Esempio:** carichiamo un diverso compilatore, al *login* la richiesta +```bash +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 +```bash +module load gcc/12.3.0 +``` +seguito da +```bash +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. +```