2010-10-28 14 views
6

Estoy escribiendo un programa paralelo usando Open MPI. Estoy ejecutando Snow Leopard 10.6.4, e instalé Open MPI a través del administrador de paquetes homebrew.¿Por qué todos mis procesos MPI abiertos tienen rango 0?

Cuando ejecuto mi programa usando mpirun -np 8 ./test, cada proceso informa que tiene rango 0, y cree que el número total de procesos para ser 1, y 8 líneas de process rank: 0, total processes: 1 se escupió a la consola.

Sé que no es un problema de código, ya que el mismo código se compilará y ejecutará como se esperaba en algunas máquinas Ubuntu en el laboratorio de computación de mi universidad. Revisé el rastreador de errores de homebrew y nadie informó un problema con el paquete Open MPI. Estoy perdido

+0

¿Esto sucede si compila usted mismo desde la fuente, o utiliza el OS X (Snow Leopard) proporcionado open-mpi? –

+0

La desinstalación de open-mpi de homebrew causó que funcione el mpi abierto provisto por OS X. Hmm. – aperiodic

+4

Esto es casi siempre el resultado de compilar con una distribución MPI y (accidentalmente o no) ejecutarlo con el mpirun de otro. Asegúrese de que todas las rutas de acceso de búsqueda dinámicas y de ruta tengan solo una distribución en ellas. –

Respuesta

4

Compruebe a qué mpirun está invocando. El mpirun que se está ejecutando está lanzando 8 instancias independientes del binario. Entonces cada instancia es una aplicación MPI con un tamaño de universo de 1 y rango 0.

Además, a menos que planee ejecutar el código final en un clúster de cajas OS X, le recomiendo instalar una versión Linux en una VM , como virtualbox, para probar & desarrollar estos códigos.

1

He tenido el mismo problema con openMPI en C en Linux. Usando MPIch2 en lugar, el problema fue reparado (pero recuerde ejecutar MPI_Finalize() al final o se pone raro.)

4

Desinstale por completo la implementación de MPI anterior.

En mi caso, primero instalé MPICH2, luego lo desinstalé y cambié a OpenMPI. Luego ocurrió el mismo caso, el rango de todos los procesos fue 0. Lo que hice para solucionar este problema es: desinstalar completamente MPICH2 de mi sistema (yo uso Ubuntu/Debian Linux).

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

Hoy me encontré con el mismo problema que tú. Y finalmente obtuve la solución.

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

En pocas palabras, la respuesta dice, MPI necesita PMI adecuada para contar sobre los procesos de sus filas y algo más. Por lo tanto, necesitamos usar mpirun/mpiexec correspondiente para ejecutar el programa MPI.

Supongo que su problema está relacionado con la falta de correspondencia entre el compilador del programa mpi y la herramienta mpirun. Intente desinstalar todo e instale MPICH/openMPI (asegúrese de instalar solo uno de ellos).

Cuestiones relacionadas