Una delle principali caratteristiche di MPICH-G2 e' quella di permettere
aglli utenti di eseguire i loro programmi MPI in ambiente Grid senza
modificare il codice e attraverso comandi molto simili, e in alcuni casi
identici, a quelli utilizzati in ambiente locale.
Per prima cosa e' naturalmente necessario compilare il propro sorgente,
ad esempio myprog.c :
/usr/local/mpigh-g2/mpicc
-o myprog myprog.c
Dopo di che si può passare all'esecuzione del programma utilizzando il
comando mpirun. Ogni volta che si lancia il comando mpirun
con il device globus2 viene creato uno script in Resource Specification
Language (RSL) dove sono indicate le risorse richieste al Grid generalmente
divise in subjob, uno per ogni macchina coinvolta, dove sono specificati
il numero di processi da allocare, il nome dell'eseguibile, la directory
di lavoro ed altri parametri che poi vedremo. Esistono due modi per gestire
questo tipo di file a livello utente : il piu' semplice e' utilizzarli
in maniera implicita con il comando mpirun;
una seconda possibilita' e' quella di generare il file RSL e modificarlo manualmente nelle
parti in cui e' necessario. Vedremo entrambe queste procedure nel dettaglio.
Una operazione necessaria indipendentemente dal modo scelto e' quella di scrivere un file machines nella directory di lavoro dalla quale si lancia il programma MPI. Il file machines deve contenere un elenco degli host che vogliamo utilizzare per l'esecuzione del programma. Il nome dovrebbe anche contenere il nome del jobmanager da utilizzare, ma si puo' anche omettere lasciando quello di default. Nella nostra installazione di GlobusToolkit la gestione dei specifici jobmanager non e' ancora stata completamente implementata, quindi noi abbiamo semplicemente indicato i nomi degli host in questo modo :
"cluster.unipr.it" : n
"pp4.ce.unipr.it" : m
"pp2.ce.unipr.it" : t
In questo modo è possibile allocare n+m+t processi, non di più, che verranno disposti nell'ordine indicato, cioè n su cluster.unipr.it, m su pp4 e t su pp2. Se si desidera un'allocazione a rotazione è necessario ripetere il nome degli hosts più volte :
"cluser.unipr.it"
"pp4.ce.unipr.it"
"pp2.ce.unipr.it"
"cluser.unipr.it"
"pp4.ce.unipr.it"
.
.
.
In questo caso verranno allocati uno su cluster.unipr.it, uno su pp4, uno su pp2, quindi di nuovo un altro su cluster, un altro su pp4 e così via.
Come vedemo in seguito, quando è richiesta una particolare ed articolata allocazione dei processi, il metodo più veloce è scrivere direttamente il file RSL come si desidera.