[MPI3 Fortran] Proposing changes to Fortran 2008
Craig Rasmussen
crasmussen at lanl.gov
Tue Mar 18 09:08:33 CDT 2008
On Mar 14, 2008, at 6:29 PM, Jeff Squyres wrote:
> On Mar 12, 2008, at 5:24 PM, Aleksandar Donev wrote:
>
>> For non-blocking sends, a pointer to the actual must be retained.
>> This
>> requires matching TARGET attributes on *both* the dummy and actual:
>>
>> interface
>> subroutine mpi_Isend(buffer...) bind(c)
>> type(c_void), dimension(*), target :: buffer
>> end subroutine
>> end interface
>>
>> integer(c_int), target :: x(100)
>>
>> call mpi_Isend(x...)
>>
>> For the call to actually work as expected, the actual must be
>> contiguous
>> (this is a new defined term in Fortran 2008 with some intrinsics to
>> test
>> is an array is contiguous) and have the target attribute, and must
>> be of
>> interoperable type.
>
>
> I admit that I know so little about Fortran that much of your mail
> went over my head. :-( But a question about the above: is it
> possible to allow non-contiguous datatypes to be passed through
> without having the compiler copy them into contiguous areas? It may
> be possible, for example, for the MPI datatype to accurately describe
> the non-contiguousness of the data, and MPI is well-equipped to handle
> such situations.
I'm not sure I understand MPI datatypes to respond coherently, but
that's never stopped me before :-)
I think you really want contiguous"ness", otherwise you wouldn't know
how to stride through the data with constant offsets. Right?
Cheers,
Craig
More information about the mpiwg-fortran
mailing list