In questa sezione esamineremo le tecniche usate da MPICH-G2 per mascherare l'eterogeneità delle risorse coinvolte durante la fase di allocazione e management dei processi.
Come si può vedere dalla figura riportata sopra MPICH-G2 usa vari servizi del GlobusToolkit per eseguire le complesse oprerazioni necessarie all'esecuzione dei programmi MPI in ambiente Grid, come l'autenticazione, l'interfacciamento con diversi job-manager, la comunicazione tra processi, redirezione dell'output, creazione e controllo processi. Vediamo tutti i passaggi più nel dettaglio.
1) Per prima cosa è necessario che l'utente ottenga un certificato-proxy ,che gli permetterà di essere autenticato sui vari calcolatori, con il comando grid-proxy-init. Questo passaggio passa anche sotto il nome si single-sign-on.
2) Una volta autenticato l'utente può lanciare l'esecuzione del programma MPI utilizzando il comando mpirun. L'implementazione di questo comando in MPICH-G2 utilizza il Resource Specification Language (RSL) per descrivere il job da allocare. In sostanza può scrivere (o far scrivere, vedi Usare MPICH-G2) uno script RSL che identifica le risorse a specifica le caratteristiche richieste. Sulla base di queste informazioni MPICH-G2 fa ricorso al co-allocator di GlobusToolkit, il Dynamicaly-Updated Request Online Coallocator (DUROC), per avviare l'allocazione e l'esecuzione contemporanea e coordinata dei processi sui vari computer convolti.
3) Il DUROC utilizza le API del protocollo Grid Resource Allocation and Management (GRAM) per inizzializzare e successivamente gestire sui vari computer un set di sub-job, cioè di "sottoparti" dell'intero programma MPI generalmente costituiti da insiemi di processi. Per ognuna di queste sottoparti DUROC genera delle richieste per GRAM che, una volta autenticato l'utente, crea per esso delle credenziali locali temporanee e interagisce con gli scheduler locali per avviare la computazione.
4) A questo punto, se è stato richiesto nel file RSL, GRAM utilizzerà il Global Acces to Secondary Storage (GASS) per rendere disponibile ai processi gli eseguibili dalle locazioni remote in cui essi si trovano, indicate da indirizzi URLs. Inoltre GASS si fa carico della redirezione dello stantard output e dello stantard error verso il terminale utente.
5) Una volta che l'esecuzione è iniziata MPICH-G2 seleziona il più efficiente metodo di comunicazione tra una coppia di processi in base alla Topoligia. Le scelte possibili sono due : tramite TCP/IP utilizzando i servizi Globus IO; oppure tramite una eventuale implementazione proprietaria di MPI fornita con la macchina (vendor-MPI), ad esempio una IBM-MPI fornito assieme ad un sistema IBM SP.
DUROC e GASS interagiscono per controllare e gestire l'esecuzione dell'applicazione. In particolare ogni server GRAM prima di avviare effettivamente l'esecuzione attende un segnale di partenza da DUROC. Infatti uno dei compiti di DUROC è quello di coordinare l'inizio dell'esecuzione dei processi. Questo viene ottenuto attraverso un sistema a barriara : una volta iniziata l'esecuzione la prima cosa che eseguiranno i processi MPI è la funzione MPI_Init, che li terrà bloccati fino a quando anche tutti gli altri processi del programma non saranno arrivati allo stesso punto. In pratica i GRAM comunicano l'avvenuto avvio dei loro processi e DUROC restituirà un segnale di sblocco solo dopo che anche tutti gli altri GRAM avranno comunicato la stessa cosa.
Vediamo adesso come MPICH-G2 utilizza le informazioni contenute nello script RLS per definite la Topologia.