[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