CRESCO: Descrizione del Cluster CRESCO4 di Casaccia
SOMMARIO:
- Caratteristiche del Cluster
- Nodi di front-end
- Accesso
- File System
- Compilatori
- Uso di Modules
- Flavour MPI presenti
- Come sottomettere un job
1. Caratteristiche del cluster
Il cluster CRESCO4 di Casaccia è un sistema di calcolo costituito da 32 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 512 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 CRESCO4C è riconducibile al seguente schema:
[sommario]
2. Nodi di front-end
L'utilizzo del cluster avviene facendo il login sul nodo di
front-end.
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.
Per il cluster CRESCO4C si ha a disposizione il front-end:
- cresco4cx001.portici.enea.it
[sommario]
3. Accesso
Per accedere al sistema tramite "SSH" è sufficiente collegarsi direttamente al nodo
di front-end indicato 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 CRESCO4C 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.
Il file system GPFS disponibile sui nodi di CRESCO4C è:
[sommario]
5. Compilatori
Nella tabella seguente sono riportati i compilatori e le librerie numeriche presenti su CRESCO4C.
|
GNU (4.8.5) |
GNU (7.3.0) |
Intel (17.0.4) |
Intel (18.0.2) |
PGI (19.7-0) |
PATH compilatori |
/usr/bin |
/opt/gcc730/bin |
/opt/intel/bin |
/opt/intel18/bin |
/afs/enea.it/software/pgi_compiler/pgi_19_7/build/linux86-64/19.7/bin |
[sommario]
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.
Per listare l'elenco delle flavour MPI 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 è:
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/impi-intel17 mpi_flavour/openmpi_gcc-4.0.5
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) |
PGI (version 19.7-0) |
OpenMPI |
openmpi_gcc-4.0.5 |
openmpi_intel-4.0.5 |
openmpi_pgi-4.0.5 |
Intel MPI |
Nessuna Flavour |
IntelMPI |
Nessuna Flavour |
[sommario]
8. Come sottomettere un job
Per la sottomissione di batch job sul cluster CRESCO4C 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 CRESCO4C:
cresco4c_h144 - Coda per job seriali e paralleli che richiedono al massimo 32 core. Tempo massimo di RUNNING 144 ore, aperta a tutti;
cresco4c_16h24 - Coda per job paralleli con numero_core ≥ 16, 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 4.0.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 plm_rsh_agent "blaunch.sh" -n
$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 cresco4c_h6 -n numero_core ./script_di_sottomissione (job seriali e paralleli con numero core ≤ 32)
- bsub -o output.o -e error.e -q cresco4c_16h24 -n numero_core ./script_di_sottomissione (job paralleli con numero_core ≥ 16)
Precisiamo che sulla coda cresco4c_16h24, 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]