logo CASPUR CASPUR  
  Home Page   Archivio Notizie   Archivio Eventi   Contatti   Mappa del sito   cerca in english
Home Page-->Guida utenti-->Guida all'uso del cluster Opteron
Il Consorzio
 
Attivitą e Servizi
 
Logo CSQ Logo IQNet
ISO 9001:2008

GUIDA ALL'USO DI POSEIDON (CLUSTER OPTERON)

Introduzione

Poseidon (poseidon.caspur.it) è un cluster Linux basato su processori AMD Opteron single e dual core. Il cluster è composto da un front-end, aperto all'uso interattivo per le attività di sviluppo e preparazione dei job, e dai nodi di calcolo riservati all'elaborazione batch. I nodi di calcolo sono suddivisi in 3 partizioni: una con semplice interconnessione gigabit ethernet (nodi slacs), le altre due con interconnessione Infiniband ad alte prestazioni (nodi inode e dcore), dedicati a job paralleli. Nel dettaglio:

  • slacs: composta da 24 nodi, ciascuno con 2 processori AMD Opteron 246 single-core e 4 GB RAM;
  • inode: composta da 24 nodi, ciascuno con 2 processori AMD Opteron 250 single-core e 4 GB RAM;
  • dcore: composta da 24 nodi, ciascuno con 2 processori AMD Opteron 280 dual-conre e 8 GB RAM;

A seconda delle risorse richieste, il sistema di code selezionerà la partizione del cluster su cui indirizzare il vostro job (maggiori dettagli in Modalità Batch e Sistema di Code). L'interprete di comandi di default è la tcsh. L'ambiente di questa shell è automaticamente configurato in modo opportuno per utilizzare il sistema.

L'ambiente di lavoro è gestito mediante moduli, come descritto nella sezione Moduli e Ambiente.

E' possibile consultare un breve help in linea del sistema, digitando il comando "ClusterHelp". Oltre alle informazioni riportate in questa guida, troverete anche un elenco di indirizzi utili per il supporto.


Uso interattivo
Moduli e Ambiente
Strumenti di sviluppo
Modalità Batch e Sistema di Code
File system
Supporto

Uso interattivo

L'accesso interattivo al sistema è consentito sul front-end poseidon.caspur.it tramite connessione sicura ssh. E' possibile connettersi al sistema con il comando:

ssh -X username@poseidon.caspur.it

dove username corrisponde al vostro username fornitovi dal CASPUR. L'opzione -X consente di ridirigere eventuali applicazioni grafiche sullo schermo della vostra postazione di lavoro (da utilizzarsi in caso riceviate un errore del tipo "Error: Can't open display:".

Gli altri nodi del cluster sono chiusi all'accesso dell'utenza. L'uso interattivo è riservato alle attività ordinarie di sviluppo, di sottomissione di batch job, di controllo dell'andamento delle stesse, di visualizzazione e limitate elaborazioni dei dati prodotti. A tale scopo, e per evitare sovraccarichi del nodo, tutti i processi sono limitati ad un CPU time di 20 minuti. Un processo che raggiunga tale limite sarà automaticamente terminato. Il limite non impedisce lo svolgimento delle attività ordinarie, che consistono nell'uso di sequenze di processi brevi o di applicazioni che fanno uso molto limitato di CPU.


Moduli e Ambiente

L'ambiente di lavoro (shell environment) è gestito mediante l'utilizzo di moduli. I moduli sono dei file contenenti istruzioni per la configurazione di un ambiente di lavoro, ossia per la definizione o la modifica di variabili di ambiente della shell (ad esempio le variabili PATH, LD_LIBRARY_PATH, ecc) su cui state lavorando. La gestione dei moduli avviene tramite il tool Environment-module.

Digitando il comando module, vi verranno elencati i possibili comandi (o azioni) che può intraprendere. Tra le principali, ricordiamo:

  • per mostrare l'elenco dei moduli attualmente caricati e in uso nella vostra shell:
    module list
  • per mostrare l'elenco dei moduli disponibili sul sistema:
    module avail
  • per caricare il modulo chiamato "nomemodulo"
    module load nomemodulo
  • per rimuovere il modulo chiamato "nomemodulo"
    module unload nomemodulo
  • per ottenere una descrizione e informazioni sul modulo chiamato "nomemodulo":
    module show nomemodul

