On Jan 23, 2009, at 10:07 AM, N.M. Maclaren wrote:
I'm assuming what you're really referring to is the fact that there
is no currently binary compatibility between different MPI
implementations (forgive me if my assumption is wrong). ...
Good Lord, no!!!!! You don't know me, but that's NOT the sort of
thing
I would refer to.
Gotcha.
FWIW, ABI is not necessarily a bad thing; it has its benefits and
drawbacks (and enablers and limitations). Some people want it and
some people don't (most don't care, I think). We'll see where that
effort goes in the Forum and elsewhere.
The reason is that it is extremely likely to be supplied by an
incorrect
program (e.g. by passing an uninitialised integer that should have
been
set to MPI_COMM_WORLD). When such a program is ported elsewhere (or
even
when a new version of a compile moves code around), a program that has
been 'working' for ages breaks.
I could give you some amusing stories of the contents of location
zero,
and how bitterly the owners of one system regretted having architected
that page zero was a page of zeroes, a decade down the line :-)
Ah -- I actually thought that *wouldn't* be much of a problem for
Fortran since the array indexing started at 1.
OMPI's Fortran MPI handles are literally indexes into a densely-packed
array in C, so we do start with 0 and go upwards. Not much we can do
about that at this point. Well, to be truthful, we *could* change
that -- say by adding some arbitrary value to every Fortran integer
(e.g., make them negative, or add 20, or whatever). But that would
end up touching quite a bit of code in OMPI.
FWIW, the F03 bindings for MPI may allow address-sized integers to be
handles in Fortran. In this case, MPI handles will likely take on
exactly the same value that they are in C. In OMPI's case, that's a C
pointer, so the F03 value for MPI_COMM_WORLD will be some very large
non-zero integer value. (standard disclaimers about future features/
functionality -- time will tell if this stuff plays out as expected)
I see your point about accidental 0's, but I think I'd prefer that the
F03 bindings solve this particular issue.
--
Jeff Squyres
Cisco Systems