[Mpi-forum] MPI Ain't and MPI 3.1

N.M. Maclaren nmm1 at cam.ac.uk
Wed Jul 17 07:03:26 CDT 2013

On Jul 16 2013, Jim Dinan wrote:
>I apologize for the long-delayed follow-up from our last meeting on how to
>handle the MPI Aint arithmetic ticket (tt #349).  At the last meeting, we
>all agreed that this is an important fix that we would like to get out
>ASAP, but we weren't sure how to do it.  I wanted to resume that discussion
>on the mailing list to get broader feedback and help move the discussion
>along in between meetings, if we can.

This isn't about the procedure, but about the proposed solution. I think 
that it is a serious mistake, and merely compounds the problems caused by 
MPI_BOTTOM. The simplest resolution would be that the conversion functions 
would take a window argument, as well, and that the 
Aint/address/displacement were required to be associated with that window. 

    int MPI_Get_disp(const void *location, MPI_Disp *disp, MPI_Win win);
    int MPI_Aint_to_disp(MPI_Aint aint, MPI_Disp *disp, MPI_Win win);
    int MPI_Disp_to_aint(MPI_Disp disp, MPI_Aint *aint, MPI_Win win);

The point here is that even C still supports segmented and tagged memory 
architectures. Currently, they are in abeyance, but they still exist and 
they may return to the mainstream any time. The wording in the C (and even 
C++) standard is phrased the way it is specifically to allow for such 
things. Fortran, of course, has always supported them, and more.

Nick Maclaren.

More information about the mpi-forum mailing list