CRESCO: Descrizione del Cluster CRESCO5F di Frascati
SOMMARIO:
- Caratteristiche del Cluster
- Nodi di Front-End
- Accesso tramite Client ssh
- Compilatori e librerie numeriche
- Uso di Modules
- Come sottomettere un job
- Flavour MPI presenti
1. Caratteristiche del Cluster
Il cluster è costituito da 8 nodi di cui solo 4 sono dotati di GPU e uno scheda FPGA con la seguente configurazione:
- cresco5fx001 : nodo di front-end con 2 GPU A100
- cresco5fx002 : nodo con 2 GPU A100
- cresco5fx[003-004] : nodi con 1 GPU A100
- cresco5fx[007-009] : nodi senza GPU e senza FPGA
- cresco5fx010 : nodo con FPGA INTEL
______________________________
Il cluster CRESCO5F di Frascati è un sistema di calcolo costituito
da 8 nodi con le seguenti caratteristiche:
- 2 socket da 16 core con processore AMD EPYC 7313 16-Core
Processor 3.0 GHz 256 GB/RAM
(8 GB per core)
- Un disco 500GB SATA II
- Una interfaccia IB MLX5 100 Gb/s (80 Gb/s effettivi per i
dati)
- Due interfacce 10GbE
- Supporto BMC/IPMI e software per la gestione remota della console
Si hanno a disposizione un totale di 256 cores connessi tra loro da una
rete a bassa latenza basata su Infiniband Mellanox EDR a 100Gb/s
gestita da uno switch Mellanox.
I nodi sono installati con un Sistema Operativo Rocky 8.5,
una nuova release principale rispetto alle CentOS 7.3 (Cresco6) e alle CentOS 7.8 (Cresco4), quindi chiediamo agli utenti
di verificare la portabilità dei propri codici ed eventualmente ricompilarli.
Ogni nodo del cluster ha un'area di disco locale /tempwork da usare come scratch che in totale è 1 TB (disco NVME).
Chiunque abbia bisogna di utilizzarla per i propri job deve fare richiesta tramite ticket.
L'architettura di un nodo di CRESCO5F è riconducibile al seguente
schema:
[sommario]
2. Nodi di Front-End
L'utilizzo del cluster avviene facendo il login dal nodo di
front-end (cresco5fx001). Il nodo di front-end serve semplicemente per il lancio delle applicazioni tramite LSF, per editare i propri script di lancio o per le compilazioni. I nodi di calcolo sono raggiungibili solo tramite LSF.
[sommario]
3. Accesso tramite Client ssh.
Per accedere al sistema tramite "ssh" è sufficiente collegarsi
direttamente al nodo di front-end cresco5fx001.frascati.enea.it se il
proprio PC è collegato alla LAN di uno dei centri ENEA.
Dall'esterno
l'utente può collegarsi tramite ssh ad uno dei due super-nodi di
front-end, cresco-in.frascati.enea.it ovvero cresco-in.portici.enea.it.
Dopo aver effettuato il login, l'utente dovrà selezionare il front-end
cresco5fx001.frascati.enea.it.
[sommario]
4. Compilatori e librerie numeriche
Nella tabella seguente sono riportati i compilatori e le librerie
numeriche presenti su CRESCO5F.
| |
GNU (gcc 8.5.0) |
GNU (gcc 11.2.0) |
Intel (19.1.3) |
Intel/oneapi 22.1 |
PGI (20.4-0) |
NVHPC (22.3) |
| PATH compilatori |
/usr/bin/ |
/opt/gcc112/bin/gcc |
/opt/intel20/bin/intel64/icc |
/afs/enea.it/software/intel_compiler/rocky8_5/oneapi/... ...2022.1.2/compiler/2022.0.2/linux/bin |
/afs/enea.it/software/pgi_compiler/pgi_20_4/... ...cresco5f/build/linux86-64-llvm/20.4/bin |
/afs/enea.it/software/cuda/rocky85/nvhpc/22.3/... ...opt/nvidia/Linux_x86_64/22.3/compilers/bin |
| PATH librerie |
/usr/lib64
BLAS/LAPACK:
/usr/lib64/libblas.so.3.8.0 /usr/lib64/liblapack.so.3.8.0 |
/opt/gcc112/lib64 |
/opt/intel20/lib/intel64
MKL:
/opt/intel20/mkl/lib/intel64 |
/afs/enea.it/software/intel_compiler/rocky8_5/oneapi/... ...2022.1.2/compiler/2022.0.2/linux/lib |
/afs/enea.it/software/pgi_compiler/pgi_20_4/... ...cresco5f/build/linux86-64-llvm/20.4/lib |
/afs/enea.it/software/cuda/rocky85/nvhpc/22.3/... ...opt/nvidia/Linux_x86_64/22.3/compilers/lib |
5. Uso di Modules.
Sul cluster CRESCO5F di Frascati l'inizializzazione dell'ambiente per
il singolo utente viene effettuata grazie al software Modules.
Per i dettagli sull'implementazione, sulle scelte fatte e sull'uso del
software è possibile consultare la relativa
documentazione.
Per listare l'elenco delle flavour disponili si potrà utilizzare il
comando:
- module avail (questo comando elenca, tra gli altri, i moduli
disponibili per gli ambienti paralleli)
Il compilatore impostato di default per tutti gli utenti è:
Se l'utente vuole scegliere una diversa flavour dovrà utilizzare il
comando:
- module switch compilatore_attuale compilatore_desiderato
N.B. Per gli utenti che chiamano bash o ksh, affinchè Modules riesca ad
impostare correttamente l'ambiente, è necessario
creare nella propria HOME AFS i file .bashrc o .kshrc (oppure
modificarli se giá esistenti) inserendo in testa ad essi delle
opportune righe di codice.
Per il file .bashrc:
if [ -f /usr/share/Modules/init/bash ]
then
. /usr/share/Modules/init/bash
fi
Per il file .kshrc:
if [ -f /usr/share/Modules/init/ksh ]
then
. /usr/share/Modules/init/ksh
fi
[sommario]
6. Flavour MPI presenti.
Sul Cluster CRESCO5F di Frascati è presente OFED alla versione: OFED-5.5-1.0.3.2.
Le flavour MPI presenti, distinte per compilatore, sono elencate nella seguente tabella:
|
GNU (version 8.5.0) |
PGI (version 20.4) |
INTEL ONEAPI-22.1 |
INTEL ONEAPI-23.1 |
NVHPC-22.3 |
| OpenMPI |
openmpi_gcc-4.1.2 |
openmpi_pgi-3.1.3 |
Nessuna Flavour |
Nessuna Flavour |
openmpi-4.1.2 |
| Intel MPI |
Nessuna Flavour |
Nessuna Flavour |
impi-2021.5.1 |
impi-2021.9.0 |
Nessuna Flavour |
NOTA:
Per quanto riguarda le librerie OPENMPI per GNU e PGI esistono due moduli specifici che, rispettivamente, sono:
mpi_flavour/openmpi_gcc-4.1.2 e mpi_flavour/openmpi_pgi-3.1.3.
Le librerie INTELMPI invece incluse nei moduli di ONEAPI sono: intel/oneapi22.1 e intel/oneapi23.1.0
All'interno del pacchetto NVHPC sono disponibili le librerie MPI openmpi-4.1.2. Per utilizzarle occorre caricare il modulo nvhpc-22.3
[sommario]
7. Come sottomettere un job.
Per la sottomissione di batch job sul cluster CRESCO5F di Frascati valgono le regole generali indicate al paragrafo Batch Job/LSF.
È utile però indicare quali sono le code di sottomissione per il cluster in questione e dare degli esempi di wrapper di sottomissione sia per OpenMPI che Intel MPI.
Code definite su CRESCO5F:
cresco5f_32h24 - Coda per job seriali e paralleli che richiedono al massimo 64 core. Tempo massimo di RUNNING 24 ore.
Di seguito vengono riportati degli esempi di esempi di script di sottomissione, uno per OpenMPI ed uno per Intel MPI.
•
OpenMPI (GCC, PGI, NVHPC)
#!/bin/sh
exe=/afs/enea.it/por/user/raia/Hello_MPI
# path of your MPI program
HOSTFILE=$LSB_DJOB_HOSTFILE
# name of hostfile for mpirun
N_procs=`cat $LSB_DJOB_HOSTFILE | wc -l`
# give to mpirun same number of slots
mpirun --mca plm_rsh_agent "blaunch.sh" -n $N_procs --hostfile $HOSTFILE $exe
|
•
Intel MPI
#!/bin/sh
exe=/afs/enea.it/por/user/raia/Hello_MPI
# path of your MPI program
HOSTFILE=$LSB_DJOB_HOSTFILE
# name of hostfile for mpirun
N_procs=`cat $LSB_DJOB_HOSTFILE | wc -l`
# give to mpirun same number of slots
mpirun -bootstrap rsh -n
$N_procs
-machinefile $HOSTFILE $exe
|
USO DELLE GPU:
Per utilizzare le schede grafiche sui nodi equipaggiati di GPU A100 occorre selezionare in fase di sottomissione del job attraverso il parametro "-R" di bsub una tra le risorsa "ampere100x1" (nodo con singola scheda GPU A100) o "ampere100x2" (nodo con doppia scheda GPU A100).
Ad esempio, per sottomettere sui nodi dotati di una singola GPU A100 si può usare la seguente sintassi:
| bsub -o %J.out -e %J.err -q cresco5f_32h24 -R "ampere100x1" -n 32 ./submit_cr5f.sh
|
Se, ad esempio, si vuole sottomettere su un nodo dotato di doppia scheda GPU occorre usare la seguente sintassi:
| bsub -o %J.out -e %J.err -q cresco5f_32h24 -R "ampere100x2" -n 32 ./submit_cr5f.sh
|
Se non viene indicata nessuna tra le risorsa "ampere100x1" o "ampere100x2" il job atterrerà su qualsiasi nodo del cluster privo di scheda grafica.
[sommario]
ultimo aggiornamento: 30/05/2023