Al login, nessuno dei moduli è caricato automaticamente. Per utilizzare i compilatori dovrete caricare i moduli corrispondenti.

Per maggiori informazioni sull'utilizzo dei moduli potete consultare le pagine man (module(1) e modulefile(4)).


Strumenti di Sviluppo

Il front-end poseidon può essere utilizzato come piattaforma di sviluppo e debugging di applicazioni (solo serial o shared-memory, non MPI). Sul sistema sono disponibili i compilatori della suite GNU, Intel e PGI, sia per FORTRAN che C/C++, nonchè il TotalView debugger. Per utilizzare i compilatori disponibili dovrete caricare il modulo corrispondente.

Ogni applicazione compilata con i compilatori Intel o PGI dovrà essere eseguita in un ambiente con i moduli corrispettivi caricati.


Compilare Programmi Paralleli MPI

Per compilare programmi paralleli basati su MPI, dovrete caricare, nell'ordine, uno dei compilatori e uno dei modulo MPI disponibili sul sistema. I moduli MPI renderanno disponibile alla linea di comando i compilatori paralleli mpicc e mpif90 e l'MPI starter mpiexec.

I comandi mpicc e mpif90 sono in realtà dei wrapper ai compilatori base prescelti, che contengono opzioni opportune per compilare e linkare il programma parallelo con lo specifico modulo MPI. Non sarà dunque necessario aggiungere o indicare in fase di compilazione e linking, riferimenti agli header o alle librerie mpi in uso.

Per eseguire un programma parallelo si usa il comando:

mpiexec -n N /path/to/your/parallel/executable/my_parallel.x args

dove con -n N si indica il numero N di processi paralleli. Se non indicato, il programma verrà eseguito automaticamente facendo uso di tutti i processori disponibili assegnati dal sistema di code.

I moduli MPI disponibili sono:
  • openmpi: adatto per interconnessione InfiniBand e gigabit ethernet;
  • mvapich: solo InfiniBand;
  • mpich: solo gigabit ethernet.

L'utilizzo del modulo openmpi garantisce che il proprio eseguibile potrà girare senza problemi sia sulla partizione slacs (rete gigabit ethernet) sia sulle partizioni inode e dcode (rete alte prestazioni InfiniBand): in questo modo il driver di comunicazione appropiato verrà scelto a runtime.

Con l'utilizzo dei moduli mvapich o mpich non sarà possibile eseguire il codice, rispettivamente, nella partizione con interconnessione gigabit o Infiniband: per ovviare a questo problema, potete usare il modulo openmpi oppure compilare due eseguibili (uno con mvapich, l'altro con mpich ed utilizzare lo script di sottomissione in /opt//PBSSampleScripts/parallel-dynamic.sh che selezionerà l'eseguibile da girare a seconda della partizione in cui il sistema di code ha allocato il job).

Una volta compilato il codice parallelo, per eseguirlo, dovranno essere sempre cariti gli stessi moduli del compilatore e di MPI utilizzati per la compilazione. Ricordarsi quindi di inserire le opportune istruzioni module load compiler_mod mpi_mod negli script di sottomissione dei job in modalità batch (vedi Modalità Batch e Sistema di Code).


Librerie Matematiche

Nella directory /opt/ sono presenti varie librerie matematiche, tra cui le FFTW3, le ScaLAPACK, le GotoBLAS, le ACML (AMD) e MKL (Intel) che forniscono versioni ottimizzate delle librerie BLAS, LAPACK, FFT, etc... Per maggiori informazioni, fate riferimento ai manuali contenuti nella sottodirectory doc/ di ciascuna libreria.

Ogni libreria è stata compilata per ognuno dei compilatori disponibili e va quindi selezionata la libreria dalla sottodirectory con il nome del compilatore in uso. Ad esempio, se si sta utilizzando il compilatore pgi, per linkare le ACML bisognerà fare riferimento alla directory /opt/acml/pgi64/lib e usare le seguenti opzioni di linking -L/opt/acml/pgi64/lib -lacml -lacml_mv oppure, per se si sta utilizzando il compilatore intel e si vuole linkare le FFTW3 si farà riferimento alla directory /opt/fftw3/intel/lib/, utilizzando le seguenti opzioni di linking -L/opt/fftw3/intel/lib/ -lfftw3 .


