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: Jeff Squyres (jsquyres_at_[hidden])
Date: 2010-01-28 09:04:03


Sorry guys -- this one slipped off the radar. You're right that it didn't make it into v1.4.1.

Short version
-------------

I looked into this yesterday and chatted with some other OMPI developers about it. We agree; we can move the user options up in the command line creation. I'll file a ticket for this for 1.4.2.

Longer version
--------------

I just checked into this (thanks for the reminder about Fortran compilers; ugh!). I grok the problem explified by HDF5.

Here's a little background -- Open MPI's wrappers build the command line something like this:

- start with a blank argv
- add the compiler
- add OMPI's CPP flags
- add OMPI's CFLAGS / CXXFLAGS / FFLAGS / FCFLAGS (depending on the language)
- add all the user args
- add OMPI's LDFLAGS
- add OMPI's LIBS

(there's some conditionals in there, of course, but let's consider the simple case where everything is added)

I talked this over with Brian Barrett; we initially constructed the command line this way because we through there would be ramifications of the user command line overriding some of OMPI's CPP flags (e.g., -D_REENTRANT). However, some testing yesterday, and a bunch of "well, would this cause a problem?"s, and we convinced ourselves that you're right.

Like I mentioned above, I'll file a ticket about this (and CC you guys) and ensure that it gets into 1.4.2.

Thanks for your persistence; please feel free to bump us if we neglect to reply to stuff (despite best intentions, sometimes issues just fall on the floor -- but they can be picked up!). Also note that we now allow random people to get accounts on our Trac system; you can file tickets, add comments, add yourself to the CC to see when tickets are updated, etc.

On Jan 19, 2010, at 1:39 PM, Justin Bronder wrote:

> 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
>
> <ATT3130120.dat>_______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users

-- 
Jeff Squyres
jsquyres_at_[hidden]