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:

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
Nota: i nodi hpcmeteo1, hpcmeteo2, hpcmeteo3 e hpcmeteo4 non sono accessibili tramite le code di batch.


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

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] ...

Non e' necessario specificare il nome dei nodi su cui far partire i task.
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!).
Per ulteriori informazioni, vedere la man page di bsub (#  man  bsub)



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).
Per tutti i comandi citati e non, si rimanda alle pagine di manuale ed alla docu mentazione dettagliata (lsf_command_ref.pdf) .


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