TeraStat nasce come sistema di supercalcolo basato su filosofia batch. L'utente interessato a condurre un esperimento si collega a TeraStat adoperando il proprio account personale, predispone tutto il necessario all'esecuzione del proprio esperimento (tipicamente, i dati di input ed il codice da eseguire) e sottopone la richiesta a TeraStat. Non appena sul cluster ci saranno risorse a sufficienza per soddisfare la richiesta dell'utente, questa verrà presa in carico ed esaudita. 
 

Eventuali richieste di sipporto possono essere indirizzate a supercalcolo.dssATuniroma1.it.

Collegarsi a TeraStat

L'accesso a TeraStat avviene mediante l'uso di un nodo di login. L'utente si collega a questo nodo per trasferire i dati che ha intenzione di elaborare e per impartire le istruzioni circa gli esperimenti che intende condurre. Esistono due modalità di collegamento: collegamento testuale, via terminale, e collegamento tramite desktop grafico. Delle due modalità, la prima è più essenziale e meno intuitiva, ma adatta nel caso non si disponga di una connessione di rete veloce. La seconda modalità ricrea un ambiente grafico simile a quello del proprio desktop, ma richiede una connessione di rete più veloce e può rivelarsi più lenta da usare rispetto alla prima.

 

Connessione via terminale di testo

La connessione via terminale testuale richiede l'uso di una applicazione di collegamento che supporti il protocollo SSH. Nel caso si utilizzi un sistema Linux o MacOS, questa è preinstallata nel sistema (p.es., il comando ssh eseguito nell'applicazione Terminale nel caso di MacOS). Nel caso si usi un sistema Windows occorre scaricare un'applicazione di terze parti. A questo proposito, si suggerisce l'uso dell'applicazione Putty, disponibile al seguente indirizzo http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe.
I protocolli SCP, supportato ad esempio in windows da winscp, ed SFTP possono essere utilizzati per trasferire file sul cluster.

Parametri di connessione:

hostname: n2.sta.uniroma1.it
port: 22
 

 

Connessione via desktop grafico

La connessione via desktop grafico richiede l'uso di una applicazione di collegamento che supporti il protocollo NX. Tra quelle liberamente disponibili, si consiglia del client NoMachine disponibile per Windows (link diretto download), Linux e MacOS (link diretto download).

Parametri di connessione:

hostname:  n2.sta.uniroma1.it  
port: 22
protocol: SSH
modalità di autenticazione : Usa l'autenticazione NoMachine (nel solo caso in cui si usi quest'ultimo client)

Una metodo alternativo per sfruttare l'interfaccia grafica è descritto nella pagina "Terminale Grafico"

Il sistema di code

L'accesso alle risorse di calcolo di TeraStat avviene mediante un sistema a 'code' e prevalentemente per l'esecuzione di processi di tipo batch. Questo significa che l’utente interessato a realizzare delle elaborazioni deve preparare un file di testo (script) contenente tutte le istruzioni per l’esecuzione in automatico delle elaborazioni stesse, senza alcun ulteriore intervento umano. Una volta che lo script sarà pronto, questi dovrà essere sottoposto al sistema adoperando il comando qsub. Il sistema prenderà in carico lo script e provvederà ad eseguirlo non appena ci saranno sufficienti risorse disponibili. L'ordine di esecuzione degli script viene stabilito sulla base della coda di appartenenza. Script assegnati alla coda S hanno la priorità sugli script assegnati alla coda M, e così via, sino alla coda XXL. A questo meccanismo se ne associa un altro, detto di fairshare, per cui se un utente durante un certo periodo di tempo sottomette più job, vede diminuire la priorità dei job successivi al primo, indipendentemente dalla coda cui questi sono sottomessi e per tutto quel periodo.

Nome Coda Numero max nodi Numero min core Numero max core Durata max esperimento
S 4 1 128 8
M 1 1 32 48
L 2 1 64 48
XL 4 65 128 48
XXL 4 1 128 99

 

Preparazione ed esecuzione di un job (modalità batch)

Supponiamo di aver preparato sul proprio PC e di voler eseguire il seguente programma R, salvato in un file di nome prova.r.

a <- rnorm(1000,0,1)
print(a)

 
Come primo passo, occorre creare un file di testo, con estensione .sh (p.es., “prova.sh”), contenente le istruzioni necessarie all’esecuzione di “prova.r”. 

#!/bin/sh 
#PBS -l nodes=1:ppn=1
#PBS -l walltime=2:00:00
#PBS -m abe -M umbfer@gmail.com

cd /home/nome_utente
R --slave -f prova.r 

