MPI defines four special types of integers in C: MPI_Aint, MPI_Offset, MPI_Count, and MPI_Fint. The properties of MPI_Aint correspond to the C standard integer type intptr_t. Thus, MPI_Aint should be defined as a C typedef to intptr_t. In a compilation environment where intptr_t is not available, a type with the same properties must be used.
Essentially all filesystems relevant to MPI use 64-bit addressing so the standard ABI defines MPI_Offset to be the C standard integer type int64_t (or an equivalent type). On systems where intptr_t is 32 or 64 bits, MPI_Count is the C standard integer type int64_t (or an equivalent type).
MPI_Fint is discussed in Section The Fortran Application Binary Interface.
Rationale.
Fixing the size of MPI_Offset ensures the standard ABI
depends only on the address size and thus is unambiguous
on each platform.
The need for MPI to support offsets greater than 64 bits
implies the possibility of a single MPI file of more
than 8 exabytes in size, which is not currently practical.The use of 64-bit MPI offsets does not prevent MPI
from supporting 128-bit filesystems.
( End of rationale.)