(j3.2006) (SC22WG5.3825) [MPI3 Fortran] Please tell me I'm wrong

Aleksandar Donev donev1 at llnl.gov
Wed Dec 17 14:24:29 EST 2008


Craig,

You should read last-week's WG5 messages concerning the Interop TR 
(especially mine :-). Reinhold Bader already identified this as a 
problem. The cause of it is the *generic* interface for MPI_Recv.

If you declared the non-generic interface:

subroutine MPI_Recv(buf, count, datatype, source, tag, comm,
   status, err) real, dimension(*), intent(out)  :: buf

then you could do

 real :: message(:,:)
  call MPI_Recv(message, 2, MPI_INTEGER, 1, 1, MPI_COMM_WORLD, 
MPI_STATUS_IGNORE)

and it would work as expected. If "message" is not contiguous a copy 
in/out would occur.

There is no way to have a generic interface and use "sequence 
association" argument passing, which is what you are trying to do. That 
does indeed require help from WG5.

Best,
Aleks



More information about the J3 mailing list