Communication Management 

Back to   Contents

Previous : Topologia    Next : Installazione     Up to : Cos'è MPICH-G2

 

Vediamo alcune caratteristiche dei processi trasmittivi implementati da MPICH-G2.

Utilizzo del vendor-MPI per lo scambio di messaggi interno ad un sistema . Anche se questa funzionalità non è stato possibile testarla, in quanto non disponevamo di una installazione di GlobusToolkit adeguata, abbiamo comunque pensato introdurla brevemente come esempio interessante del modo in cui MPICH-G2 estende l'ambiente locale di esecuzione dei programmi MPI ad un ambiente Grid. In pratica MPICH-G2, prima di effettuare una trasmissione tra due processi, stabilisce quale sia il loro livello di comunicazione minimo. Se due processi si trovano sulla stessa macchina dotata di un proprio MPI, MPICH-G2 non fa altro che mappare la particolare funzione di trasmissione (MPI_Send, MPI_Recv,ecc) su quella del vMPI. Questo permette di ottenere prestazioni vicine, se non identiche, a quelle di una implementazione non Grid-enabled quando si eseguono programmi in locale, lasciando aperta la possibilità di accedere a risorse remote tramite il Grid. 

Parziale ottimizzazione delle funzioni di trasmissione con messaggi di piccole dimensioni. La più recente release di MPICH-G2 è attualmente fornita assieme al pacchetto MPICH 1.2.5.1. Mentre MPICH è ad una release matura, MPICH-G2 non è ancora stato del tutto ottimizzato. Infatti risulta dalla documentazione che le funzioni di trasmissione siano state ottimizzate soprattutto per messaggi di grandi dimensioni (superiori ai 20k), mentre sia necessario ancora del lavoro per i messaggi piccoli. Per esempio MPICH-G2 utilizza due vettori separati per header e dati, che porta quasi a raddoppiare l'overhead di spedizioni per piccoli messaggi. Questo è stato effettivamente riscontrato nelle prove (I risultati , Conclusioni).

 Ciò nonostante risulta che siano già state inserite alcune particolari ottimizzazioni, non presenti in MPICH, per la funzione di spedizione dei messaggi di tipo MPI_Int e MPI_Float. In particolare risulta che adesso MPICH-G2 per effettuare una spedizione utilizzi direttamente il buffer utente, senza creare un buffer di appoggio appositamente per la funzione send (che realizza effettivamente la spedizione). Come vedremo questo permette ad MPICH-G2 di superare MPICH in alcuni test. Notare che questa ottimizzazione non è presente per funzioni di ricezione (MPI_Recv, MPI_Irecv, ecc).

Comunicazioni collettive basate sulla topologia. Le funzioni di trasmissione collettive in MPICH sono implementate sulla base dell'assunzione che tutti i processi siano equidistanti. Questo ovviamente non è più valido in ambiente Grid, dove le distanze tra i processi possono passare da intra-macchina a geografiche. MPICH-G2 è in grado, come abbiamo visto, di ricavare informazioni sulla topologia del sistema dagli script RSL e di effettuare le comunicazioni di conseguenza. In pratica se un processo vuole mandare un messaggio a tutti per prima cosa raggruppa i processi in base al network level attraverso il quale comunicano, dopo di che manda un messaggio a tutti gruppi con una sorta di broadcast tra gruppi di processi. Internamente poi ogni gruppo realizzerà la trasmissione in broadcast attraverso il proprio livello di comunicazione. Questa tecnica dovrebbe permettere di diminuire la distanza in termini di prestazioni tra comunicazioni collettive in area locale e geografica. (vedi I risultati , Conclusioni).


Previous : Topologia    Next : Installazione  Up to : Cos'è MPICH-G2

Back to Contents