Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Wrappers should put include path *after* user args
From: Justin Bronder (jsbronder_at_[hidden])
Date: 2010-01-19 13:39:08


On 04/12/09 16:20 -0500, Jeff Squyres wrote:
> Oy -- more specifically, we should not be putting -I/usr/include on the command line *at all* (because it's special and already included by the compiler search paths; similar for /usr/lib and /usr/lib64). We should have some special case code that looks for /usr/include and simply drops it. Let me check and see what's going on...
>

I believe this was initially added here: https://svn.open-mpi.org/trac/ompi/ticket/870

> Can you send the contents of your $prefix/share/openmpi/mpif90-wrapper-data.txt? (it is *likely* in that directory, but it could be somewhere else under prefix as well -- the mpif90-wrapper-data.txt file is the important one)
>
>
>
> On Dec 4, 2009, at 1:08 PM, Jed Brown wrote:
>
> > Open MPI is installed by the distro with headers in /usr/include
> >
> > $ mpif90 -showme:compile -I/some/special/path
> > -I/usr/include -pthread -I/usr/lib/openmpi -I/some/special/path
> >
> > Here's why it's a problem:
> >
> > HDF5 is also installed in /usr with modules at /usr/include/h5*.mod. A
> > new HDF5 cannot be compiled using the wrappers because it will always
> > resolve the USE statements to /usr/include which is binary-incompatible
> > with the the new version (at a minimum, they "fixed" the size of an
> > argument to H5Lget_info_f between 1.8.3 and 1.8.4).
> >
> > To build the library, the current choices are
> >
> > (a) get rid of the system copy before building
> > (b) not use mpif90 wrapper
> >
> >
> > I just checked that MPICH2 wrappers consistently put command-line args
> > before the wrapper args.
> >
> > Jed

Any news on this? It doesn't look like it made it into the 1.4.1 release.
Also, it's not just /usr/include that is a problem, but the fact that the
wrappers are passing their paths before the user specified ones. Here's an
example using mpich2 and openmpi with non-standard install paths.

Mpich2 (Some output stripped as mpicc -compile_info prints everything):
jbronder_at_mejis ~ $ which mpicc
/usr/lib64/mpi/mpi-mpich2/usr/bin/mpicc
jbronder_at_mejis ~ $ mpicc -compile_info -I/bleh
x86_64-pc-linux-gnu-gcc -I/bleh -I/usr/lib64/mpi/mpi-mpich2/usr/include

OpenMPI:
jbronder_at_mejis ~ $ which mpicc
/usr/lib64/mpi/mpi-openmpi/usr/bin/mpicc
jbronder_at_mejis ~ $ mpicc -showme:compile -I/bleh
-I/usr/lib64/mpi/mpi-openmpi/usr/include/openmpi -pthread -I/bleh

Thanks,

-- 
Justin Bronder


  • application/pgp-signature attachment: stored