2013-10-12 15 views
6

Sto imparando MPI. Il primo tutorial che ho seguito è hereMPI: MPICH2 Installazione e programmazione in LAN con Windows

Il codice che ho eseguito con successo su Windows 7 con MSVC il 2010 è:

#include "mpi.h" 
#include "iostream.h" 

int main(int argc,char *argv []) 
{ 
    int numtasks, rank, rc; 
    rc = MPI_Init(&argc,&argv); 
    if (rc != MPI_SUCCESS) { 
     printf ("Error starting MPI program. Terminating.\n"); 
     MPI_Abort(MPI_COMM_WORLD, rc); 
    } 
    MPI_Comm_size(MPI_COMM_WORLD,&numtasks); 
    MPI_Comm_rank(MPI_COMM_WORLD,&rank); 
    printf ("Number of tasks= %d My rank= %d\n", numtasks,rank); 
    MPI_Finalize(); 
} 

sto con successo in esecuzione di questo codice sulla mia macchina Pentium-4 (dont essere sorpresi Sono avendo ancora un Pentium-4).

Ora voglio eseguire questo codice (o qualsiasi altro codice MPI) su più macchine collegate in una LAN Ethernet. Ad esempio, ogni macchina somma da 1 a 1000 e rispedisce a un nodo principale, quindi il nodo principale aggiunge tutti quei numeri per ottenere la somma finale.

La mia domanda è come avviare la programmazione MPI in una rete? Che tutti gli strumenti/software dovrei eseguire in ogni macchina.

Apprezzerò molto se riesci a darmi un puntatore a un tutorial.

MPI Implemnetation: MPICH2 
O.S:each machine is having Windows 7, 32 bit CPU: Intel's Pentium 4 and Dual core 
Network: Ethernet 
IDE:MSVC2010 

UPDATE:

ho avuto alcuni dei miei dubbi liquidati con la risposta di Jev. Le mie ultime domande sono:

Devo installare MPICH2 in ogni macchina. Dopo aver scritto i nomi di ciascuna macchina per riga nel file CFG, Ho bisogno di fare altro o semplicemente dare il comando:

<path-to-mpich2>/bin/mpiexec.exe -machinefile hosts.cfg -n nPEs <your-executable> 

come faccio a sapere che la mia applicazione è in esecuzione su ogni macchina? Durante l'esecuzione dell'app devo eseguire alcune configurazioni speciali, ecc. Su ogni macchina?

risposta

3

Aggiungere le macchine collegate a un HostFile e passare il file al mpiexec:

<path-to-mpich2>/bin/mpiexec.exe -machinefile hosts.cfg -n nPEs <your-executable> 

Controllare le sezioni 5.4 e 9 dalla MPICH user's guide.

Aggiornamento:

Sì, è necessario installare la libreria MPI su ogni macchina. Inoltre, è necessario avviare il daemon del gestore processi su ogni macchina e abilitare il login remoto automatico (ad esempio, utilizzare ssh). Quindi esegui un test utilizzando mpdtrace o un semplice programma Hello World che stampa il nome host di ogni macchina. Se funziona e otterrai diversi nomi host stampati. Se l'installazione procede senza intoppi, non ci dovrebbe essere bisogno di configurazioni speciali (ad esempio l'impostazione del percorso corretto per la libreria).

+0

È per linux o cmd in windows? Inoltre, cos'è hostfile e hosts.cfg? c'è qualche file .cfg di esempio? – gpuguy

+0

Il comando si chiama 'mpiexec.exe' su Windows, su Linux il comando sarebbe semplicemente' mpiexec'. L'uso di SMPD (controlla la guida di installazione) dovrebbe funzionare sia su Windows che su Linux, a condizione che le versioni di mpich su macchine siano le stesse. mpiexec è solo uno script wrapper. Hai provato a connettere un secondo nodo via ethernet e puoi collegarti a distanza su di esso? – jev

+0

Sì, posso effettuare il login ma in questo modo: rete => doppio clic sull'icona del secondo PC collegato in ethernet. => Inserisci ID utente e password. E ora sono su questo secondo PC. La mia domanda era cosa è machinefile e hosts.cfg? faccio qualcosa in questi due file? – gpuguy

2

Dopo molto duro lavoro sono riuscito a contattare il team di supporto e teh risposta che ho ottenuto è:

Purtroppo la squadra MPICH non supporta più la loro versione di Windows

Tuttavia, v'è ancora qualche speranza sinistra come MS-MPI potrebbe ancora essere utilizzato:

http://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions#Q:_Why_can.27t_I_build_MPICH_on_Windows_anymore.3F

Sfortunatamente, a causa della mancanza di risorse e interessi degli sviluppatori, l'ultima versione di MPICH supportata su Windows era MPICH2 1.4.1p. È rimasto un supporto minimo per questa versione, ma è possibile trovarlo nella pagina dei download: http://www.mpich.org/downloads/ In alternativa, Microsoft mantiene una derivata di MPICH che dovrebbe fornire le funzionalità necessarie. Troverai anche un link alla pagina di download sopra. Quella versione è molto più probabile che funzioni sul tuo sistema e continuerà ad essere aggiornata in futuro. Consigliamo a tutti gli utenti di Windows di migrare all'utilizzo di MS-MPI.

+0

Passerei a Linux/Unix, usualmente MPI funziona senza problemi di configurazione (es. [OpenMPI] (http://www.open-mpi.org/)) – jev

+0

@jev Ho fatto la stessa cosa Ma [affrontando di nuovo alcuni problemi] (http://stackoverflow.com/questions/19565795/unable-to-execute-mpich2-on-multiple-machines-on-ubuntu-12-04-hydu-sock-connect) in Ubuntu 12.04 – gpuguy