2010-10-28 10 views
6

Sto scrivendo un programma parallelo usando Open MPI. Sono in esecuzione Snow Leopard 10.6.4 e ho installato Open MPI tramite il gestore pacchetti homebrew.Perché tutti i miei processi Open MPI hanno il grado 0?

Quando eseguo il mio programma utilizzando mpirun -np 8 ./test, ogni processo segnala che ha il grado 0 e ritiene che il numero totale di processi sia 1 e 8 righe di process rank: 0, total processes: 1 vengano sputate alla console.

io so che non è un problema di codice, dal momento che lo stesso codice esatto sarà compilato ed eseguito come previsto su alcune macchine Ubuntu in laboratorio informatico del mio college. Ho controllato il bug tracker di homebrew e nessuno ha segnalato un problema con il pacchetto Open MPI. Sono in perdita.

+0

Questo succede se si costruisce da solo dalla sorgente, o si utilizza OS X (Snow Leopard) fornito open-mpi? –

+0

La disinstallazione di open-mpi di homebrew ha causato il funzionamento di open-mpi di OS X. Hmm. – aperiodic

+4

Questo è quasi sempre il risultato di compilazione con una distribuzione MPI e (accidentalmente o meno) in esecuzione con l'mpirun di un altro. Assicurati che tutti i percorsi e i percorsi di ricerca di librerie dinamiche abbiano solo una distribuzione al loro interno. –

risposta

4

Controllare quali mpirun si invoca. Il mpirun che viene eseguito sta lanciando 8 istanze indipendenti del binario. Quindi ogni istanza è un'applicazione MPI con dimensione dell'universo 1 e grado 0.

Inoltre, a meno che non stiate progettando di eseguire il codice finale su un cluster di finestre OS X, consiglio vivamente l'installazione di una versione Linux in una VM , come virtualbox, per testare & sviluppare questi codici.

1

ho avuto lo stesso problema con openmpi in C su Linux. Utilizzando MPIch2, il problema è stato risolto (ma ricorda di eseguire MPI_Finalize() alla fine o diventa strano.)

4

Disinstallare la precedente implementazione MPI completamente.

Nel mio caso ho installato MPICH2 prima, poi disinstallato, e cambiato in OpenMPI. Poi si è verificato lo stesso caso, tutti i gradi di processo erano 0. Quello che ho fatto per risolvere questo problema è: disinstallare completamente MPICH2 dal mio sistema (io uso Ubuntu/Debian Linux).

# apt-get remove mpich2 
# apt-get autoremove 
1

Oggi ho incontrato lo stesso problema come te. E finalmente ho trovato la soluzione.

Vedi https://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions#Q:_All_my_processes_get_rank_0

Semplicemente parlando, la risposta dice, MPI ha bisogno adatto PMI di raccontare i processi sui loro ranghi e qualcos'altro. Pertanto, è necessario utilizzare mpirun/mpiexec corrispondente per eseguire il programma MPI.

immagino che il problema è legato alla mancata corrispondenza tra compilatore programma MPI e lo strumento mpirun. Quindi prova a disinstallare tutto e installa MPICH/openMPI (assicurati di installarne solo uno).

Problemi correlati