======= Calcolo: cluster per il calcolo numerico intensivo del Dipartimento di Fisica ======
Il servizio di calcolo numerico intensivo del Dipartimento di Fisica è affidato ad un cluster di macchine biprocessore. Il cluster ha come punto di accesso le macchine **grid-ui.fis.unipr.it** e **emi-ui.pr.infn.it**.
===== Architettura =====
{{lca:servizi:calcolo.png|architettura}}
===== Hardware =====
^ nome ^ CPU ^ modello ^ RAM (GB) ^ SisOP ^ Note ^
| emi-ui | 1 | Macchina virtuale Vmware | 2 | SL6 | User Interface |
| grid-ui | 2 | Macchina virtuale Vmware | 1 | SL5 | User Interface |
| emi-ce | 1 | Macchina virtuale Vmware | 1 | SL5 | Job manager |
|||| Calcolo Seriale ||||||
| c64-wn01 | 2 | AMD Opteron 248 2.20 GHz | 3 | | down |
| c64-wn02 | 2 | AMD Opteron 248 2.20 GHz | 3 | | down |
| c64-wn03 | 2 | AMD Opteron 248 2.20 GHz | 3 | | down |
| c64-wn04 | 2 | AMD Opteron 248 2.20 GHz | 3 | | down |
| c64-wn05 | 4 | AMD Opteron 2212 2.00 GHz | 4 | SL5 | x86_64 matlab |
| c64-wn06 | 8 | Intel Xeon E5335 2.00 GHz | 8 | SL5 | x86_64 matlab |
| c64-wn07 | 8 | Intel Xeon E5335 2.00 GHz | 8 | SL5 | x86_64 matlab |
| c64-wn08 | 6 | Intel Xeon E5650 2.80 GHz | 12 | SL5 | x86_64 matlab |
| c64-wn09 | 12 | Intel Xeon E5650 2.80 GHz | 24 | SL5 | x86_64 matlab |
|||| Calcolo parallelo ||||||
| grid-wn81 | 8 (+HT) | Intel Xeon E5520 2.27 GHz | 12 | SL 6 | GRID |
| grid-wn82 | 8 (+HT) | Intel Xeon E5520 2.27 GHz | 12 | SL 6 | GRID |
| grid-wn83 | 8 (+HT) | Intel Xeon E5520 2.27 GHz | 12 | SL 6 | GRID |
| grid-wn84 | 8 (+HT) | Intel Xeon E5520 2.27 GHz | 12 | SL 6 | GRID |
| grid-wn85 | 8 (+HT) | Intel Xeon E5520 2.27 GHz | 12 | SL 6 | INFN |
| grid-wn86 | 8 (+HT) | Intel Xeon E5520 2.27 GHz | 12 | SL 6 | INFN |
| grid-wn87 | 8 (+HT) | Intel Xeon E5520 2.27 GHz | 12 | SL 6 | INFN |
| grid-wn88 | 8 (+HT) | Intel Xeon E5530 2.40 GHz | 12 | SL 6 | INFN (Proliant HP, ex Alba) |
===== Software =====
==== Benchmark ====
[[http://www.fis.unipr.it/lca/bench/|Benchmark Locali]]
==== OpenMosix ====
Un software specifico, OpenMosix, si preoccupa di suddividere ed ottimizzare il carico di lavoro su tutti in nodi con architettura 32 bit.
==== Monitor dell'attività del cluster ====
Ganglia 3.0.2 [[http://www.fis.unipr.it/ganglia/?c=Calcolo|Report grafico]]
==== Programmi di calcolo ====
Matlab R14 (Service Pack 3)\\
Mathematica 5.2 [[http://c32-ce.fis.unipr.it/cgi-bin/monitorlm|Licenze in uso]]\\
==== Compilatori GNU C/C++/Fortran (versione 3.2.2) ====
gcc\\
g++\\
g77
==== Compilatori GNU C/C++/Fortran (versione 4.1.0) ====
i686-unknown-linux-gnu-gcc\\
i686-unknown-linux-gnu-g++\\
i686-unknown-linux-gnu-g77\\
i686-unknown-linux-gnu-gfortran
==== Compilatori GNU C/C++/Fortran per creare programmi a 64 bit (versione 4.1.0) ====
x86_64-unknown-linux-gnu-gcc\\
x86_64-unknown-linux-gnu-g++\\
x86_64-unknown-linux-gnu-g77\\
x86_64-unknown-linux-gnu-gfortran
==== Compilatori Intel C/C++/Fortran (versione 9.0) ====
icc\\
ifort
===== Utilizzo del cluster =====
L'accesso è riservato allo staff del Dipartimento di Fisica ed agli studenti in tirocinio presso il Dipartimento di Fisica dopo esplicita richiesta al [[lca@fis.unipr.it|Laboratorio di Calcolo Avanzato]].
Compilatori per creare programmi a 64 bit e code dedicate consentono un utilizzo non interattivo del nodo con architettura a 64 bit.
==== Statistiche utilizzo del cluster ====
[[http://www.fis.unipr.it/lca/calcolo/usage/2005.html|Attività 2005]]\\
[[http://www.fis.unipr.it/lca/calcolo/usage/2006.html|Attività 2006]]\\
[[http://www.fis.unipr.it/lca/calcolo/usage/2007.html|Attività 2007]]\\
[[http://www.fis.unipr.it/lca/calcolo/usage/2008.html|Attività 2008]]\\
[[http://www.fis.unipr.it/lca/calcolo/usage/2009.html|Attività 2009]]\\
[[http://www.fis.unipr.it/lca/calcolo/usage/2010.html|Attività 2010]]
==== Spazio disco ====
^ percorso ^ accessile da ^^^^ quota ^ mirror ^ backup ^
| /home/staff | calcolo | archimede | | | SI | SI | SI |
| /work/staff | calcolo | archimede | | | NO | SI | NO |
| /space/staff | calcolo | archimede | | | SI | SI | NO |
| /home/studenti | | | c32-ui03 | c32-ui04 | SI | SI | SI |
| /work/studenti | | | c32-ui03 | c32-ui04 | NO | SI | NO |
==== Nodi di calcolo ====
^ nodo ^ 32 bit ^ 64 bit ^ OpenMosix ^ limite job in run ^
| c32-ce | SI | NO | SI | 10 |
| c64-wn01 | SI | SI | NO | 2 |
| c64-wn02 | SI | SI | NO | 2 |
| c64-wn03 | SI | SI | NO | 2 |
| c64-wn04 | SI | SI | NO | 2 |
| c64-wn05 | SI | SI | NO | 4 |
| c64-wn06 | SI | SI | NO | 8 |
| c64-wn07 | SI | SI | NO | 8 |
==== Code ====
Sul cluster è attivo un server PBS (Portable Batch System) che gestisce la sottomissione dei job. L'utente ha a disposizione sette code con differenti caratteristiche. La coda //fast// è indicata per job che richiedono la massima velocità di esecuzione. Solo alcuni utenti sono autorizzati ad utilizzarla. La coda //long// è la coda più adatta ai job di lunga durata. È la coda di default attiva sul server PBS. La coda //didattica// è riservata agli studenti. La coda //matlab// consente di lanciare script o comandi Matlab. La coda //long64// è indicata per job a 64 bit. La coda //fast64// è indicata per job a 64 bit. Solo alcuni utenti sono autorizzati ad utilizzarla. La coda //stat64// è indicata per job a 64 bit. Solo alcuni utenti sono autorizzati ad utilizzarla.
^ coda ^ nodi ^^ limite job in run ^ limite job in run per utente ^ riservata ^
| fast | c32-ce | | 2 | 2 | SI |
| long | c32-ce | | 10 | 4 | NO |
| didattica | c32-ce | | 6 | 6 | SI |
| matlab | c32-ce | c64-wn[01-07] | 2 | 1 | NO |
| long64 | | c64-wn[01-07] | 28 | 4 | NO |
| fast64 | | c64-wn[01-07] | 12 | 12 | SI |
| stat64 | | c64-wn[01-07] | 16 | 16 | SI |
==== Restrizioni globali ====
^ massimo numero job in run per utente ^
| 20 |
==== Sottomissione dei job con creazione automatica dello script PBS ====
Il comando ''lca-job-submit'' permette la sottomissione di job sulle code sgravando l'utente dalla necessita di creare uno script PBS per ogni job.
Per informazioni aggiornate su ''lca-job-submit'':
lca-job-submit --help
Per conoscere la versione di ''lca-job-submit'':
lca-job-submit --version
Per sottomettere un programma a 32 bit:
lca-job-submit job
lca-job-submit --queue=long job
Nei due casi il risultato è lo stesso perché è la ''long'' la coda di default.
Per sottomettere un programma a 32 bit che accetta opzioni ed argomenti:
lca-job-submit job --size=100x100 job.conf
Per sottomettere un programma a 64 bit:
lca-job-submit --queue=long64 job
Per sottomettere un programma a 64 bit ottimizzato per processori AMD Opteron:
lca-job-submit --queue=long64 --nodes=1:opteron job
Per sottomettere un programma a 64 bit ottimizzato per processori Intel Core 2:
lca-job-submit --queue=long64 --nodes=1:core2 job
Per sottomettere un programma a 64 bit ottimizzato per processori westmere:
lca-job-submit --queue=long64 --nodes=1:westmere job
Per sottomettere uno script Matlab:
lca-job-submit --queue=matlab job
All'avvio del job, alla conclusione o all'interruzione del job, PBS invia all'utente una e-mail di notifica.
Attenzione! Non spostare o cancellare il programma mandato in coda prima dell'avvio del job.
Un programma a 32 bit, lanciato con ''lca-job-submit'' sulla coda //long64//, verrà eseguito correttamente.
Un programma a 64 bit, lanciato con ''lca-job-submit'' sulle code //fast// e //long//, verrà automaticamente sottomesso sulla coda //long64//.
Esempio di sottomissione del programma ''hostname'':
[fabio.spataro@calcolo ~]$ lca-job-submit hostname
lca-job-submit: PBS JOB 21.c32-ce.fis.unipr.it
lca-job-submit: PBS script written to ~/.lca/pbs/21.c32-ce.sh
Al termine del programma, lo standard error verrà scritto in ''hostname.e21'', lo standard output in ''hostname.o21''. I due file verranno creati nella directory corrente al momento del lancio di ''lca-job-submit''.
==== Creazione automatica dello script PBS senza sottomissione del job ====
Esempio:
[fabio.spataro@calcolo ~]$ lca-job-submit --queue=long64 --dry-run hostname
lca-job-submit: PBS JOB not submitted
lca-job-submit: PBS script written to ~/.lca/pbs/hostname
==== Sottomissione di uno script PBS ====
Esempio:
qsub hostname
Consultare la pagina man di ''qsub'' per informazioni sul formato dello script PBS.
All'avvio del job, alla conclusione o all'interruzione del job, PBS invia all'utente una e-mail di notifica.
Al termine del programma, lo standard error verrà scritto in ''hostname.e21'', lo standard output in ''hostname.o21''. I due file verranno creati nella directory corrente al momento del lancio di ''qsub''.
Un programma a 32 bit, lanciato sulla coda //long64// dallo script PBS, verrà eseguito correttamente.
Un programma a 64 bit, lanciato sulle code //fast// e //long// dallo script PBS, non verrà eseguito e terminerà con errore.
==== Controllo dello stato delle code e dei job ====
Esempi:
qstat
qstat -f 21
qstat -u $USER
qstat -u $USER -n
qstat -Q
Consultare la pagina man di ''qstat'' per ulteriori informazioni.
==== Cancellazione di un job ====
Esempio:
qdel 21
Consultare la pagina man di ''qdel'' per ulteriori informazioni.
==== Scambio dell'ordine d'esecuzione di due job in coda ====
Esempio:
qorder 21 22
Consultare la pagina man di ''qorder'' per ulteriori informazioni.
==== Spostamento di un job da una coda all'altra ====
Esempio:
qmove long 21
Consultare la pagina man di ''qmove'' per ulteriori informazioni.
===== Crystal =====
Per l'utilizzo del software crystal e' necessario collegarsi in SSH su emi-ui.pr.infn.it
Per eseguire la sottomissione di job paralleli deve essere utilizzata la coda ''parallel''