(j3.2006) MPI usage problems in Fortran
Bill Long
longb
Tue Mar 18 14:14:37 EDT 2008
If a dummy has TARGET, the actual is not required to have TARGET. See,
for example, [270:20-22] in f03.
Cheers,
Bill
Craig Rasmussen wrote:
> A problem was described to me at the MPI Forum meeting last week.
> Using split-phase communication (asynchronous) the user can call send
> on a buffer, do computation, then call wait before reusing the
> buffer. The sequence is:
>
>
> A = 3
> call MPI_Isend(A, ...., request, ...)
> ! do computation not involving A
> call MPI_Wait(request, ...)
>
> The problem is that the way the interfaces are currently defined, the
> compiler can't know that MPI_Isend has retained a pointer to A that
> it doesn't release until after the MPI_Wait call. So a common hack
> is to add
>
> call MPI_Get_address(A, ...)
>
> after the MPI_Wait. I assume the correct way to fix this is to add
> the target attribute to the first dummy argument in MPI_Isend. Is
> there a better way? This is especially a problem for codes using the
> implicit MPI interfaces.
>
> However, when I try the following:
>
> implicit none
> interface
> subroutine send(A)
> real, target :: A(*)
> end subroutine send
> end interface
>
> real :: buf(10)
>
> call send(buf)
>
> end program
>
> I get no error message. Is this a legal program? Shouldn't the
> target attribute be required for the actual argument? Section 5.3.17
> doesn't say.
>
> Thanks,
> Craig
>
>
>
> _______________________________________________
> J3 mailing list
> J3 at j3-fortran.org
> http://j3-fortran.org/mailman/listinfo/j3
>
--
Bill Long longb at cray.com
Fortran Technical Support & voice: 651-605-9024
Bioinformatics Software Development fax: 651-605-9142
Cray Inc., 1340 Mendota Heights Rd., Mendota Heights, MN, 55120
More information about the J3
mailing list