Progetto HPC - Calcolo Scientifico dell'Università e dell'INFN di Parma -
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 . 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 [[http://noc.unipr.it/public/vpn/home|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 [[ https://kb.iu.edu/d/aews | Linux, MacOS X, PuTTY ]] , [[ https://kb.iu.edu/d/amzx | 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. {{:calcoloscientifico:hpcschema.png?200|}} 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: [[ http://www.fis.unipr.it/dokuwiki/doku.php?id=calcoloscientifico:nodicalcolo | Elenco ]] - [[ http://cm02.hpc.unipr.it/ganglia/?c=PREPROD%20Cluster&m=load_one | Utilizzo ]] (intranet) ===== Software ===== Il sistema operativo per tutte le tipologie di nodi e' CentOS 7.X. Ambiente Software (librerie, compilatori e tools): [[ http://www.fis.unipr.it/dokuwiki/doku.php?id=calcoloscientifico:softwareapplicativo | 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 [[ http://www.fis.unipr.it/dokuwiki/doku.php?id=calcoloscientifico:priv:cluster:storage | Area privata ]] ===== Sottomissione dei job ===== Le code sono gestite con [[ http://www.pbspro.org/ | PBSpro ]]. I job vengono sottomessi sulla coda di routing e smistati automaticamente su una coda di esecuzione in base alle risorse richieste. [[http://www.fis.unipr.it/dokuwiki/doku.php?id=calcoloscientifico:code | Dettaglio code batch]] ==== 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 -I # modalita' Interattiva qsub script.sh # modalita' Batch Visualizza i job in coda: qstat === Opzioni principali === **-q ** 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 ** 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=** 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= ** 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 ** L'opzione -M permette di indicare uno o più indirizzi e-mail, separati da virgola, che riceveranno le notifiche del gestore di code. ** -m ** 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 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 . 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: .o Stderr: .e