[MPI3 Fortran] TYPE(MPI_Status) with SEQUENCE attribute

Bill Long longb at cray.com
Thu Mar 31 17:24:27 CDT 2011


Hi Rolf,

On 3/31/11 2:31 PM, Rolf Rabenseifner wrote:
> Dear all,
>
> as discussed, I had removed the SEQUENCE attribute from form the
> new TYPE(MPI_Status) derived type within the new mpi_f08 module.
>
> I checked now with a test program whether the new status can be used
> in a user program in the same way as the old status (i.e. an INTEGER,
> DIMENSION(MPI_STATUS_SIZE) array) and detected, that the compiler
> will issue a lot of incompatibilities if the newly defined status
> does not use internally the sequence attribute.
>

The messages are valid.  However, the use of SEQUENCE seems curious.  I 
would have written the module more like this:

MODULE mpi_f08
   use,intrinsic :: iso_c_binding
   IMPLICIT NONE
   TYPE,bind(c) ::  MPI_Comm
     INTEGER(C_int)  :: MPI_VAL
   END TYPE MPI_Comm

   TYPE,bind(c) ::  MPI_Status
     INTEGER(C_int) :: MPI_SOURCE
     INTEGER(C_int) :: MPI_TAG
     INTEGER(C_int) :: MPI_ERROR
     INTEGER(C_int) :: MPI_intern_highsize
     INTEGER(C_int) :: MPI_intern_lowsize
   END TYPE MPI_Status

   INTEGER(C_int),parameter ::  MPI_STATUS_SIZE=5

END MODULE mpi_f08


The use of a bind(c) type ensures that the memory layout of the type is 
the same as for the corresponding C struct.  It would seem like this is 
the goal.  The SEQUENCE type does not necessarily have this characteristic.

Cheers,
Bill





> It is not expected that this SEQUENCE attribute has any negative
> impact in scalable applications.
>
> Therefore, I had to reinvent the SEQUENCE into the TYPE(MPI_Status).
>
> The test program and compiler output is attached.
> The NON_.... variables are declared with types where
> the SEQUENCE is missing.
> All these NON_.... variables cause errors and the abort of the compilation.
>
> Same usage patterns with MPI handle and status types internally using
> SEQUENCE do not cause any errors.
>
> Best regards
> Rolf
>

-- 
Bill Long                                           longb at cray.com
Fortran Technical Support    &                 voice: 651-605-9024
Bioinformatics Software Development            fax:   651-605-9142
Cray Inc./Cray Plaza, Suite 210/380 Jackson St./St. Paul, MN 55101





More information about the mpiwg-fortran mailing list