Il sistema usa Slurm per la gestione delle code di attività da eseguire su nodi di calcolo, con attività descritte tramite script sbatch ed eseguite tramite container apptainer. L'architettura comprende:
Le due aree condivise hanno limiti di spazio diversi, si consiglia di utilizzare la scratch.hpc sia per la CACHE di APPTAINER
export APPTAINER_CACHEDIR=/scratch.hpc/username sia per il run dei jobs
Creazione container "lolcow" e stampa mucca felice
#!/bin/bash
#SBATCH --job-name=mkMucca
#SBATCH --ntasks=1
#SBATCH --nodes=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=1G
#SBATCH --partition=sbuild
#SBATCH --output=%N_%j.log
#SBATCH -e slurm.%N.%j.err
#SBATCH --chdir=/scratch.hpc/username
#SBATCH --mail-type=ALL
#SBATCH --mail-user=username@unibo.it
export APPTAINER_CACHEDIR=/scratch.hpc/username
echo "Make a mucca"
apptainer build lolcow.sif docker://ghcr.io/apptainer/lolcow
#!/bin/bash
#SBATCH --job-name=RunMucca
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=1G
#SBATCH --partition=sbuild
#SBATCH --output=%N_%j.log
#SBATCH --chdir=/scratch.hpc/username
#SBATCH --mail-type=ALL
#SBATCH --mail-user=username@unibo.it
echo "Run baby run!"
sleep 20
apptainer exec lolcow.sif cowsay moo
Run baby run!
_____
< moo >
-----
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
#SBATCH --gres=gpu:1 per l'uso di una GPU, possibilità di avere multi GPU se presentisinfo per info partizionisqueue per codescancel per annullare un jobsrun per job interattivisrun -p l40s --gres=gpu:1 --pty bash
Bootstrap: docker
From: debian:bookworm
%post
apt update
apt-get -y install cowsay lolcat
%environment
export LC_ALL=C
export PATH=/usr/games:$PATH
%runscript
date | cowsay | lolcat
%labels
DISI
Costruzione:
srun -p sbuild --cpus-per-task=8 apptainer build my.sif my.def
Esecuzione:
srun -p sbuild --cpus-per-task=8 apptainer run my.sif
Se non vengono specificati i valori di queste variabili, il default impostato da Slurm corrisponde a 1 GB di RAM e 2 core di CPU.
apptainer run --rocm etcc... per GPU AMD
apptainer run --nv etcc... per GPU NVIDIA
Se aveste dei problemi di latenza legati al IO sulla share di rete /scratch.hpc potete usare come cache temporanea per il calcolo /dev/shim tale area viene pulita ogni volta che il job viene completato, quindi è da usare solo come cache durante il calcolo in quanto alla fine del job viene cancellata. Qualora lanciaste due job sullo stesso nodo che usano /dev/shim il primo che finisce pulisce la cache cancellando anche i semilavorati prodotti dal secondo job