Modalità Batch e Sistema di Code

L'accesso alle risorse di calcolo del cluster avviente tramite un sistema di code. L'utente dovrà preparare uno script che descrive il lavoro (job) che dovrà essere eseguito in automatico dai nodi di calcolo (modalità batch).

L'utente dovrà sottomettere lo script al sistema di code che, a seconda delle risorse richieste dall'utente (numero di CPU, tempo di calcolo richiesto dal job, etc), riserverà le risorse di calcolo in modo opportuno per essere eseguito.


Sottomissione dei lavori e richiesta risorse

Per sottomettere al sistema di code lo script myscript.sh si usa il comando:

qsub -l risorse myscript.sh

dove con l'opzione "-l risorse" si specificano le risorse che si vuole riservare per l'esecuzione del vostro lavoro.

Se la sottomissione è corretta, il sistema assegna un numero, detto job_id, alla vostra richiesta. Questa numero identificativo può essere utilizzato per controllare lo stato del job (vedi Controllo dei Job).

Nella directory /opt/PBSSampleScripts/ abbiamo raccolto alcuni esempi di script di sottomissione per job di tipo seriali e paralleli.

Le "risorse" possono essere di tipo hardware (ad esempio il numero o tipologia dei nodi, numero di CPU, tipo di interconnessione) oppure di tipo temporale (ad esempio, quanto tempo di calcolo serve per terminare il vostro job). E' possibile specificare combinazioni di più risorse hardware (separate da ":") e temporali (separate da ","), ad esempio il comando:

qsub -l nodes=4:ppn=2:ib,walltime=10:00:00 myscript.sh

richiede al sistema di code di far girare il job myscript.sh riservando 4 nodi con 2 CPU ciascuno per una durata totale di 10 ore.

Di seguito riportiamo un elenco delle sintassi per le richieste di risorse più comuni:

  • nodes=N in questa formulazione il numero N corrisponde al numero di CPUs totali richieste per il vostro lavoro, e si lascia al sistema di code di scegliere su quali nodi attingere queste CPU;
  • nodes=N:ppn=m in questa formulazione invece si richiede un numero N di nodi ciascuno con m CPU, per un totale di Nxm CPUs. Se si specifica m=4 si forza il sistema di code a chiedere accesso alla partizione dcore, avente nodi con 4 core;
  • nodes=N:ppn=m:ib in questo modo, oltre al numero di nodi e processori per nodo, si specifica che si vuole utilizzare nodi interconnessi con tecnologia InfiniBand. In tal modo il lavoro verrà indirizzato nelle partizioni inode o dcore;
  • walltime=hh:mm:ss: serve a specificare il tempo di calcolo da riservare al vostro job. Se non specificato, verrà assegnata 1 sola ora;

Per maggiori informazioni si rimanda alle pagine man qsub.

ATTENZIONE: se non viene specificata l'interconnessione InfiniBand con la specifica di risorsa :ib, il sistema di code si riserva di decidere in quale partizione far girare il vostro lavoro e non sarà dunque garantito l'uso della rete ad alte prestazioni.


Tipologie di Risorse e Code

Le risorse del sistema sono organizzate in code di esecuzione, o brevemente code, a seconda della tipologia di utilizzo che se ne vuole fare. Sul sistema sono definite le seguenti code:

Name Max CPU Time Max Walltime Min-Max CPUS Network
mpp_ib 128h 16h 8 - 32 ib
mpp - 16h 2 - 8 eth/ib
smp - 24h 1 - 2 eth
debug - 1h 1 - 8 eth/ib

  • mpp_ib: questa coda è riservata a job paralleli con un numero minimo di 8 CPUs in tecnologia di interconnessione ad alte prestazioni Infiniband. Su questa coda c'è un limite di risorse tale per cui il prodotto tra il numero di CPU richieste e il tempo richiesto deve essere minore o uguale a 128 ore: ad esempio, sarà possibile utilizzare questa coda chiedendo 32 CPUs per 4 ore, oppure 16 CPUs per 8 ore o ancora 8 CPUs per 16 ore;
  • mpp: questa coda è riservata per job paralleli con un numero di CPUs compreso tra 2 e 8. Se non viene specificata la tipologia di interconnessione, il sistema di code potrà indirizzare il job a girare sia nella partizione slacs (in gigabit ethernet) o sulle partizioni inode e dcore in tecnologia Infiniband;
  • smp: questa coda è dedicata a job serial o shared memory;
  • debug: questa coda è dedicata al debugging di applicazioni seriali o parallele (max 8 CPUs) per un tempo massimo di 1 ora;

