A few points to add to this discussion...
1. In the new (proposed) MPI-3 Fortran bindings (i.e., the "use mpi_f08" module), array subsections will be handled properly by MPI. However, we'll have to wait for the Fortran compilers to support F08 features first (i.e., both the MPI Forum and the Fortran standards body collaborated to make this work).
2. I highly suggest that you read the section in MPI-2.2 chapter 10 about Fortran. It talks about what you can and cannot expect to work with advanced Fortran usage. Here's a pointer to the beginning of the MPI-2.2 doc's Fortran section:
3. It is true (to my understanding) that many Fortran compilers will create a copy of non-contiguous array subsections when calling a subroutine. There are problems, however, if you do so with non-blocking MPI routines (e.g., calling MPI_ISEND with an array subsection, which the compiler implements via a temporary copy). There can also be problems if the compiler makes a contiguous copy and you used a custom datatype that is *not* contiguous (i.e., it reflects the size/shape of the original, non-contiguous data -- it does not reflect the now-contiguous copy that the compiler used).
On Dec 15, 2011, at 3:28 AM, Patrick Begou wrote:
> Thanks all for your converging point of view about my problem.
> Portability is also an important point for this code so there is only one solution: using user defined data type.
> In my mind, this was more for C or C++ code without the fortran subarray behavior but I was in error.
> The problem is a little bit more complicated as the real code is a 3D application but I think it's not so complicated to implement this strategy.
> Now I'm convinced that user defined data type is also an important MPI feature in Fortran.
> | Equipe M.O.S.T. | http://most.hmg.inpg.fr |
> | Patrick BEGOU | ------------ |
> | LEGI | mailto:Patrick.Begou_at_[hidden] |
> | BP 53 X | Tel 04 76 82 51 35 |
> | 38041 GRENOBLE CEDEX | Fax 04 76 82 52 71 |
> users mailing list
For corporate legal information go to: