logo CASPUR CASPUR  
  Home Page   Archivio Notizie   Archivio Eventi   Contatti   Mappa del sito   cerca in english
Home Page-->Guida utenti-->Il sistema SGEEE di code seriali e parallele
Il Consorzio
 
Attività e Servizi
 
Logo CSQ Logo IQNet
ISO 9001:2008

IL SISTEMA SGEEE DI CODE SERIALI E PARALLELE

Introduzione

Su alcuni cluster di macchine del CASPUR è stato installato il Queueing System SGEEE (Sun Grid Engine Enterprise Edition) della Sun Microsystems. SGEEE rappresenta la naturale evoluzione della precedente versione del sistema di code GRD.
Nel sistema SGEEE si ha un certo numero di code associate a ciascun host. L'utente può richiedere le risorse di cui ha bisogno (memoria, runtime, spazio disco, ecc.) e il sistema di code sceglie automaticamente la coda su cui mandare il job in esecuzione. Il concetto di "coda" è strettamente legato a un host: su un host possono essere definite più code, ma una coda non può girare su più di un host.

Celle SGEEE al CASPUR

Il sistema di code SGEEE è stato installato al CASPUR sui seguenti cluster di macchine:

  • HP EV7: il nome della cella SGEEE è ev7. Il cluster è composto dalla macchina multiprocessore jamaica. Sono state definite due code, il cui limite per il run-time è fissato secondo la seguente tabella:

    Coda Limite di run-time Seriale/Parallela Numero di slot
    jamaica 8 h Parallela 28
    gaussian 8 h Parallela 8

  • Power4: il nome della cella SGEEE è sp4. Il cluster è composto da man (front-end), zut, pwr4p0, pwr4p1 e pwr4p2. Anche in questo caso per ogni macchina è stata definita una coda che porta lo stesso nome del nodo su cui gira. Il limite per il run-time è fissato secondo la seguente tabella:

    Coda Limite di run-time Seriale/Parallela Numero di slot
    pwr4p0 8 h Parallela 8
    pwr4p1 8 h Parallela 32
    pwr4p2 8 h Parallela 32
    zut 8 h Seriale 4

  • NEC SX6: il nome della cella SGEEE è nec. Il cluster è composto da drone (front-end) e nectar.
    Coda Limite di run-time Seriale/Parallela Numero di slot
    nectar 8 h Parallela 8


Sottomissione di un job

Ogni job deve essere sottomesso al sistema di code SGEEE sotto forma di uno shell script:


#!/bin/tcsh
cd myproject/mybinaries
cc -o myprogram.exe myprogram.c
myprogram.exe -input mydata.dat -output myjob.out

I job devono essere sottomessi con il comando qsub:


<palumbo@vulcano ~>qsub -l h_rt=9:00:00 myjob.sh
your job 13 ("myjob.sh") has been submitted

È importante specificare l'opzione -l h_rt=HH:MM:SS per definire il tempo necessario al run, altrimenti verrà aggiunto implicitamente -l h_rt=8:00:00, ossia il run durerà al massimo 8 ore anche se la coda assegnata ha un limite di run-time di 24 ore.


Controllo dei job

Il controllo dei job si effettua per mezzo del comando qstat. L'opzione -f offre una visione globale delle code della cella.


<palumbo@vulcano ~>qstat
job-ID prior name     user    state submit/start at     queue   master
----------------------------------------------------------------------
13     0     myjob.sh palumbo t     09/24/1999 17:10:39 vulcano MASTER

<palumbo@vulcano ~>qstat -f                          
queuename            qtype used/tot. load_avg arch      states
--------------------------------------------------------------
vesuvio              BP    0/14      15.87    solaris64   
--------------------------------------------------------------
vulcano              BP    1/4       8.44     solaris64   
13     0     myjob.sh palumbo r     09/24/1999 17:10:39 MASTER

Per default SGEEE è configurato in modo tale da rifiutare un job sottomesso se questo possiede delle caratteristiche tali da non poter essere sottomesso su nessuna coda.
Per controllare in anticipo se un job può essere sottomesso, occorre usare l'opzione -w v di qsub.


<palumbo@sp3 >qsub -w v -pe mp 4 sottometti_mpi_ip
verification: found possible assignment with 4 slots
<palumbo@sp3 >qsub -w v -pe mp 400 sottometti_mpi_ip
Your job: parallel job requires more slots than available
verification: no suitable queues
Maggiori informazioni sui job mandati in esecuzione si possono ottenere tramite l'opzione -r di qsub.
Lo standard output e lo standard error di un job sottomesso vengono messi per default nella working directory corrente, con la forma:

<job_name>.o<job_number> (standard output)
<job_name>.e<job_number> (standard error)
Le opzioni -o e -e di qsub permettono di cambiare locazione ai file di output e di errore.


