[MPI3 Fortran] MPI_STATUS_IGNORE (and friends)

Supalov, Alexander alexander.supalov at intel.com
Wed May 26 11:41:36 CDT 2010

Thanks. Where can one find the proposed MPI F08 bindings and the prototype implementation you mentioned?

-----Original Message-----
From: mpi3-fortran-bounces at lists.mpi-forum.org [mailto:mpi3-fortran-bounces at lists.mpi-forum.org] On Behalf Of Jeff Squyres
Sent: Wednesday, May 26, 2010 6:21 PM
To: MPI-3 Fortran WG
Subject: [MPI3 Fortran] MPI_STATUS_IGNORE (and friends)

Craig and I have been working on a prototype implementation of the proposed MPI F08 bindings.  It has been tremendously helpful to keep the proposal ideas on track with what is possible, what is useful, etc.

One of the things that we would like to change from the current proposal is to remove the sentinel value constants MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE (and a few others that are similar in spirit).  MPI status structs are usually allocated and passed by the application down to an MPI function; the MPI implementation then fills up that struct.  However, the app can pass MPI_STATUS_IGNORE (or MPI_STATUSES_IGNORE in an array context) to indicate that they don't care about the status and don't want the MPI implementation to fill it (them).

Just like the C++ bindings, instead of having these constants in the F08 bindings, we propose to have overloaded functions that simply do not have a status parameter.  For example:

interface MPI_Test
  ! Note the "status" parameter here
  subroutine MPI_Test_wrapper(request, completed, status, err)
    type(MPI_Request), intent(inout) :: request
    logical,           intent(out)   :: completed
    type(MPI_Status),  intent(out)   :: status
    integer, optional, intent(out)   :: err
  end subroutine

  ! Note the LACK of "status" parameter here
  subroutine MPI_Test_ignore_wrapper(request, completed, err)
    type(MPI_Request), intent(inout) :: request
    logical,           intent(out)   :: completed
    integer, optional, intent(out)   :: err
  end subroutine
end interface

Just like C++, this seems like the "natural" way to do it in the language.  It also keeps a 1:1 mapping to the MPI language neutral bindings and is therefore not a radical departure from the MPI specification.  Indeed, the C++ bindings established a precedent for this exact case (there are 2 C++ bindings for MPI::Test, for example -- one with a status argument and one without).


Jeff Squyres
jsquyres at cisco.com
For corporate legal information go to:

mpi3-fortran mailing list
mpi3-fortran at lists.mpi-forum.org
Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen Germany
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Douglas Lusk, Peter Gleissner, Hannes Schwaderer
Registergericht: Muenchen HRB 47456 Ust.-IdNr.
VAT Registration No.: DE129385895
Citibank Frankfurt (BLZ 502 109 00) 600119052

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

More information about the mpiwg-fortran mailing list