[Yt-dev] mpi4py on an altix

John Wise jwise at astro.princeton.edu
Sun Nov 8 17:39:45 PST 2009


Hi Matt,

> What's ldd /home/astro/jwise/local/lib/python2.6/site-packages/ 
> mpi4py/MPI.so
> report?  And can you try running with the python2.6-mpi executable,
> see if that helps?
>>

Ah, ldd was what I was thinking about!  I did some more digging, and  
ldd showed that MPI.so was correctly linked to /usr/lib/libmpi.so.  I  
found out what's going on.

I did a "nm -o /usr/lib/libmpi.o", and MPI_comm_get_name wasn't in  
libmpi.so.

SGI's libmpi (Propack 5, I think ... based on kernel 2.6.5) is still  
an MPI-1 implementation.  The current svn version of mpi4py has config  
headers in the src/config, and the sgimpi.h is probably set up for a  
newer version.

So I had to modify it to include the missing routines from SGI's MPI.   
This included

MPI_Comm_get_name
MPI_Comm_set_name
MPI_MAX_OBJECT_NAME
MPI_MAX_PORT_NAME
MPI_Open_port
MPI_Type_get_name
MPI_Win_get_name
MPI_Close_port
(plus some more that I may have forgotten)

I discovered these by including the "#define PyMPI_MISSING_XXX 1" that  
was causing the ImportError, recompile, and try importing mpi4py.MPI  
again.  If another ImportError occurred, repeat this.  And repeat  
until it imports correctly.

Once I accounted for all of the missing routines, I ran into the same  
error you described in your mpi4py posts, where it seg. faults in  
MPI_Finalized().  So using the python2.6-mpi executable completed the  
solution.

I'm not sure if will help anyone else, but I wanted to let people know  
about the solution!

Cheers,
John



More information about the yt-dev mailing list