[MPI3 Fortran] [Interop-tr] [Mpi-forum] Comment on Fortran WG5 ballot N1846
Rolf Rabenseifner
rabenseifner at hlrs.de
Wed Apr 20 04:35:56 CDT 2011
Van and all Forum members,
Why not including buf into the argument list of MPI_Wait?
This was discussed already years ago:
- In the split collective routines, we did this already in the
original definition.
- MPI_Wait is part of a set of routines with
all having an array of request handles, i.e.,
a set of such invisible buffers.
For those routines, such one additional argument
would not work.
- You are right that it would work exactly for MPI_Wait and MPI_Test
and if it is wanted by the MPI Forum,
I can add two new Fortran routines
MPI_Wait_f_sync_reg(buf,rq,ierror)
MPI_Test_f_sync_reg(buf,rq,flag,ierror)
- The question is, whether this duplication is necessary,
because the problem can be solved with different methods,
e.g., having buf as a module variable.
In this case the additional overhead for producing
the dope-vector for buf is not needed,
i.e., the existing MPI_Wait is the more efficient one.
Comments from other members are highly appreciated.
Best regards
Rolf
----- Original Message -----
> From: "Van Snyder" <Van.Snyder at jpl.nasa.gov>
> To: interop-tr at j3-fortran.org
> Cc: "Jeff Squyres" <jsquyres at cisco.com>, "MPI-3 Fortran working group" <mpi3-fortran at lists.mpi-forum.org>, "Rolf
> Rabenseifner" <rabenseifner at hlrs.de>
> Sent: Tuesday, April 19, 2011 10:35:53 PM
> Subject: Re: [Interop-tr] [Mpi-forum] Comment on Fortran WG5 ballot N1846
> On Thu, 2011-04-14 at 13:03 -0700, Rolf Rabenseifner wrote:
> > With
> > CALL MPI_Irecv(buf, rq)
> > CALL MPI_Wait(rq)
> > CALL MPI_F_SYNC_REG(buf)
> > xnew=buf
> >
> >
> > The content of MPI_F_SYNC_REG is outside the scope of the
> > Fortran optimization.
> > I do not see that the compiler is allowed to move
> > "xnew=buf" before the MPI_Wait statement because
> > "MPI_F_SYNC_REG(buf)" may have modified the content of buf.
> >
> > Therefore the problem is solved.
> >
> > Correct?
> >
> > If not, please can you show a detailed code, how
> > such a compiled code could work and in xnew is at the end
> > ***not*** the value that was stored in buf by MPI_Wait.
>
> If this works, why not change the Fortran -> MPI interface for
> MPI_Wait
> to include "buf" instead of attaching the TARGET attribute to "buf"
> and
> hoping the processor will guess that implies that a pointer to "buf"
> might be hiding in "rq"? After all, the processor can see "rq" and its
> type (which might actually be TYPE(*)?), so it might (reasonably)
> conclude from its analysis that "rq" doesn't contain any pointers to
> "buf".
--
Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner at hlrs.de
High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530
University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832
Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner
Nobelstr. 19, D-70550 Stuttgart, Germany . (Office: Allmandring 30)
More information about the mpiwg-fortran
mailing list