[MPIWG Fortran] MPI_ARECV: Fortran pointers

Jeff Squyres (jsquyres) jsquyres at cisco.com
Wed Dec 11 10:09:57 CST 2013

I have a question about Fortran pointers and a MPI Forum proposal about "allocate receive".  Here's the slides from the MPI_ARECV proposal, from the Madrid meeting:


The issue is this: there is a proposal for something like this (in C):

    MPI_Iarecv(source, tag, comm, &request);

The application then tests/waits on the request, and when the request is complete, it means that the message has been received and MPI has allocated a buffer for it (vs. the user providing the buffer).  You then make another call to get the [contiguous] buffer from the MPI implementation (again, in C):

    char *buffer;
    MPI_Status_get_buffer(status, &buffer);

When the app is done with the buffer, the app gives it back to MPI via MPI_FREE_MEM:


So my questions to the Fortran Brain Trust (FBT) are: 

1. Is this do-able in Fortran?  I think it is, but I am ignorant of Fortran pointer issues.

2. Can we make an interface in Fortran that is natural / usable by normal/average Fortran programmers?

3. I'm guessing the above two questions are in the context of the mpi_f08 module -- I don't really care about mpif.h, but I *might* care about the mpi module...?  (this has deeper implications for if/when we want to deprecate mpif.h and/or the mpi module...)

I'm at the Forum this week.  Does anyone have time to have a call to discuss this next week, perchance?  I could setup a doodle to find a time.

Jeff Squyres
jsquyres at cisco.com
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/

More information about the mpiwg-fortran mailing list