Programmi paralleli con MPI


Utilizzando un cluster beowulf e' possibile far girare parti dello stesso programma  in modo concorrente sulle diverse CPU. Ma per ottenere questo risultato e' necessario "rendere parallelo" il proprio codice utilizzando librerie che permettono di lanciare e mantenere la sincronizzazione tra le diverse parti del programma che girano sui differenti sistemi.

La libreria MPI  (Message Passing Interface) e' uno degli strumenti piu' utilizzati per rendere paralleli programmi FORTRAN o C che girano su architetture omogenee .  Sulla libreria MPI esiste una vasta documentazione .  Nel caso particolare del cluster MACH-16, basato su LAM/MPI  e' il caso di utilizzare anche la documentazione specifica reperibile al sito http://www.lam-mpi.org/mpi/.

 

Esempi di base di  programmi FORTRAN resi paralleli con le librerie MPI sono disponibili nei due directory :

/soft-bw1/esempi-for1     &     /soft-bw1/esempi-for2

Sostanzualmente sono state inserite delle chiamate  MPI_INIT (...)   MPI_COMM_SIZE( .., ...,  ...) che  permettono la comunicazione tra  i sottoprocessi che girano nei differenti sistemi .

Quindi  i programmi devono  essere compilati  con il comando

mpif77                                            (stessa sintassi di f77)


E quindi lanciati con il comando

                               mpirun  n0-5 nome_task                     ( man )

dove n0-5  sta' ad indicare che si vogliono usare le cpu  da 0 a 5.  Sul beowulf  "MACH-12" si potrebbe usare il seguente semplice esempio di un integrale calcolato nei differenti intervalli sulle diverse macchine :  

mpirun n0-3  /soft/bw1/esempi-for1/example1_1

[ Con il cluster e' stato messo in evidenza un grosso limite del file system di rete "NFS" che ha prestazioni decisamente scadenti quando deve garantire la sincronizzazione dei nodi che accedono agli stessi file in lettura e scrittura.  Per /data-bw1 e' stato quindi utilizzato il nuovo file system di rete "Lustre " ( www.lustre.org )  Si consiglia di salvare spesso i dati contenuti in questa directory ] 

I file che vengono modificati in applicazioni parallele devono risiedere in directory del file system  /data-bw1


Aggiornato il 30/08/07 da M.Nanni