[MPI3 Fortran] Argument data sizes
Lionel, Steve
steve.lionel at intel.com
Thu Sep 18 10:51:49 CDT 2008
Bill Long wrote:
> >> 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.
>
> Actually, this is what I'm talking about. In particular, the size of
a
> single array, which in a modern machine can easily be larger that 4
> billion elements. The limits on array sizes and buffer sizes are
> directly tied to the hardware addressing limitations of the system.
> The
> idea that counts should be limited to 32 bits is an archaic remnant
> from
> the era when machine addresses were 32 bits.
While it is true that "essentially all modern processors" are *capable*
of using 64-bit addressing, the vast majority of them today do not *use*
64-bit addressing. For the x86 world, you can have a system based on a
64-bit capable processor but if it is running a 32-bit OS then it is
effectively a 32-bit processor.
I do agree that the MPI bindings on 64-bit systems (processor and OS)
should use 64-bit addresses and lengths/counts. In Fortran terms that
means C_INTPTR_T - assuming MPI on those platforms use such lengths.
Note also that Windows and Linux disagree on the ILP model for x64, so
this should not be cast in terms of int and long.
Steve Lionel
Developer Products Division
Intel Corporation
Nashua, NH
More information about the mpiwg-fortran
mailing list