[MPIWG Fortran] Type of MPI_Status

Rolf Rabenseifner rabenseifner at hlrs.de
Sat Mar 15 03:33:15 CDT 2014


Junchao,

With the erratum ticket #415, your implementation
with INTEGER(C_INT) is clearly wrong,
but who cares  as long as an application programmer cannot 
write an application code that produces compilation errors 
or warnings or infos due to your wrong implementation 
of TYPE(MPI_Status).

I do not exactly now the rules about Fortran subroutine 
prototype and overloading where handing over a INTEGER rank 
or a INTEGER(C_INT) rank may cause to choose different interfaces.

Maybe that Bill Long should comment on such strange things
before you define any field within TYPE(MPI_Status) or 
any dummy argument in a routine declaration as INTEGER(C_INT) 
instead of INTEGER as defined in MPI-3.0.

Best regards
Rolf

----- Original Message -----
> From: "Junchao Zhang" <jczhang at mcs.anl.gov>
> To: "MPI-WG Fortran working group" mpi-forum.org>
> Sent: Saturday, March 15, 2014 12:11:35 AM
> Subject: Re: [MPIWG Fortran] Type of MPI_Status
> 
> 
> 
> Not sure if it is worth discussing. Even if INTEGER and C_INT are of
> different size, I think I can still use C_INT in MPI_Status.
> 
> 
> 
> TYPE, BIND(C) :: MPI_Status
> INTEGER(C_INT) :: MPI_SOURCE, MPI_TAG, MPI_ERROR
> ... ! other fields
> END TYPE MPI_Status
> 
> 
> Since MPI_Status is a derived datatype, users access it through its
> public interfaces(i.e., %MPI_SOURCE, ..., MPI_STATUS_SIZE).
> As long as MPI_STATUS_SIZE >= sizeof(MPI_STATUS)/sizeof(INTEGER), who
> cares its internals.
> 
> 
> 
> 
> 
> --Junchao Zhang
> 
> 
> On Thu, Mar 13, 2014 at 10:56 AM, Rolf Rabenseifner <
> rabenseifner at hlrs.de > wrote:
> 
> 
> Jeff is right.
> Bill's theoretical statement is also correct.
> 
> And ticket#415 is also correct because it resolves an inconsistency
> within the mpi_f08 interface.
> 
> Strange theoretical discussions are also there for
> long Fortran INTEGER may not be identical with some shorter
> INTEGER(C_int).
> As a side effect also solved by this ticket.
> 
> 
> Rolf
> 
> ----- Original Message -----
> 
> > From: "Jeff Hammond" < jeff.science at gmail.com >
> > To: "MPI-WG Fortran working group" mpi-forum.org >
> > Sent: Thursday, March 13, 2014 4:12:56 PM
> > Subject: Re: [MPIWG Fortran] Type of MPI_Status
> > 
> > MPI should test for interoperability of Fortran's default integer
> > and
> > light the machine room on fire if it is not.
> > 
> > Jeff
> > 
> > On Thu, Mar 13, 2014 at 8:58 AM, Bill Long < longb at cray.com >
> > wrote:
> > > This does raise an earlier issue that it is
> 
> 
> > > possible that Fortran’s default INTEGER is not an interoperable
> > > type, and thus the MPI_Status type should not be a BIND(C) type
> > > if
> > > it has INTEGER components. Having BIND(C) does allow you to
> > > declare a C global name MPI_STATUS_IGNORE in Fortran, which
> > > solves
> > > one problem nicely. I don’t see any advantage to having INTEGER
> > > components (as opposed to INTEGER(C_Int), for example). So this
> > > seems to represent the worse of the two options.
> > > 
> > > Cheers,
> > > Bill
> > > 
> > > 
> > > 
> > > On Mar 13, 2014, at 8:36 AM, Jeff Squyres (jsquyres)
> > > < jsquyres at cisco.com > wrote:
> > > 
> > >> Done. Good catch:
> > >> 
> > >> https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/415
> > >> 
> > >> This is a trivial ticket, but if you could make sure it's ok,
> > >> I'll
> > >> send it to the mpi-forum list so that it can get added to the
> > >> next meeting's agenda.
> > >> 
> > >> 
> > >> On Mar 13, 2014, at 1:51 AM, Rolf Rabenseifner
> > >> < rabenseifner at hlrs.de > wrote:
> > >> 
> > >>> Jeff and Junchao,
> > >>> 
> > >>> it is a missing word INTEGER in this part of the sentence
> > >>> 
> > >>> In whole MPI these three values are in Fortran INTEGER and
> > >>> nothing else
> > >>> 
> > >>> Junchao, thank you for the hint that an erratum is neede
> > >>> to prevent from such misinterpretation
> > >>> 
> > >>> Jeff, please can you file the errata ticket resulting in
> > >>> 
> > >>> ... containing three public INTEGER fields named ...
> > >>> 
> > >>> Best regards
> > >>> Rolf
> > >>> 
> > >>> 
> > >>> ----- Original Message -----
> > >>>> From: "Junchao Zhang" < jczhang at mcs.anl.gov >
> > >>>> To: "MPI-WG Fortran working group"
> 
> 
> > >>>> mpi-forum.org >
> > >>>> Sent: Thursday, March 13, 2014 4:49:49 AM
> > >>>> Subject: [MPIWG Fortran] Type of MPI_Status
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> Hello,
> > >>>> 
> > >>>> 
> > >>>> p30 of MPI3 says "In Fortran with USE mpi or INCLUDE ’mpif.h’,
> > >>>> status
> > >>>> is an array of INTEGERs of size MPI_STATUS_SIZE. ..., With
> > >>>> Fortran
> > >>>> USE mpi_f08, status is defined as the Fortran BIND(C) derived
> > >>>> type
> > >>>> TYPE(MPI_Status) containing three public fields named
> > >>>> MPI_SOURCE
> > >>>> ,
> > >>>> MPI_TAG , and MPI_ERROR"
> > >>>> 
> > >>>> In other words, it does't say type of the three public fields
> > >>>> must be
> > >>>> INTEGER. So, in mpi_f08, can I declare MPI_Status as
> > >>>> 
> > >>>> 
> > >>>> TYPE, BIND(C) :: MPI_Status
> > >>>> INTEGER(C_INT) :: MPI_SOURCE, MPI_TAG, MPI_ERROR
> > >>>> ... ! other fields
> > >>>> END TYPE MPI_Status
> > >>>> 
> > >>>> 
> > >>>> I find it makes MPI_Status binding easier. Since this type is
> > >>>> interoperable with C, I do not need to allocate temp variables
> > >>>> to do
> > >>>> type conversion when INTEGER is not a C_INT.
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> --Junchao Zhang
> > >>>> _______________________________________________
> > >>>> mpiwg-fortran mailing list
> > >>>> mpiwg-fortran at lists.mpi-forum.org
> > >>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
> > >>> 
> > >>> --
> > >>> Dr. Rolf Rabenseifner . . . . . . . . . .. email
> > >>> rabenseifner at hlrs.de
> > >>> High Performance Computing Center (HLRS) . phone
> > >>> ++49(0)711/685-65530
> > >>> University of Stuttgart . . . . . . . . .. fax ++49(0)711 /
> > >>> 685-65832
> > >>> Head of Dpmt Parallel Computing . . .
> > >>> www.hlrs.de/people/rabenseifner
> > >>> Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room
> > >>> 1.307)
> > >>> _______________________________________________
> > >>> mpiwg-fortran mailing list
> > >>> mpiwg-fortran at lists.mpi-forum.org
> > >>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
> > >> 
> > >> 
> > >> --
> > >> Jeff Squyres
> > >> jsquyres at cisco.com
> > >> For corporate legal information go to:
> > >> http://www.cisco.com/web/about/doing_business/legal/cri/
> > >> 
> > >> _______________________________________________
> > >> mpiwg-fortran mailing list
> > >> mpiwg-fortran at lists.mpi-forum.org
> > >> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
> > > 
> > > Bill Long
> > > longb at cray.com
> > > Fortran Technical Suport & voice:
> > > 651-605-9024
> > > Bioinformatics Software Development fax:
> > > 651-605-9142
> > > Cray Inc./ Cray Plaza, Suite 210/ 380 Jackson St./ St. Paul, MN
> > > 55101
> > > 
> > > 
> > > _______________________________________________
> > > mpiwg-fortran mailing list
> > > mpiwg-fortran at lists.mpi-forum.org
> > > http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
> > 
> > 
> > 
> > --
> > Jeff Hammond
> > jeff.science at gmail.com
> > _______________________________________________
> > mpiwg-fortran mailing list
> > mpiwg-fortran at lists.mpi-forum.org
> > http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
> 
> --
> Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner at hlrs.de
> High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530
> University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832
> Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner
> Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307)
> _______________________________________________
> mpiwg-fortran mailing list
> mpiwg-fortran at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
> 
> _______________________________________________
> mpiwg-fortran mailing list
> mpiwg-fortran at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran

-- 
Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner at hlrs.de
High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530
University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832
Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner
Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307)



More information about the mpiwg-fortran mailing list