Contents[Hide]
1. HPC Farm - Sezione INFN di Genova, Dipartimento di Fisica Universita' di Genova, Dipartimento di Ingegneria Civile, Chimica e Ambientale
Il Servizio Calcolo mantiene una farm per il calcolo scientifico HPC su architettura linux che raggruppa le risorse di diversi gruppi di ricerca afferenti a diversi dipartimenti (INFN, DIFI, DICCA).
In questo documento potete trovare informazioni su:
- risorse hardware
- configurazione delle code
- accesso alla farm
- sottomissione di job
- controllo dei job e del ba tch system
- monitoring
- condivisione delle risorse
- documentazione
1.1. Risorse hardware
1.1.1. CPU
La farm e' attualmente costituita da 15 host biprocessori Intel a 64 bit, per un totale di 240 core (~ 5 TFlops in DP), con i nterconnessione InfiniBand QDR.I sistemi sono gestiti dal sistema operativo linux a 64 bit, distribuzione Scien tific Linux 6.x.
Gli host sono attualmente suddivisi per gruppo sperimentale di proprieta', ma la configurazione e' predisposta per l'utilizzo di un meccanismo di sharing delle risorse che permette agli utenti di utilizzare le risorse di altri gruppi sperimentali in caso si necessita' e di disponibilita' di slot libere.
1.1.2. Storage
Ciascun host dispone di un'area locale di almeno 200 GB, accessibile in /scra tch. Tale area non e' visibile da altri host.Tutti gli host della farm hanno visibilita' delle home directory (/home/<username&g t;), del disco dedicato alla farm (/farmdisk1) e delle aree di gruppo (/project/<gruppo>/...), quest'ultime accessibili solo agli utenti afferenti al gruppo che ha acquistato il relativo disco.
Le home directory hanno un controllo di quota che per default e' limitato ad 1 GB per utente.
Le aree dati di gruppo non hanno quota abilitata.
1.2. Configurazione delle code
Sulla farm sono definite le seguenti code:- coda meteo:
accesso: tutti gli utenti del gruppo meteo
limiti: nessuno
nodi accessibili: nodi del gruppo meteo
- coda meteopriv:
accesso: utenti del gruppo meteo autorizzati alla sottomissione di job privilegi ati
limiti: nessuno
nodi accessibili: nodi del gruppo meteo
- coda olddip:
accesso: tutti gli utenti del gruppo dipfis
limiti: nessuno
nodi accessibili: nodi del gruppo dipfis
- coda pmten:
accesso: tutti gli utenti del gruppo pmten
limiti: nessuno
nodi accessibili: nodi del gruppo pmten
- coda hpclong:
accesso: tutti gli utenti
limiti: 48 ore (elapsed time)
preemption: i job delle code proprietarie provocano la terminazione del job ospite
nodi accessibili: tutti
- coda hpcmedium:
accesso: tutti gli utenti
limiti: 8 ore (elapsed time)
prepmption: i job delle code proprietarie provocano la terminazione del job ospite
nodi accessibili: tutti
1.3. Accesso alla farm
L'accesso diretto ai nodi della farm non e' consentito.E' disponibile un nodo di front-end. I nodi di front end non devono essere utilizzati per l'esecuzione interattiva di job, se non per run molto brevi a scopo di test.
Si accede al frontend via ssh su farmhpc.ge.infn.it.
back to top
Non e' supportata la sottomissione diretta di un eseguibile. E' consigliato sott omettere uno shell script che inizializzi l'environment e faccia partire l'eseguibile.
Per l'esecuzione di job paralleli, che utilizzino MPI nella versione attualmente disponibile (mvapich2 V1.9) e' necessario:
E' possibile, e se possibile opportuno, specificare le risorse che il job utiliz zera', in particolare:
Per visualizzare lo stato di LSF, degli host, delle code e dei job esistono opportuni comandi disponibili su tutti i nodi della farm:
Sono disponibili i seguenti manuali distribuiti da Platform:
Alessandro Brunengo, 17 settembre 2014
1.4. Sottomissione di job
La sottomissione di un job si effettua tramite il comando bsub.Non e' supportata la sottomissione diretta di un eseguibile. E' consigliato sott omettere uno shell script che inizializzi l'environment e faccia partire l'eseguibile.
Per l'esecuzione di job paralleli, che utilizzino MPI nella versione attualmente disponibile (mvapich2 V1.9) e' necessario:
- configurare il proprio account per poter eseguire comandi ssh sui diversi nodi della farm senza richiesta di password:
# se non gia' fatto, creare una coppia di chiavi ssh
ssh-keygen -t rsa
# abilitare la propria chiave pubblica nelle chiavi autorizzate:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- creare uno script di sottomissione che inizializzi l'environment e chiami l'eseguibile tramite mpirun.lsf:
#!/bin/bash
# incrementare i limiti per memory locked size e stack size, necessario p er le librerie IB
ulimit -l unlimited
ulimit -s unlimited
# definizione necessaria per la corretta distribuzione dei processi sui c ore:
export IPATH_NO_CPUAFFINITY=1
# eventuali inizializzazioni per i compilatori, ad es.:
. /opt/intel/composer_xe_2013.5.192/bin/compile rvars.sh intel64
# come ultima istruzione, il setup delle librerie MPI:
. /usr/local/mvapich2-1.9_intel_dyn_psm/setup.s h
# Esecuzione dell'eseguibile
mpirun.lsf [eseguibile] [parametri per l'eseguibile]
-
rendere eseguibile lo script (chmod +x [script-name]), e sottometterlo vi a batch:
bsub -a mvapich -n [numero processi] -R span[ptile=N] -q [coda] ./[scr ipt-name]
dove n e' il numero totale di rank, N e' il numero massimo di rank per ho st.
Se si vuole sottomettere un run su singolo host (n=N), si puo' utilizzare la sintassi:
bsub ... -n [numero processi] -R span[hosts=1] ...
E' possibile, e se possibile opportuno, specificare le risorse che il job utiliz zera', in particolare:
- Termination deadline:
bsub ... -W hour:minute
Raggiunta la termination deadline il job verra' ucciso da LSF. Utilizzand o l'estimated runlimit (consigliato):
bsub ... -We hour:minute
LSF utlizza la stima per soli propositi di scheduling, senza forzare la m orte del job alla scadenza del limite. - Memoria che il job utilizzera':
bsub ... -R rusage[mem=65536] ...
La RAM richiesta (in MB) verra' riservata per il job appena parte, anche se l'allocazione sara' successiva, ed impedisce l'esecuzione di altri job sullo stesso host se hanno richieste di RAM incompatibili con l'utilizzo atteso (ma ev entualmente compatibili con l'utilizzo corrente) del job running.
Per job paralleli, la quantita' di memoria allocata e' per host (non per rank!).
1.5. Controllo dei job e del b atch system
Per visualizzare lo stato di LSF, degli host, delle code e dei job esistono opportuni comandi disponibili su tutti i nodi della farm:
- visualizzazione dello stato del job: bjobs e bhist (quest'ul timo per visualizzare lo stato di job gia' terminati).
- controllo del job: bkill (eliminazione del job), bstop e bresume (sospensione e riattivazione del job), bmod (modifica dei par ametri del job), ed altri
- stato delle code: bqueues
- stato degli host: bhosts, bmgroup (quest'ultimo per visualiz zare gli host group).
1.6. Monitoring
Si puo' vedere lo stato dei nodi della farm monitorata tramite Ganglia tramite i l seguente link.1.7. Condivisione delle risorse
Da implementare.1.8. Documentazione
Sono disponibili i seguenti manuali distribuiti da Platform:
- lsf_admin.pdf: manuale per l'amministrazione del cluster, con informazioni su resource requirements e scheduling fairsharing
- lsf_using.pdf: manuale utente
- lsf_command_ref.pdf: referenza per tutti i comandi disponibili su LSF
Alessandro Brunengo, 17 settembre 2014