[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



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.