Nell'esempio soprastante, la prima sezione del file script è usata per definire delle direttive destinate al sistema di gestione delle code, tramite le quali indichiamo di quali risorse ha bisogno il nostro esperimento. In particolare:

  • La prima riga indica che il file corrente è un file script, e deve essere sempre presente nella sua forma attuale.

  • La seconda riga indica il numero di nodi (“nodes”, i.e., computer) del cluster (sino ad 8, nel caso di TeraStat) e il numero di processori (ppn) per nodo del cluster (sino a 16 o 32 a seconda del nodo nel caso di TeraStat) che si vuole impiegare nella elaborazione .

  • La terza riga riporta una stima del tempo di esecuzione massimo per il job, walltime, espresso nel formato HH:MM:SS. Il limite massimo è 99:00:00 (99 ore di tempo durante il quale ciascuno dei processori richiesti viene interamente dedicato al job). Attenzione: durante l'esecuzione di un esperimento, non appena il walltime sarà superato e nel caso in cui il job sia ancora in esecuzione, questi verrà terminato senza possibilità di salvataggio dei dati.

  • La quarta riga include una direttiva (opzionale) tramite la quale l'utente richiede di essere informato circa il momento in cui il proprio script andrà in esecuzione ed il momento in cui questi terminerà.

Nelle righe successive alle prime 5 si riporta l'elenco delle istruzioni che compongono il proprio esperimento. Nell'esempio sopra descritto, l'esperimento consiste nell'utilizzo del programma R per l'esecuzione non interattiva del programma codificato nel file prova.r.

Si tenga conto che è possibile creare i file necessari ad eseguire il proprio esperimento direttamente una volta collegati al nodo login del cluster, adoperando i software di text editing presenti (e.g., emacs, KEdit, vi). In alternativa, è possibile preparare tutto il necessario sul proprio PC dopodiché trasferire i file risultati sul cluster adoperando il comando SFTP o, in alternativa, un qualsiasi applicativo per il trasferimento file che supporti questo protocollo (e.g., WinSCP).

 

Importante: nel caso in cui il test si stia eseguendo non sia parallelizzato, è necessario richiedere un solo nodo (nodes=1) ed un solo processore per nodo (ppn=1). Richiedere più processori per l'esecuzione di un test non parallelizzato non porterà alcun beneficio sui tempi di esecuzione.

 

Una volta approntato il file script, è possibile sottometterlo al sistema di code utilizzando il comando qsub, secondo la seguente sintassi:

qsub prova.sh

La coda cui il job verrà assegnato sarà determinata in automatico, sulla base delle risorse richieste dal job (p.es., un job che usa un solo processore ed ha una durata massima di 4 ore viene assegnata alla coda S, la più veloce). Una volta sottoposto uno script, ad esso viene assegnato un numero identificativo (ID) dal sistema. Tale identificativo può essere usato per avere informazioni sul lavoro stesso, verificare il suo stato o eliminarlo.

 

Preparazione ed esecuzione di un job (modalità interattiva)

Pur essendo privilegiata la modalità batch, TeraStat offre anche la possibilità di eseguire job in modalità interattiva. Quest'ultima modalità consente all'utente di richiedere ed interagire direttamente con le macchine del cluster, senza dover precompilare un file script con le istruzioni di esecuzione del proprio esperimento. La modalità interattiva si rende necessaria quando si intende eseguire i propri esperimenti utilizzando applicazioni basati su una interfaccia grafica (e.g., Matlab). 

Verifica dello stato di un job

E' possibile controllare lo stato dei job sottomessi e conoscerne il codice identificativo utilizzando il comando qstat seguito dal proprio nome utente:

qstat -u uferraro

Allo stesso modo, è possibile conoscere l'elenco integrale dei test sottomessi da tutti gli utenti assieme all'indicazione del loro stato di esecuzione (Q-queued, R-running, C-completed), usando il comando qstat senza parametri.

qstat

Nel caso si volesse interrompere un job sottomesso, che sia in esecuzione o meno, è possibile rimuoverlo dalla coda eseguendo il comando qdel seguito dalcodice identificativo del job da interrompere

qdel 1540

Moduli e Selezione del Software

Sul cluster TeraStat è possibile utilizzare diversi software. Alcuni sono direttamente disponibili quando si effettua il login, mentre per altri è necessario configurare il proprio ambiente per utilizzarli; per semplificare questa operazione viene messo a disposizione il sistema module. Il suo utilizzo si riduce sostanzialmente a quattro comandi di shell:

  • module list: permette di visualizzare i moduli caricati in un determinato momento
  • module avail:  permette di visualizzare i moduli disponibili
  • module load <nome modulo>: permette il caricamento di un nuovo modulo
  • module rm <nome modulo>: permette di rimuovere un modulo precedentemente caricato (NB in caso di dipendenze comuni la rimozione di un modulo può compromettere il funzionamento di altri moduli che quindi devono essere ricaricati)

Per tutti questi comandi è attivo l'autocompletamento della shell.

L'effetto di questi comandi è limitato alla shell in cui vengono eseguiti.

Note

Il Dipartimento di Scienze Statistiche non si assume, altresì, alcuna responsabilità né circa l'integrità dei dati trasferiti sul cluster o ivi prodotti dagli utenti, né circa il corretto e continuativo funzionamento del sistema di calcolo. 

Approfondimenti

  1. OpenMPI e Rmpi

  2. Keras in R