Next: Misure con MPICH e
Up: Comunicazioni nel Cluster
Previous: Utilizzo del programa
Indice
Per poter misurare le prestazioni delle routines di comunicazione del cluster sono stati implementati dei programmi MPI che realizzano delle comunicazioni punto a punto tra un numero variabile di coppie di nodi. I trasferimenti di dati tra i due nodi sono realizzati con due metodi. Un metodo si basa su una semplice comunicazione monodirezionale tra il trasmettitore e il ricevente in modo da poter sfruttare totalmente la banda passante. Un l'altro metodo consiste in una comunicazione bidirezionale tra due nodi secondo la procedura in cui l'host trasmittente manda un certo quantitativo di dati al ricevente e successivamente l'host ricevente rinvia al trasmettitore gli stessi dati. Al programma di test vengono passati come argomenti il quantitativo di dati da scambiare e il numero di volte che questi dati devono essere scambiati, ovvero quante volte devono essere ripetute le routines di send e receive. Per brevitá, da qui in avanti faremo riferimento alla comunicazione monodirezionale con il temine `'ping'' e alla comunicazione bidirezionale con il termine ``ping-pong''.
Nello schema
é rappresentata una comunicazione di tipo ping, ovvero in cui non vi é la ritrasmisione del ricevente verso il trasmettitore.
Figura:
Schema di una comunicazione di tipo monodirezionale.
|
Nello schema
vengono rappresentate le azioni che il trasmettente e il ricevente fanno in modo parallelo.
Figura:
Schema di una comunicazione di tipo ``ping-pong''.
|
Come si puó vedere nello schema
e
, come prima cosa viene invocata una barriera; questa sincronizza i due processi in modo che l'istruzione successiva inizi approssimativamente nello stesso instante. Si puó inoltre notare che le procedure di trasmissione e di ricezione non avvengono in modo perfettamente sincrono perché bisogna tenere presenti le latenze di comunicazioni della rete. Le procedure di ricezione e trasmissione dei due processi sono state inserite dentro un loop per poter creare una forma di sincronizzazione tra i due processi.
Per poter ricavare i tempi di trasferimento sono state inserire due routines di misura di tempo all'interno del codice: una immediatamente successiva alla barriera MPI, in modo da tener traccia del momento in cui cominciano i trasferimenti e l'altra alla fine del loop dei vari trasferimenti. Fatto questo venie calcolato il valore della banda passante nel senguente modo:
Al numeratore viene calcolata la dimensione totale dei dati trasferiti, viene moltiplicata per N, dove N viene diferenziato a secondo del tipo trasferimen to. Per il trasferimento di tipo ping N viene fissato ad 1, mentre per la comunicazione di tipo ping-pong N é uguale a 2, questo perché ad ogni iterazione del loop avvengono due trasferimenti, uno dal primo processo verso il secondo e l'atro per il ritorno dei dati dal secondo processo al primo. Ció a cui siamo interessati é di misurare le performances della banda di comunicazione dei due processi al variare delle dimensioni del pacchetto trasferito. Questa informazione é infatti fondamentale per poter stimare le prestazioni globali di un programma applicativo completo con una ricca struttura di comunicazione.
Next: Misure con MPICH e
Up: Comunicazioni nel Cluster
Previous: Utilizzo del programa
Indice
Mario Cavicchi
2004-07-22