[MPI3 Fortran] Proposing changes to Fortran 2008
jsquyres at cisco.com
Tue Mar 18 20:16:23 CDT 2008
On Mar 18, 2008, at 11:02 AM, Craig Rasmussen wrote:
> Yes! (sorry, couldn't resist Jeff :-)
> What you say below is as I expected. If you have an array of foo,
> then foo must be contiguous in order for you to be able to stride
> though it to get at each (noncontiguous) char c. I don't think we
> disagree here. In Fortran, you can take a slice of an array so that
> the sliced elements aren't contiguous anymore. The compiler handles
> this by modifying the array meta-data (stride information), or if
> necessary when going to C, make a copy. So in Fortran we have to be
> a little more careful what we mean by contiguous (and I'm sure I
> don't fully understand it yet).
There is absolutely no requirement for contiguousness of user buffers
in the C bindings for MPI.
Indeed, you can construct an MPI datatype (map) based off an arbitrary
reference point in memory (e.g., NULL) and use relative memory offsets
to describe the layout of the data that you want to access. Hence,
the pointer that you pass to MPI_SEND may actually have a memory map
that spans all over actual memory.
More information about the mpiwg-fortran