E' possibile specificare in quale coda si desidera indirizzare il proprio lavoro, tramite l'opzione di qsub "-q nome_coda". Se la coda non viene specificata, il sistema indirizzerà il vostro job sulla coda che soddisfa al minimo le vostre richieste di risorse. Ad esempio, facendo riferimento alla tabella riassuntiva, con il comando:

qsub -l nodes=2:ppn=2 myscript.sh

non specificando il tempo richiesto per il job, il sistema di code assegna al job 1 ora di esecuzione (vedi specifica di risorsa walltime) e indirizzerà il job sulla coda debug.


Controllo dei Job

Il controllo dei job si effettua per mezzo del comando qstat. L'opzione -u username consente di mostrare lo stato dei job relativi all'utenza desiderata. Per maggiori informazioni e opzioni si consiglia di leggere il manuale di qstat, con il comado man qstat.

Job id              Name             User            Time Use S Queue
------------------- ---------------- --------------- -------- - -----
94986.poseidon      csp8Gb.sh        utente          0        Q smp
100621.poseidon     dmc_F-17         utente          28:46:44 R mpp_ib

Nell'esempio riportato si vede che l'utente "utente" ha sottomesso 2 job, il primo con identificativo 94986 e nome "csp8Gb.sh" attualmente in attesa di partire nella coda smp, il secondo con identivicativo 100621 e nome "dmc_F-17" che sta girando sulla coda mpp_ib.

E' possibile avere una visione globale dello stato dell'intero cluster e dei vostri job, tramite il comando pbstop: si tratta di un tool molto simile a top e mostra in dettaglio lo stato di occupazione dei nodi, nonché fornisce un controllo sui propri job (vedi il manuale di pbstop tramite man pbstop o accedendo all'help premendo il tasto "h" da dentro il programma).

Per avere informazioni sullo stato di un job, ad esempio capire a quale coda verrà assegnato o tra quanto tempo si prevede possa essere eseguito, si usano i comandi checkjob job_id e showstart job_id.

Per cancellare un job si utilizza il comando qdel job_id.


File System

La directory /home è su un file system distribuito NFS, visibile e accessibile a tutti i nodi di calcolo del cluster. Si presta primariamente alle attività che coinvolgono file di dimensioni contenute, come le normali attività di sviluppo, ma non si presta ad ospitare file di grandi dimensioni, né ad attività di input/output (I/O) intensivo.

Su ogni nodo è disponibile un file system /scratch, utilizzabile come area di lavoro temporanea. Tale area è locale ad ogni singolo nodo del sistema, quindi ogni nodo ha la sua area e non sono visibili e condivise tra loro. Queste aree di lavoro possono essere utilizzate per job che fanno input/output (I/O) intensivo su job seriali o su job paralleli per i quali ogni processo deve scrivere file indipendenti. Le aree /scratch locali ad ogni nodo sono accessibili dal front-end (in sola lettura) attraverso la directory /cluster.scratch, suddivisa per ogni partizione e nodo. Le aree /scratch sono soggette a pulizia periodica dei file più vecchi, perciò si consiglia di recuperare i file di interesse ed eventualmente (se importanti o di grosse dimensioni) salvarli nell'area /stage.

La directory /stage è in realtà un sistema di archiviazione su nastro di dati che al momento non sono necessari in linea, utile allo scopo di liberare la proprie aree disco per far spazio a dati da produrre con nuove elaborazioni. Per l'uso di tale area si rimanda alla documentazione relativa.


Supporto
E-mail support amdclusters@caspur.it
Staging support stager@caspur.it
indietro