[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?


More information about the mpiwg-fortran mailing list