With MPI3.0 neighborhood collective communications were introduced.
And in 2 of them (MPI_NEIGHBOR_ALLTOALLW
and MPI_INEIGHBOR_ALLTOALLW
) displacements (sdispls
and rdispls
) are arrays of const MPI_Aint
. Contrariwise of how the same, but collective, funcions (MPI_ALLTOALLW
and MPI_ALLTOALLW
) are defined -arrays of const int
.
Also considering what the MPI Standard v3.0 says about MPI_Aint (page 16):
2.5.6 Addresses
Some MPI procedures use address arguments that represent an absolute address in the calling program. The datatype of such an argument is MPI_Aint in C and INTEGER (KIND=MPI_ADDRESS_KIND) in Fortran. These types must have the same width and encode address values in the same manner such that address values in one language may be passed directly to another language without conversion. There is the MPI constant MPI_BOTTOM to indicate the start of the address range.
I still don't get the point and, if exist, the difference (in addition that MPI_Aint
can't be negative) between int
and MPI_Aint
!