[MPI3 Fortran] Agenda for MPI3 Fortran Working group next week
Iain Bason
Iain.Bason at Sun.COM
Thu Jun 4 10:47:33 CDT 2009
On Jun 4, 2009, at 11:31 AM, Jeff Squyres wrote:
> On Jun 3, 2009, at 10:37 AM, Supalov, Alexander wrote:
>
>> One of those virtues was an essential ABI compatibility by design
>> within the Fortran interface of any particular MPI. As soon as
>> anything but a pointer to the object internals creeps into the
>> handle, this virtue will be gone.
>>
>
> Forgive me, but bringing ABI into this discussion is misleading at
> best. :-)
>
> There is no ABI between fortran implementations without specific
> intent from the implementor. For example, Open MPI and MPICH2 do
> not have any Fortran ABI compatibility. One simple/obvious reason
> for this is that the integer constant values are different between
> the two. So yes, INTEGER handles are still the same size and type
> representation, but they have entirely different values between Open
> MPI and MPICH2 (and between MPICH1 and MPICH2!) such that you can't
> compile a Fortran MPI application with one MPI implementation,
> change your LD_LIBRARY_PATH, and then seamlessly run with a
> different MPI implementation.
>
> There are other reasons why this won't work that aren't worth
> discussing (unless someone cares); my point in this mail is that
> making a statement implying that integers better allow ABI than
> other data structures/types/whatever is misleading. If MPI
> implementation A wants to be Fortran ABI compatible with MPI
> implementation B, they can be: A will just have to use the same
> handle data type/structure/whatever *and values* as B (and follow
> other conventions from B issues not discussed here).
>
> In short: All MPI's use the same INTEGER handle type today because
> they have to, but that does *not* make them ABI compatible.
I think Alexander's point is that it is desirable for a particular
implementation to maintain backwards binary compatibility with
previous versions of that implementation. If some implementation
defined a communicator as a derived type that contained all the
internal state the library needs, then that implementation would be
unable to change that derived type without breaking backwards
compatibility.
However, I think implementors are smart enough to realize that, and to
define a communicator as a pointer to some opaque type.
Nick seems to want them to be more than a pointer to an opaque type,
but I'm not sure exactly what he wants, nor why he wants it.
Iain
More information about the mpiwg-fortran
mailing list