[mpi-21] Ballot 4 proposal: fix attribute example 4.13

Jeff Squyres jsquyres at [hidden]
Thu Feb 7 11:25:05 CST 2008



Terry and I further noticed that there appears to be another minor  
problem in example 4.13.  So here's an addendum to the proposal:

MPI-2:4.12.7 p59 line 1 reads:

   int *p

But should read

   MPI_Aint *p

Rationale: The value that is set from fortran is an  
INTEGER(kind=MPI_ADDRESS_KIND).  Hence, to dereference it properly,  
the corresponding C pointer type needs to be an (MPI_Aint*), not (int*).

On Feb 7, 2008, at 12:04 PM, Terry Dontje wrote:

> After talking with Jeff and reading the spec further I retract my
> concern because the spec does explicitly cover my concern in the  
> verbage
> above example 4.13.
>
> --td
>
> Terry Dontje wrote:
>> Sorry I didn't send this out sooner but in reading the discussion for
>> the errata item "Interlaguage use of Attributes" I think the below
>> proposal has a potential hole that never was resolved in the mail
>> discussion in:
>> http://www.cs.uiuc.edu/homes/wgropp/projects/parallel/MPI/mpi-errata/discuss/getattr/
>>
>>
>> The specific hole pointed out by Nick Nevin in the following  
>> paragraph
>> from the email discussion:
>>
>> This might work for predefined attributes where the address can
>> point to the integer value in static storage, but won't work for
>> attributes set by the user in Fortran code.  If you store a pointer
>> to the integer as the attribute it may point to a temporary which
>> might no longer exist when you try and access it later.
>>
>>
>> So I think relying on the address passed in for the attribute as
>> opposed to the value could cause some
>> issues with Fortran.
>>
>> --td
>> Jeff Squyres wrote:
>>> Per
>>> http://www.cs.uiuc.edu/homes/wgropp/projects/parallel/MPI/mpi-errata/ 
>>> ,
>>> the errata item entitled "Error in Example 4.13 in MPI-2 (Use of
>>> Attributes in C and Fortran)".  I believe that this errata item
>>> supersedes the errata item "Interlanguage use of Attributes".
>>>
>>> See the mail discussing:
>>>
>>> http://www.cs.uiuc.edu/homes/wgropp/projects/parallel/MPI/mpi-errata/discuss/attrcandf/
>>>
>>>
>>> Proposal:
>>>
>>> Change MPI-2:4.12, p58:36 from:
>>>  IF (val.NE.5) THEN CALL ERROR
>>> to
>>>  IF (val.NE.address_of_i) THEN CALL ERROR
>>>
>>> Rationale:
>>>
>>> MPI-2:4.12 p58:12-13 and 16-18 clearly state that if an attribute is
>>> set by C, retrieving it in Fortran will obtain the address of the
>>> attribute.
>>>
>>> See the mails for more discussion, including an exhaustive list of
>>> what happens for each of the 9 possibilities of setting and getting
>>> attribute values between the different languages.
>>>
>>
>>
>
> _______________________________________________
> mpi-21 mailing list
> mpi-21_at_[hidden]
> http://lists.cs.uiuc.edu/mailman/listinfo/mpi-21


-- 
Jeff Squyres
Cisco Systems




More information about the Mpi-21 mailing list