Questa sezione contiene alcuni esempi di script che puoi adattare per eseguire i tuoi lavori. Fai sempre riferimento al manuale in fondo per una panoramica completa sull'argomento.
ESEMPIO 1
L'esempio seguente sottomette allo scheduler una richiesta di job MPI parallelo, richiedendo 1 nodo di calcolo (-N 1), l'esecuzione di 48 task MPI (--ntasks-per-node=48), senza parallelizzazione a memoria condivisa (--cpus-per-task=1) e senza hyperthreading (--threads-per-core=1).
#!/usr/bin/env bash
#SBATCH -N 1
#SBATCH --ntasks-per-node=48
#SBATCH --cpus-per-task=1
#SBATCH --threads-per-core=1
#SBATCH --time 0-00:30:00
#SBATCH --partition=cpu_sapphire
#SBATCH --mail-type=ALL
#SBATCH --mail-user=nome.cognome@polito.it
ESEMPIO 2
L'esempio seguente sottomette allo scheduler una richiesta di job MPI parallelo, richiedendo 2 nodi di calcolo (-N 2), l'esecuzione di 48 task MPI per nodo (--ntasks-per-node=48), senza parallelizzazione a memoria condivisa (--cpus-per-task=1) e senza hyperthreading (--threads-per-core=1). Richiede esplicitamente specifici nodi di calcolo per il job (--nodelist=compute-X-Y). L'eseguibile viene quindi lanciato utilizzando un totale di 96 task MPI.
#!/usr/bin/env bash
#SBATCH -N 2
#SBATCH --ntasks-per-node=48
#SBATCH --cpus-per-task=1
#SBATCH --threads-per-core=1
#SBATCH --time 0-00:30:00
#SBATCH --partition=cpu_sapphire
#SBATCH --mail-type=ALL
#SBATCH --mail-user=nome.cognome@polito.it
#SBATCH --nodelist=compute-X-Y,compute-K-Z
ESEMPIO 3
L'esempio seguente sottomette allo scheduler una richiesta di job MPI parallelo, richiedendo 2 nodi di calcolo (-N 2), l'esecuzione di 48 task MPI per nodo (--ntasks-per-node=48), senza parallelizzazione a memoria condivisa (--cpus-per-task=1) e senza hyperthreading (--threads-per-core=1). Esclude esplicitamente specifici nodi di calcolo per il job (--exclude=compute-X-Y). L'eseguibile viene quindi lanciato utilizzando un totale di 96 task MPI.
#!/usr/bin/env bash
#SBATCH -N 2
#SBATCH --ntasks-per-node=48
#SBATCH --cpus-per-task=1
#SBATCH --threads-per-core=1
#SBATCH --time 0-00:30:00
#SBATCH --partition=cpu_sapphire
#SBATCH --mail-type=ALL
#SBATCH --mail-user=nome.cognome@polito.it
#SBATCH --exclude=compute-X-Y,compute-K-Z
ESEMPIO 4
L'esempio seguente sottomette allo scheduler una richiesta di job ibrido MPI-OpenMP (consultare il manuale per ulteriori dettagli), richiedendo 1 nodo di calcolo (-N 1), l'esecuzione di 12 task MPI per nodo (--ntasks-per-node=12), con 4 thread OpenMP per task (--cpus-per-task=4) e senza hyperthreading (--threads-per-core=1).
#!/usr/bin/env bash
#SBATCH -N 1
#SBATCH --ntasks-per-node=12
#SBATCH --cpus-per-task=4
#SBATCH --threads-per-core=1
#SBATCH --time 0-00:30:00
#SBATCH --partition=cpu_sapphire
#SBATCH --mail-type=ALL
#SBATCH --mail-user=nome.cognome@polito.it
#SBATCH --exclude=compute-X-Y,compute-K-Z
ESEMPIO 5
L'esempio seguente sottomette allo scheduler un job MPI con GPU, richiedendo 1 nodo di calcolo (-N 1), l'esecuzione di 4 task MPI (--ntasks-per-node=4), su 4 GPU senza parallelizzazione a memoria condivisa (--cpus-per-task=1) e senza hyperthreading (--threads-per-core=1).
#!/usr/bin/env bash
#SBATCH -N 1
#SBATCH --ntasks-per-node=4
#SBATCH --cpus-per-task=1
#SBATCH --threads-per-core=1
#SBATCH --time 0-00:30:00
#SBATCH --gres=gpu:4
#SBATCH --partition=gpu_a40
#SBATCH --mail-type=ALL
#SBATCH --mail-user=nome.cognome@polito.it
ESEMPIO 6
L'esempio seguente mostra una modalità di utilizzo del file system ad alte prestazioni BeeGFS. Trasferisce automaticamente i dati di simulazione su $SCRATCH, esegue la simulazione parallela e infine ritrasferisce i dati su$HOME.
#!/usr/bin/env bash
#SBATCH -N 1
#SBATCH --ntasks-per-node=48
#SBATCH --cpus-per-task=1
#SBATCH --threads-per-core=1
#SBATCH --time 0-00:30:00
#SBATCH --partition=cpu_sapphire
#SBATCH --mail-type=ALL
#SBATCH --mail-user=nome.cognome@polito.it
module purge
module load openmpi/5.0.7_gcc12
module load {mio_modulo} ## sostituisci {mio_modulo} con quello effettivo
mkdir $SCRATCH/percorso-directory-simulazione cp $HOME/percorso-directory-lavoro/*$SCRATCH/percorso-directory-simulazione cd $SCRATCH/percorso-directory-simulazione
mpirun -np 4 eseguibile_mio_modulo [ALTRI PARAMETRI]
rsync $SCRATCH/percorso-directory-simulazione/*$HOME/percorso-directory-lavoro/