CRESCO: Descrizione del
Cluster CRESCO6 di Portici
Avviso Lampeggiante
IMPORTANTE:
1) I servizi di assistenza/ticketing e i servizi di backup sul filesystem GPFS relativi al cluster CRESCO 6 decadranno alla data del 30 settembre 2025;
2) L'area scratch utente di GPFS di CRESCO 6 (/gporq2/scratch_0/usr/<username>) non sarà oggetto di sincronizzazione o di trasferimento sul nuovo filesystem LUSTRE*;
3) Il cluster CRESCO 6 rimarrà disponibile all'uso con le limitazioni sopra indicate.
*si suggerisce, all'utente interessato a migrare sul filesystem LUSTRE di CRESCO 8 i file residenti nell'area scratch, di copiare i file in oggetto nella propria area store di GPFS di CRESCO 6 nel rispetto del limite della quota disponibile
SOMMARIO:
- Caratteristiche del Cluster
- Nodi di front-end
- Accesso
- File System
- Compilatori e librerie numeriche
- Uso di Modules
- Flavour MPI presenti
- Vtune Profiler
- Come sottomettere un job
1. Caratteristiche del cluster
Il cluster CRESCO6 di Portici è un sistema di calcolo costituito da
434 nodi. Ogni nodo ha:
- 2 socket da 24 core con processore Intel(R) Xeon(R) Platinum
8160 con frequenza di clock pari 2.10GHz e 192 GB di RAM
- Una interfaccia Intel Omni-Path 100 Gb/s
- Due interfacce GbE
- Supporto BMC/IPMI 1.8 e software per la gestione remota della
console
Si hanno quindi a disposizione 20832 core connessi tra loro da una
rete a larga banda e bassa latenza basata su Intel Omni-Path a 100
Gb/s.
L'architettura di un nodo di CRESCO6 è riconducibile al seguente
schema:
[sommario]
2. Nodi di front-end
L'utilizzo del cluster avviene facendo il login su uno dei nodi di
front-end. I nodi di front-end servono 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.
Per il cluster CRESCO6 si hanno a disposizione i front-end:
- cresco6x001.portici.enea.it
- cresco6x002.portici.enea.it (anche per applicazioni
interattive)
[sommario]
3. Accesso
Per accedere al sistema tramite "SSH" è sufficiente collegarsi
direttamente ad uno dei nodi di front-end indicati in precedenza se
il proprio PC è collegato alla LAN di uno dei Centri ENEA.
Dall'esterno collegarsi invece ad uno dei nodi di front-end di
ENEAGRID (meglio se uno di Portici) elencati QUI, e poi ai front-end di CRESCO6.
L'accesso ai front-end di ENEAGRID può avvenire anche via web dalla
pagina di
CRESCO (www.cresco.enea.it) mediante la interfaccia FARO/NX.
[sommario]
4. File system
I file system disponibili su CRESCO6 sono:
-
AFS il file system geograficamente distribuito comune a
tutta ENEAGRID.
Informazioni sulla struttura comune della HOME per tutti gli
utenti di ENEAGRID/CRESCO si trovano nella sezione "File
space and user HOME directory" consultabile qui.
Informazioni di base su AFS per gli utenti di ENEAGRID/CRESCO si
trovano qui.
-
GPFS il file system di IBM ad alte prestazioni per l'I/O
parallelo.
Informazioni generali di base su GPFS per gli utenti di
ENEAGRID/CRESCO si trovano qui.
5. Compilatori e librerie numeriche
Nella tabella seguente sono riportati i compilatori e le librerie
numeriche presenti su CRESCO6.
|
GNU (4.8.5) |
GNU
(7.3.0) |
Intel (17.0.4) |
Intel (18.0.2) |
PGI (11.10-0) |
| PATH compilatori |
/usr/bin |
/opt/gcc730/bin |
/opt/intel/bin/ |
/opt/intel18/bin |
/afs/enea.it/software/pgi_11.10/linux86-64/11.10/bin |
PATH
Librerie numeriche |
BLAS/LAPACK/ATLAS
/usr/lib
/usr/lib64
/usr/lib/atlas-sse*
/usr/lib64/atlas
/usr/lib64/atlas-sse* |
BLAS/LAPACK/ATLAS
/usr/lib
/usr/lib64
/usr/lib/atlas-sse*
/usr/lib64/atlas
/usr/lib64/atlas-sse* |
Intel MKL
/opt/intel/mkl/lib/intel64
|
Intel MKL
/opt/intel18/mkl/lib/intel64 |
PGI per AMD/ACML e CUDA
/afs/enea.it/software/pgi_11.10/linux86-64/11.10/lib
/afs/enea.it/software/pgi_11.10/linux86-64/11.10/libso |
6. Uso di Modules.
Sul cluster CRESCO6 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)
La flavour impostata di default per tutti gli utenti è:
- mpi_flavour/openmpi_intel17-1.10.4-hfi
Se l'utente vuole scegliere una diversa flavour dovrà utilizzare il
comando:
- module switch flavour_attuale flavour_desiderata
Ad esempio se si vuole scegliere la libreria OpenMPI compilata con
GCC si dovrà dare il comando:
- module switch mpi_flavour/openmpi_gcc-1.10.4-cuda-hfi
A questo punto l'ambiente risulta impostato coerentemente con la
scelta della nuova flavour.
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]
7. Flavour MPI presenti.
Le flavour MPI presenti, distinte per compilatore, sono elencate
nella seguente tabella:
|
GNU (version
4.8.5/7.3.0) |
Intel (version 17.0.4/18.0.2) |
PGI (version 11.10-0) |
| Mvapich |
mvapich2.2.2_gcc_hfi |
mvapich2.2.2_intel-hfi |
mvapich2.2.2_pgi-hfi |
| OpenMPI |
openmpi_gcc-1.10.4-hfi
openmpi_gcc-3.1.1
openmpi_gcc730-3.1.1 |
openmpi_intel-1.10.4-hfi
openmpi_intel-3.1.1 |
openmpi_pgi-1.10.4-hfi
openmpi_pgi-3.1.1 |
| Intel MPI |
Nessuna Flavour |
IntelMPI |
Nessuna Flavour |
[sommario]
8. Vtune Profiler
Per i compilatori Intel, sia alla versione 17 che alla versione 18
si ha a disposizione lo strumento Vtune Amplifier.
Per poter avviare l'applicazione si possono usare i comandi:
amplxe-gui (interfaccia grafica)
amplxe-cl (riga di comando)
Una guida rapida per lo strumento in questione si trova al seguente
link.
[sommario]
9. Come sottomettere un job
Per la sottomissione di batch job sul cluster CRESCO6 valgono le
regole generali indicate al paragrafo Batch Job/LSF.
Sotto vengono riportate le code di sottomissione per il cluster in
questione e alcuni esempi di wrapper di sottomissione per
OpenMPI,Mvapich ed IntelMPI.
Code definite su CRESCO6:
cresco6_48h24 - Coda per job paralleli che richiedono almeno
48 core. Accetta job con un numero di core multiplo di 48 ed un
tempo massimo di RUNNING pari a 24 ore
Sulla coda è definito il "fairshare" che abbassa la priorità ai job
degli utenti che hanno già utilizzato intensamente il sistema.
Di seguito vengono riportati degli esempi di script di sottomissione
per OpenMPI, Mvapich ed Intel MPI.
•
OpenMPI (GCC, Intel, PGI)
#!/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
|
•
Mvapich (GCC, Intel, PGI)
#!/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_rsh -rsh -np $N_procs -hostfile $HOSTFILE $exe
|
Intel MPI
#!/bin/sh
exe=/afs/enea.it/por/user/raia/Hello_MPI
# path of your MPI program
N_procs=`cat $LSB_DJOB_HOSTFILE | wc -l`
# number of slots
host_numb=`echo "$N_procs/48" | bc`
# number of hosts to involve
export I_MPI_HYDRA_BRANCH_COUNT=$host_numb
mpirun -bootstrap rsh $exe
|
Esempi di sottomissione:
- bsub -o output.o -e error.e -q cresco6_48h24 -n numero_core
./script_di_sottomissione (job paralleli con numero_core ≥ 48)
- bsub -o output.o -e error.e -q cresco6_48h48 -n numero_core
./script_di_sottomissione (job paralleli con numero_core ≥ 48)
Precisiamo che sulla coda cresco6_48h24, affinché il job sia
accettato, è necessario che i core richiesti dal job siano un
multiplo di 48 (numero di core di ogni singolo nodo di calcolo) e
fino ad un massimo di 6144 (128 nodi).
Sulla coda cresco6_48h48 va sottomesso sempre a multipli di
48 fino ad un massimo di 3072 (64 core) avendo contezza che in ogni
istante 3072 rappresenta anche il limite sul numero totale di core
disponibili per l'intera utenza su questa coda.
[sommario]