Utilizzare TeraStat

Italiano
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. 

 

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

Parametri di connessione:

hostname: n1.sta.uniroma1.it  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, Linux e MacOS all'indirizzo https://www.nomachine.com/download. Nel caso si dovessero sperimentare problemi con l'uso di questo client, è possibile adoperare il client alternativo noto come OpenNX e disponibile all'indirizzo http://opennx.net/download.html

Parametri di connessione:

hostname: n1.sta.uniroma1.it  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 volta collegatosi, l'utente ha a disposizione una doppia home directory per conservare i propri file. La directory di default è collocata nella posizione /afs/sta.uniroma1.it/user/home/ ed adopera il file system AFS. Tale directory andrebbe utilizzata esclusivamente per file di servizio. Ciascun utente dispone inoltre di una seconda home directory, collocata nella posizione /lustre/work. Questa seconda home directory adopera una tecnologia di rete ad alta velocità che garantisce tempi di trasferimento dei dati estremamente bassi (8 Gb/sec, Infiniband II). 

 

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 /afs/sta.uniroma1.it/user/home/uferraro
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 che debbono essere impiegati nella elaborazione (sino ad 8, nel caso di TeraStat)

  • La terza riga indica il numero di processori per nodo del cluster che debbono essere impiegati nella elaborazione (sino a 32, nel caso di TeraStat)

  • La quarta 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 quinta 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 procerrore 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). Per ulteriori informazioni, si consulti la documentazione disponibile all'indirizzo https://sys2a.sta.uniroma1.it/torque.htm, alla voce Interactive Jobs.

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

 

Note

La gestione sistemistica del cluster e dei servizi che esso offre è a cura di CINECA. L'interazione tra CINECA ed utenza del cluster è mediata dalla presenza di un gruppo ristretto di tecnici e ricercatori del Dipartimento di Scienze Statistiche che, su base volontaria, dedicano parte del loro tempo a questo scopo. Non è possibile garantire a priori né il soddisfacimento di eventuali richieste inerenti l'operatività del cluster (e.g., installazioni di nuovi software, risoluzione di problematiche di connessione, difficoltà nell'utilizzo del sistema di calcolo) né i tempi con cui queste potrebbero essere eventualmente soddisfatte. 

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.