Cancellazione di un job

Per cancellare un job, si usa il comando qdel <job_id>.


Job in stato di errore

Quando un job va in errore, questo viene rimesso in coda (si può vedere lo stato di errore dalla "E" che appare nei flag di stato). Se il problema che ha messo il job in error state viene risolto, il flag si può togliere dal job con il comando qmod -c <job_id>.


Parallel Environment

Sulle code delle celle vulcani, venti, fiumi e sp3 sono stati configurati due Parallel Environment: mp e sm. Per utilizzarli, occorre specificare l'opzione -pe <ambiente> <numero processori> (es. -pe mp 4) al comando qsub.
Sulle code della cella sp3 l'ambiente message passing (mp) utilizza l'HPS (High Performance Switch) in modalità US.


Osservazione importante

Prima di sottomettere un job a SGEEE, è necessario controllare se i propri file di inizializzazione (.cshrc, .login, .profile, .kshrc) contengono comandi come stty, che provocano degli errori se eseguiti in modalità batch (i job eseguiti in batch non hanno una connessione in terminale). Questi comandi vanno rimossi o aggirati in modo che vengano eseguiti solo a un'effettiva connessione via terminale. Per maggiori dettagli consultare il manuale di SGEEE a pagina 58.


Ulteriori informazioni

Per ulteriori informazioni si può consultare il manuale di SGEEE o le man page dei diversi comandi.


Esempi di script per sottomettere job

Notare che il carattere "#" è un commento, mentre "#$" è un comando.

Script per sottomettere un job seriale:

#!/bin/sh

# Reindirizzo output (opzionale)
#$ -o bench.out

# Reindirizzo standard error (opzionale)
#$ -e bench.err

# Invio notifica start/stop/fail (opzionale)
# 1) indirizzo e-mail del destinatario
#$ -M nomeutente@caspur.it
# 2) quando spedire l'e-mail
# b = spedire messaggio all'inizio del run
# e = spedire messaggio alla fine del run
#$ -m be

#--------------------------------------------
# Settaggio eventuali variabili d'ambiente
MIA_VARIABILE = 10
export MIA_VARIABILE
#--------------------------------------------

Script per sottomettere un job parallelo con OpenMP

#!/bin/sh

# Reindirizzo output (opzionale)
#$ -o bench.out

# Reindirizzo standard error (opzionale)
#$ -e bench.err

# Invio notifica start/stop/fail (opzionale)
# 1) indirizzo e-mail del destinatario
#$ -M nomeutente@caspur.it
# 2) quando spedire l'e-mail
# b = spedire messaggio all'inizio del run
# e = spedire messaggio alla fine del run
#$ -m be

# Processori richiesti
# sm = shared memory environment
# mp = message passing environment
#$ -pe sm 14

#--------------------------------------------
# Settaggio eventuali variabili d'ambiente
KMP_STACKSIZE = 32m
export KMP_STACKSIZE
OMP_NUM_THREADS = 14
export OMP_NUM_THREADS
#--------------------------------------------

Script per sottomettere un job parallelo con POE (SOLO cella sp3)

#!/bin/csh

# Reindirizzo standard output (opzionale)
#$ -o bench.out

# Reindirizzo standard error (opzionale)
#$ -e bench.err

# Invio notifica start/stop/fail (opzionale)
# 1) indirizzo e-mail del destinatario
#$ -M nomeutente@caspur.it
# 2) quando spedire l'e-mail
# b = spedire messaggio all'inizio del run
# e = spedire messaggio alla fine del run
#$ -m be

# Ambiente parallelo
# sm = shared memory environment
# mp = message passing environment
#$ -pe mp 32

# Variabili di ambiente per POE (necessarie)
setenv MP_PROCS $NSLOTS
# La variabile MP_EUILIB seleziona la modalita' di
# utilizzo dello switch:
# ip = IP mode
# us = US mode (default)
#$ -v MP_PROCS,MP_EUILIB=us,MP_RESD=yes,MP_SHARED_MEMORY=yes

/usr/bin/poe $PWD/mia_applicazione -hfile $TMPDIR/hostfile
#--------------------------------------------------------


ATTENZIONE !!

È possibile che la sottomissione di job MPI sulla cella sp3 provochi la comparsa, nel file di output, di uno o più messaggi di questo tipo:
    ERROR: 0031-123 Retrying allocation .... press control-C to terminate
Il messaggio è generato dal LoadLeveler, il sistema di gestione delle risorse della macchina SP3, e indica semplicemente che il tentativo di allocazione di una risorsa è fallito e che si sta effettuando un ulteriore tentativo, dunque può essere ignorato.
indietro