[MPI3 Fortran] Argument data sizes
Jeff Squyres
jsquyres at cisco.com
Thu Sep 18 10:27:26 CDT 2008
On Sep 18, 2008, at 11:15 AM, Bill Long wrote:
>> Yes, I understand that, but if MPI itself doesn't accept counts
>> (and other parameter values) larger than what can be represented by
>> a C int, what does allowing an INTEGER*8 in the MPI Fortran
>> interface mean?
>
> But essentially all modern processors use 64-bit addressing. If a C
> int is 32 bits, then this restriction is a basic design flaw in MPI
> that needs to be fixed. Either that or a C int needs to be 64
> bits. (The earlier discussion about default64 switches originated
> with legacy supercomputers where, indeed, the default integer in
> Fortran AND C int were 64 bits, so there was no internal
> inconsistency.) Getting MPI to force a change on the C standard is
> probably out of scope. However, fixing the MPI spec to mandate that
> count arguments be of type int64_t, or perhaps better, intptr_t, is
> quite reasonable, and recognizes modern reality.
I think you're talking about something different.
I said that MPI's *count* arguments are C int's. I never said that
MPI's *address* specifications were C int's (indeed, in C, they're not
-- they're of type MPI_Aint, which is a type that is large enough to
hold an address-sized integer).
The *count* (and other similar parameters) is how many [typed] items
you want to send / receive / etc. Right now, MPI defines counts as
int's in C.
> Besides, I thought one of the earlier postings claimed that the MPI
> spec was language independent. In that case, discussion of C int is
> out of order. A language independent spec would refer to an integer
> type capable of representing any system address.
Per above, I think you missed that specific point.
But as to why I'm harping on C int's and not "generic integer" (for
*counts*, not *addresses*), I also mentioned in an earlier post that
the reality is that most [all?] MPI implementations are written in C.
So the vast majority of other language bindings need to be able to map
to the C bindings nicely.
Failure to design with this goal in mind may result in push back from
the MPI implementors because it may require major changes in MPI
implementations (change internal data structures, change wire
protocols, hurt backwards compatibility, etc.). I'm not saying that
mandating 8 byte integer counts (and others) is a showstopper -- I'm
saying that it will require a broader discussion with the rest of the
Forum. I also previously mentioned that this is an ongoing topic in
the Forum and is not likely to get resolved soon.
--
Jeff Squyres
Cisco Systems
More information about the mpiwg-fortran
mailing list