[Mpi-forum] ABI

Jed Brown jedbrown at mcs.anl.gov
Wed Dec 4 15:23:40 CST 2013

Pavan Balaji <balaji at mcs.anl.gov> writes:
> Also, it’s not like we’ll never change ABI again.  We’ll just be more
> conservative and everyone in the “team” will change it at the same
> time.  If it’s in the MPI standard, we lose that flexibility.

It would make a _huge_ difference for distributions if MPICH and Open
MPI could have a compatible ABI.  As it is, distributions generally
choose one to be primary and have some system for maintaining a suite of
packages for the other.  This wastes a ton of maintainer time and causes
confusion for users.  New users of MPI tend to encounter it on personal
computers and small clusters rather than on leadership class machines,
so I would argue that compatibility between MPICH and Open MPI may have
a bigger reward in terms of human time and user experience than
compatibility with the various commercial vendors (which I also think is

However, the question of integer (MPICH) versus pointer (OMPI) handles
is a long-standing impasse.  Pointer handles are great for users because
they get stronger type checking and it's easier to probe around in the
debugger.  Meanwhile, integer handles can use more tag bits to optimize
certain operations.  But I wonder if we could reach a middle ground that
would at least provide a common ABI on x86 systems.

Suppose MPICH used intptr_t for handles.  I believe pointers are treated
the same as integers for all the common calling conventions.  This
leaves a question of the predefined constants, which are currently
compile-time constants of some sort (either integers or addresses of
privately-defined structs), but I'm not aware of text in the standard
that requires them to be defined in a header.  That is, can we have

  extern MPI_Datatype MPI_INT;

in the header and leave it to the library to provide the value?

Is anything else a showstopper for using intptr_t versus opaque_type* as
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mpi-forum.org/pipermail/mpi-forum/attachments/20131204/c79cf1cc/attachment-0001.pgp>

More information about the mpi-forum mailing list