COMPILAZIONE ED ESECUZIONE

La procedura di compilazione ed esecuzione dipende strattamente dall'elaboratore parallelo in considerazione (sistema operativo, architettura, etc.). In questo contesto farò riferimento alle procedure tipiche di un elaboratore parallelo quale un cluster di personal computer, quindi di un sistema distribuito, sui quali è installata una distribuzione Linux oltre che ad una implementazione freeware del modello MPI (Message Passing Interface) quali le librerie MPICH (reperibili al sito ftp://ftp.mcs.anl.gov/pub/mpi/).

La directory in cui normalmente si trovano i compilatori (Fortran 77 e 90, C e C++) e i comandi per lanciare in esecuzione l'eseguibile compilato deve essere inserita nella variabile $PATH della vostra account (ad esempio nel mio cluster Beowulf è la /usr/local/mpich/build/LINUX/ch_p4/bin/ , per i computer di questo laboratorio è invece la /usr/local/mpich-1.2.1/bin)

I compilatori presenti in questa directory (mpif77, mpif90, mpicc, mpiCC) non sono altro che i normali compilatori presenti sul cluster al momento dell'installazione dell'MPICH (in genere quelli della GNU, g77 e gcc) opportunamente modificati (nella fase di installazione dell'MPICH) per poter riconoscere e gestire le direttive MPI.

Se la directory precedente è stata inclusa nella variabile $PATH della account in cui si sta lavorando, il comando di compilazione (tralasciando particolari ottimizzazioni) è semplicemente il seguente:

mpif77 nomefile.f

Questo comando genera come per un elaboratore seriale l'eseguibile a.out nella stessa directory dove si è eseguita la compilazione e dove è presente il sorgente nomefile.f .
Per lanciare in esecuzione l'eseguibile il comando è il seguente

mpirun -np 4 a.out

dove:


Se ad esempio applichiamo quanto ora detto al precedente programma "Ciao Mondo" questo è il risultato che otteniamo:

 Ciao Mondo 0
 Ciao Mondo 1

Attenzione: nel laboratorio non si usano rpc mentre al loro posto si possono utilizzare ssh. Per inibire la richiesta della password (che impedirebbe un corretto funzionamento dell'MPICH) dovete generare le chiavi pubblica e privata per ssh con il comando

ssh-keygen -t rsa

questo comando genera nella directory .ssh della vostra $HOME i files id_rsa (chiave privata) ed id_rsa.pub(chiave pubblica). La chiave pubblica contenuta in id_rsa.pub deve essere inserita nel file authorized_keys presente sempre in .ssh con il comando

cat id_rsa.pub >> authorized_keys