ok, will do

Cheers,

Gilles

On Monday, February 8, 2016, Jeff Squyres (jsquyres) <jsquy...@cisco.com>
wrote:

> I like your suggestion better -- if we can somehow report during the
> compile/link that the reason for the error is because Open MPI was not
> compiled with Fortran support, that would definitely be preferable.
>
> FWIW: my suggestion was because I wanted to convey the *reason* for the
> error (i.e., that OMPI has no Fortran support), and a pragma-based solution
> didn't occur to me.  I didn't want to follow Gilles' suggestion of just
> removing the symbols, because that will lead to other confusion (e.g.,
> "Hey, Open MPI is not compliant because it doesn't have Fortran datatypes
> available in C!").
>
> Gilles: do you want to poke around and see if you can make any of Jeff's
> suggestions work out nicely?  (i.e., give some kind of compile/link error
> that states that Open MPI was not built with Fortran support?)
>
>
> On Feb 8, 2016, at 8:55 AM, Jeff Hammond <jeff.scie...@gmail.com
> <javascript:;>> wrote:
> >
> > Waiting until runtime to issue this error is a terrible idea, because
> then the PETSc team (among others) will disparage you for allowing a user
> to successfully build against an unusable library.  They are on-record
> numerous times in the past as to the evils of e.g. no-op symbols in MPI or
> other runtime libraries, since this means that compile- and link-based
> tests pass, even though nothing good will happen when the user employs them
> in an application.
> >
> > The right thing to do is what Gilles proposed: do not define the types
> in mpi.h so that it is impossible to compile C code with Fortran datatypes,
> if Fortran datatypes are not supported.  There are more and less effective
> ways to do this, in terms of letting the user know what is happening.  For
> example, you can just not define them, which might confuse novices who
> don't know how to read error messages (HPC users are frequent offenders).
> >
> > You could use e.g.:
> >
> > #define MPI_DOUBLE_PRECISION choke me No Fortran support when library
> was compiled!
> >
> > Unfortunately, Clang colorized output emphasizes the wrong problem here,
> and ICC doesn't even echo the message at all in its error message.  GCC
> issues the same error four times, and makes it relatively hard to miss the
> message.
> >
> > If the following GCC extension is supported, along with C99/C++11, you
> could do this:
> >
> > #define MPI_DOUBLE_PRECISION _Pragma("GCC error \"MPI was not compiled
> with Fortran support\"")
> >
> > For the _functions_ that require Fortran support, you can use e.g.
> __attribute__((error("no Fortran"))) on the function declaration, although
> neither ICC nor Clang support this, and it ends up throwing two error
> messages when compiled (only one - the right one - when only preprocessed),
> which might confuse the same folks that it is trying to help.
> >
> > Best,
> >
> > Jeff
> >
> > On Mon, Feb 8, 2016 at 5:14 AM, Jeff Squyres (jsquyres) <
> jsquy...@cisco.com <javascript:;>> wrote:
> > The issue at hand is trying to help the user figure out that they have
> an open MPI built without fortran support.
> >
> > Perhaps we should improve the error reporting at run time to display
> something about the fact that you used a fortran data type but have an OMPI
> that was compiled without fortran support.
> >
> > Sent from my phone. No type good.
> >
> > On Feb 8, 2016, at 4:00 AM, Gilles Gouaillardet <
> gilles.gouaillar...@gmail.com <javascript:;>> wrote:
> >
> >> That being said, should we remove these fortran types from include
> files and libs when ompi is configure'd without fortran support ?
> >>
> >> Cheers,
> >>
> >> Gilles
> >>
> >> Jeff Hammond <jeff.scie...@gmail.com <javascript:;>> wrote:
> >>
> >> > BTW: is there a reason you don't want to just use the C datatypes?
> The fundamental output of the index is an integer value -- casting it to a
> float of some flavor doesn't fundamentally change its value.
> >>
> >> The code in question is not mine.  I have suggested to the developers
> that they should use the correct C types.  The reason I became aware of
> this issue is that one of my colleagues compiled and ran this code on a
> system where OpenMPI was built without Fortran support and the code started
> failing with errors from MPI which were not seen on other systems.
> >>
> >>
> >> If you use an MPI library compiled without Fortran support, you should
> expect precisely nothing related to Fortran to work.  You might get more
> than this because the universe is being nice to you, but you should treat
> it as serendipity when something works, not a bug when something doesn't.
> >>
> >> Jeff
> >>
> >>
> >> --
> >> Jeff Hammond
> >> jeff.scie...@gmail.com <javascript:;>
> >> http://jeffhammond.github.io/
> >> _______________________________________________
> >> users mailing list
> >> us...@open-mpi.org <javascript:;>
> >> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
> >> Link to this post:
> http://www.open-mpi.org/community/lists/users/2016/02/28459.php
> >
> > _______________________________________________
> > users mailing list
> > us...@open-mpi.org <javascript:;>
> > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
> > Link to this post:
> http://www.open-mpi.org/community/lists/users/2016/02/28460.php
> >
> >
> >
> > --
> > Jeff Hammond
> > jeff.scie...@gmail.com <javascript:;>
> > http://jeffhammond.github.io/
> > _______________________________________________
> > users mailing list
> > us...@open-mpi.org <javascript:;>
> > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
> > Link to this post:
> http://www.open-mpi.org/community/lists/users/2016/02/28461.php
>
>
> --
> Jeff Squyres
> jsquy...@cisco.com <javascript:;>
> For corporate legal information go to:
> http://www.cisco.com/web/about/doing_business/legal/cri/
>
> _______________________________________________
> users mailing list
> us...@open-mpi.org <javascript:;>
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
> Link to this post:
> http://www.open-mpi.org/community/lists/users/2016/02/28463.php
>

Reply via email to