CRESCO: Descrizione del Cluster CRESCO4 di Portici (dismesso in data 18/10/2023)
SOMMARIO:
- Caratteristiche del Cluster
- Nodi di front-end
- Accesso
- File System
- Compilatori e librerie numeriche
- Uso di Modules
- Flavour MPI presenti
- Come sottomettere un job
1. Caratteristiche del cluster
Il cluster CRESCO4 di Portici è un sistema di calcolo costituito da 304 nodi. Ogni nodo ha:
- 2 socket da 8 core con processore Intel E5-2670 2.6 GHz 64 GB/RAM
(4 GB per core, 8 istruzioni per ciclo di clock)
- Un disco 500GB SATA II
- Una interfaccia IB QDR 40 Gb/s (32 Gb/s effettivi per i dati)
- Due interfacce GbE
- Supporto BMC/IPMI 1.8 e software per la gestione remota della console
Si hanno quindi a disposizione 4864 core connessi tra loro da una rete a larga banda e bassa latenza basata su Infiniband 4xQDR a 40 Gb/s gestita da uno switch Qlogic 12800.
L'architettura di un nodo di CRESCO4 è 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 CRESCO4 si hanno a disposizione i front-end:
- cresco4x001.portici.enea.it
- cresco4x002.portici.enea.it
[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 CRESCO4.
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 CRESCO4 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.
I file system GPFS disponibili sui nodi di CRESCO4 sono:
-
/gporq1_1M da ~ 90 TB in cui per ogni utente viene definita un'area dati ed un'area di scratch (tmp) per i file temporanei.
-
/gporq1_256k da ~ 90 TB in cui per ogni utente viene definita un'area dati ed un'area di scratch (tmp) per i file temporanei.
Il file system /gporq1_1M è stato configurato con una block size di 1 MB e dovrebbe essere usato per i file che hanno dimensione ≥ 1 MB ai fini di ottenere buone prestazioni di I/O.
Il file system /gporq1_256k è stato configurato con una block size di 256 KB e dovrebbe essere usato per i file che hanno dimensione ≤ 1 MB ai fini di ottenere buone prestazioni di I/O.
Gli utenti possono accedere a questi file system o utilizzando il PATH assoluto /gporq1_*/usr/userid, oppure dalla propria home AFS attraverso i link "porq1_*" presenti nella directory PFS.
Ciascun utente ha di default nella sua area /gporq1_*/usr/userid una quota di 200 GB.
I cluster CRESCO3 e CRESCO4 fanno parte di un cluster GPFS che utilizza una interconnessione InfiniBand (IB) QDR 40 Gb/s. I sistemi CRESCO1/2 fanno invece parte di un cluster GPFS basato su interconnessione IB DDR 20 Gb/s. Anche il sistema CRESCO di Frascati fa parte di un cluster GPFS basato su rete IB QDR 40 Gb/s. Il sistema CRESCO di Brindisi fa parte di un cluster GPFS che non è dotato di IB. Tutti questi cluster GPFS sono indipendenti, ma hanno una interfaccia di rete pubblica che ha consentito di configurarli in una struttura multicluster. Il multicluster GPFS si può implementare all'interno della stessa LAN, oppure può essere geografico su WAN. Il multicluster GPFS consente di esportare un file system definito localmente per i nodi di un sistema di calcolo, sui nodi del sistema di calcolo remoto.
È importante precisare che accedendo ad un file system remoto le prestazioni risultano decisamente inferiori (l'accesso remoto avviene ad una velocità pari ad un 1 Gb/s mentre l'accesso locale avviene a 32 Gb/s). Non è quindi conveniente utilizzare i file system remoti per eseguire applicazioni caratterizzate da accessi intensivi ai dati.
Sui nodi di CRESCO1/2 sono accessibili i seguenti file system remoti GPFS:
- /gfra_user da 8 TB di CRESCO Frascati
- /gbri_user da 6.5 TB di CRESCO Brindisi
- /gporq1_* da 90 TB di CRESCO3/4
Sui nodi di CRESCO3/4 sono accessibili i seguenti file system remoti GPFS:
- /gpor_user da 30 TB di CRESCO1/2
- /gpor_proj da 30 TB di CRESCO1/2
- /gpor_minni0/1/2/3 ciascuno da 20 TB di CRESCO1/2 per il progetto MINNI
- /gpor_clima0/1/2 ciascuno da 30 TB di CRESCO1/2 per il gruppo "clima"
- /gfra_user da 8 TB di CRESCO Frascati
- /gbri_user da 6.5 TB di CRESCO Brindisi
Sui nodi di CRESCO Frascati sono accessibili i seguenti file system remoti GPFS:
- /gpor_user da 30 TB di CRESCO1/2
- /gpor_proj da 30 TB di CRESCO1/2
- /gporq1_* da 90 TB di CRESCO3/4
- /gbri_user da 6.5 TB di CRESCO Brindisi
Sui nodi di CRESCO Brindisi sono accessibili i seguenti file system remoti GPFS:
- /gpor_user da 30 TB di CRESCO1/2
- /gpor_proj da 30 TB di CRESCO1/2
- /gporq1_* da 90 TB di CRESCO3/4
- /gfra_user da 8 TB di CRESCO Frascati
5. Compilatori e librerie numeriche
Nella tabella seguente sono riportati i compilatori e le librerie numeriche presenti su CRESCO4.
|
GNU (4.4.6) |
GNU (4.8.2) |
Intel (14.0.1) |
Intel (16.0.0) |
PGI (11.10-0) |
PATH compilatori |
/usr/bin |
/opt/gcc482/bin |
/opt/intel/composer_xe_2013_sp1.1.106/bin/intel64 |
/opt/intel16/compilers_and_libraries_2016.0.109/linux/bin/intel64 |
/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/composer_xe_2013_sp1.1.106/mkl/lib/ia32
/opt/intel/composer_xe_2013_sp1.1.106/mkl/lib/intel64 |
Intel MKL
/opt/intel16/compilers_and_libraries_2016.0.109/linux/mkl/lib/intel64_lin |
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 CRESCO4 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.
In particolare, per impostare in maniera opportuna l'ambiente per la compilazione e la sottomissione di job paralleli non sarà disponibile il comando "mpi-selector" come sui restanti cluster di ENEAGRID, ma dovranno essere utilizzati i comandi messi a disposizione da Modules.
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_intel-1.4.3-qlc
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_intel-1.4.3-qlc mpi_flavour/openmpi_gcc482-1.4.3
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.
Sul cluster CRESCO4 di Portici è presente OFED alla versione: OFED-1.5.4.1.
Le flavour MPI presenti, distinte per compilatore, sono elencate nella seguente tabella:
|
GNU (version 4.4.6/4.8.2) |
Intel (version 14.0.1) |
PGI (version 11.10-0) |
Mvapich |
mvapich2_gcc_qlc-1.7 |
mvapich2_intel_qlc-1.7 |
mvapich2_pgi_qlc-1.7 |
OpenMPI |
openmpi_gcc-1.4.3 openmpi_gcc-1.6.5 openmpi_gcc482-1.4.3 openmpi_gcc482-1.6.5 |
openmpi_intel-1.4.3-qlc openmpi_intel-1.6.5 |
openmpi_pgi-1.4.3-ql openmpi_pgi-1.6.5 |
Intel MPI |
Nessuna Flavour |
impi-4.1.2 |
Nessuna Flavour |
[sommario]
8. Come sottomettere un job
Per la sottomissione di batch job sul cluster CRESCO4 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 per Mvapich.
Code definite su CRESCO4:
cresco4_h6 - Coda per job seriali e paralleli che richiedono al massimo 256 core. Tempo massimo di RUNNING 6 ore, aperta a tutti a scopo di test e prove;
cresco4_256h24 - Coda per job paralleli con numero_core ≥ 257, granularità 16 core, tempo massimo di RUNNING 24 ore.
Su entrambe le code è 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 i primi due per OpenMPI, il terzo per Mvapich ed il quarto per Intel MPI.
•
OpenMPI 1.4.3 (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
|
•
OpenMPI 1.6.5 (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 orte_rsh_agent "blaunch.sh" -n
$N_procs
--hostfile $HOSTFILE $exe
|
•
Mvapich2 (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 4.1.2
#!/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
|
Esempi di sottomissione:
- bsub -o output.o -e error.e -q cresco4_h6 -n numero_core ./script_di_sottomissione (job seriali e paralleli con numero core ≤ 256)
- bsub -o output.o -e error.e -q cresco4_256h24 -n numero_core ./script_di_sottomissione (job paralleli con numero_core ≥ 257)
Precisiamo che sulla coda cresco4_256h24, affinché il job sia accettato, è necessario che i core richiesti dal job siano un multiplo di 16 (numero di core di ogni singolo nodo di calcolo).
[sommario]