Indice
Guida per l'utente
Accesso
Per poter accedere alle risorse occorre essere inseriti nel DataBase LDAP del servizio HPC. Le richieste di accesso o in generale di assistenza vanno inviate a es_calcolo@unipr.it
Una volta abilitati l'accesso avviene via SSH sull'host di login (login.hpc.unipr.it oppure login.pr.infn.it) utilizzando come username <nome.cognome>.
L'accesso con password è consentito solo all'interno della rete di Ateneo e della rete del Gruppo Collegato INFN di Parma. Al di fuori di questo contesto è necessario utilizzare la VPN di Ateneo oppure l'accesso con chiave pubblica.
Accesso dall'esterno con chiave pubblica
Occorre generare la coppia di chiavi con il client SSH. La chiave privata dovrebbe essere protetta da una passphrase adeguata (non è obbligatorio ma è fortemente consigliato). La chiave pubblica deve essere inserita tra le vostre chiavi autorizzate (.ssh/authorized_keys) sull'host di login.
Come configurare i client Linux, MacOS X, PuTTY , Windows SSH Secure Shell (da https://kb.iu.edu)
Accesso passwordless tra i nodi
Eliminare la necessità di utilizzare la password tra i nodi, utilizzando l'autenticazione a chiave pubblica. Occorre generare su login.hpc.unipr.it la coppia di chiavi, senza passphrase, e aggiungere la chiave pubblica nel file di autorizzazione (authorized_keys):
ssh-keygen -t rsa cd ~/.ssh cat id_rsa.pub >> authorized_keys
Nodi di calcolo
L'attuale cluster e' composto dai nuovi nodi di calcolo e dai nodi del preesistente cluster di Fisica / INFN.
Nuovi Nodi di calcolo (Aprile 2017):
- Cluster1
- 8 nodi con 2x Intel Xeon E5-2683v4 (2x16 cores, 2.1GHz), 128 GB ram.
- 1 nodo con 2x Intel Xeon E5-2683v4 (2x16 cores, 2.1GHz) , 1024 GB ram.
- Cluster2
- 2 nodi con 2x Intel Xeon E5-2683v4 (2x16 cores, 2.1GHz), 128 GB ram, 5 GPU Pascal P-100.
- Cluster3
- 4 nodi con 1x Intel Xeon PHI 7250 (1x68 cores, 1.4GHz), 192 GB ram.
Interconnessione con Intel OmniPath (100 Gb/s).
Dettiglio dei Nodi di calcolo nuovi e del cluster di Fisica / INFN: Elenco - Utilizzo (intranet)
Software
Il sistema operativo per tutte le tipologie di nodi e' CentOS 7.X.
Ambiente Software (librerie, compilatori e tools): Elenco
Storage
Il nodo di login e i nodi di calcolo condividono le seguenti aree di storage:
Mount Point | Env. Var. | Backup | Quota | Nota | Supporto |
---|---|---|---|---|---|
/hpc/home | $HOME | si | 50 GB | Programmi e dati | NAS3 |
/hpc/scratch | $SCRATCH | no | 1TB?, max 4? settimane | Dati run-time | NAS (1) |
/hpc/archive | $ARCHIVE | no | 100? GB | Archivio | NAS/tape/cloud (2) |
/hpc/node/wnXX | no | max 10? giorni | wnXX:/node | Dischi locali | |
/hpc/software | Software applicativo | NAS3 | |||
/hpc/database | DB genomica e altro | NAS3 |
(1) Scratch: passaggio da NAS a SAN previsto per 3Q-2017 (2) Archive : attivato nel 2018
Sottomissione dei job
Le code sono gestite con PBSpro . I job vengono sottomessi sulla coda di routing e smistati automaticamente su una coda di esecuzione in base alle risorse richieste.
Comandi utili
Visualizza la stato delle singole code:
qstat -Q
Elenco dei nodi e loro stato:
pbsnodes -av
Per la sottomissione di un job:
qsub <opzioni> -I # modalita' Interattiva qsub <opzioni> script.sh # modalita' Batch
Visualizza i job in coda:
qstat
Opzioni principali
-q <nome coda>
Questa opzione seleziona la coda da utilizzare. Su nostro cluster non e' necessaria poiche' la coda di default (route) seleziona automaticamente la coda di esecuzione in base alle risorse selezionate.
-l <selezione risorse>
E' l'opzione piu' importante poiche' permette di indicare le risorse richieste:
- select: numero di chunk (gruppi di cores sullo stesso nodo)
- ncpus: numero di core per nodo (default 1)
- ngpus: numero di GPU per nodo
- mem: memoria richiesta per nodo
- mpiprocs: numero di processi MPI per nodo
- ompthreads: numero di thread OpenMP per processo
- place=scatter: possibilmente alloca i chunk su host separati (default)
- place=pack: possibilmente raggruppa i chunk sugli host
- place=excl: alloca gli host in modo esclusivo (non condivisi con altri job)
- cluster: seleziona il tipo di nodo (bdw | knl | gpu | fat | std )
Il cluster di default e' std (standard) che' sul cluster nuovo (E4a) puo' essere bdw o fat, mentre sul cluster INFN puo' essere nhl o wmr.
Esempi di selezione delle risorse:
-l select=2:ncpus=2:cluster=knl
-l walltime=<HH:MM:SS>
Tempo massimo di esecuzione del job. Questo dato seleziona la coda da utilizzare. Default: 24:00:00
Esempio:
-l walltime=00:30:00
-W group_list=<nome-gruppo> consente di eseguire il job utilizzando il gruppo secondario specificato. Questo e' utile per l'accounting.
-j oe
redirige lo standard error sullo standard output.
-M <email>
L'opzione -M permette di indicare uno o più indirizzi e-mail, separati da virgola, che riceveranno le notifiche del gestore di code.
-m <opt>
L'opzione -m permette di indicare gli eventi che generano l'invio della notifica:
- a: notifica in caso di interruzione del job
- b: notifica all'avvio del job
- e: notifica alla fine del job
Esempio:
-m abe
Job interattivi
Per verificare l'elenco delle risorse assegnate si puo' utilizzare la sottomissione interattiva con opzione -I. Una volta entrati in modo interattivo il comando cat $PBS_NODEFILE visualizza l'elenco delle risorse assegnate.
qsub -I -l <regola di selezione> cat $PBS_NODEFILE exit
Esempi:
# seleziona 2 chunk con 2 cpu su nodi broadwell ciascuno. qsub -I -l select=2:ncpus=2:mpiprocs=2:cluster=bdw # i chunk possono stare sullo stesso nodo qsub -I -l select=2:ncpus=2:mpiprocs=2:cluster=bdw,place=scatter:excl # i chunk devono stare su nodi diversi qsub -I -l select=2:ncpus=2:mpiprocs=2 # il cluster di dafault e' STD (BDW) # Un chunk da 1 cpu sul nodo wn51 e un chunk sul nodo wn52 qsub -I -l select=1:ncpus=1:mpiprocs=1:host=wn51:cluster=knl+1:ncpus=1:mpiprocs=1:host=wn52:cluster=knl # Due chunk ciascuno con 2 GPU su nodi diversi qsub -I -l select=2:ngpus=2:cluster=gpu,place=scatter:excl
Batch job
Occorre creare uno shell script che include le opzioni PBS e i comandi che devono essere eseguiti sui nodi.
per sottomettere il job:
qsub scriptname.sh
Ad ogni job viene assegnato un identificativo numerico univoco <Job Id>.
Al termine dell'esecuzione verranno creati i due file contenenti stdout e stderr nella directory da cui e' stato sottomesso il job.
Per default i due file prendono il nome dello script con una estensione aggiuntiva:
Stdout: <script.sh>.o<job id> Stderr: <script.sh>.e<job id>