[MPIWG Fortran] Type of MPI_Status
Bill Long
longb at cray.com
Thu Mar 13 08:58:07 CDT 2014
This does raise an earlier issue that it is <very remotely> 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" <mpiwg-fortran at lists.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
More information about the mpiwg-fortran
mailing list