"MPI-3.0 (and later) compliant Fortran bindings are not only a property of
the MPI library itself, but rather a property of an MPI library together
with the Fortran compiler suite for which it is compiled." (MPI 3.1 Section
17.1.7).

Of course, implementations can provide support in excess of the minimum
required by the standard, provided that support remains compliant with the
standard.

Jeff

On Mon, Feb 8, 2016 at 9:21 PM, George Bosilca <bosi...@icl.utk.edu> wrote:
>
> Sorry to spoil the fun here, but this proposal is a very bad idea. It is
mandated by the MPI standard, page 25 line 27 (v3.1), not only to provide
all predefined datatypes, but to have support for them. There are optional
datatypes, but MPI_DOUBLE_PRECISION (which is explicitly the base
predefined datatype for MPI_2DOUBLE_PRECISION) is not one of them.
>
> Now we can argue if DOUBLE PRECISION in Fortran is a double in C. As
these languages are interoperable, and there is no explicit conversion
function, it is safe to assume this is the case. Thus, is seems to me
absolutely legal to provide the MPI-required support for DOUBLE PRECISION
despite the fact that Fortran support is not enabled.
>
> Now taking a closer look at the op, I see nothing in the standard the
would require to provide the op if the corresponding language is not
supported. While it could be nice (as a convenience for the users and also
because there is no technical reason not to) to enable the loc op, on non
native datatypes, this is not mandatory. Thus, the current behavior exposed
by Open MPI is acceptable from the standard perspective.
>
>   George.
>
>
> On Mon, Feb 8, 2016 at 4:35 PM, Jeff Squyres (jsquyres) <
jsquy...@cisco.com> wrote:
>>
>> Awesome; thanks Gilles.
>>
>>
>> > On Feb 8, 2016, at 9:29 AM, Gilles Gouaillardet <
gilles.gouaillar...@gmail.com> wrote:
>> >
>> > 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>
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> 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> 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> 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
>> > >> http://jeffhammond.github.io/
>> > >> _______________________________________________
>> > >> users mailing list
>> > >> us...@open-mpi.org
>> > >> 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
>> > > 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
>> > > http://jeffhammond.github.io/
>> > > _______________________________________________
>> > > users mailing list
>> > > us...@open-mpi.org
>> > > 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
>> > For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/
>> >
>> > _______________________________________________
>> > users mailing list
>> > us...@open-mpi.org
>> > 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
>> > _______________________________________________
>> > users mailing list
>> > us...@open-mpi.org
>> > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
>> > Link to this post:
http://www.open-mpi.org/community/lists/users/2016/02/28465.php
>>
>>
>> --
>> Jeff Squyres
>> jsquy...@cisco.com
>> For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/
>>
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
>> Link to this post:
http://www.open-mpi.org/community/lists/users/2016/02/28466.php
>
>
>
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
> Link to this post:
http://www.open-mpi.org/community/lists/users/2016/02/28469.php




--
Jeff Hammond
jeff.scie...@gmail.com
http://jeffhammond.github.io/

Reply via email to