(j3.2006) (SC22WG5.4426) RE: Comment on Fortran WG5 ballot N1846

Rasmussen, Craig E rasmussn
Wed Mar 30 19:00:21 EDT 2011


> 
> Please answer the following question "Is N1814 ready for forwarding to SC22 
> as the PDTR?" in one of these ways. 
> 
> 1) Yes.
> 2) Yes, but I recommend the following changes. 
> 3) No, for the following reasons.
> 4) Abstain.

No, for the following reasons:

The requirements in paper 09-231 "Answer to MPI Forum regarding MPI asynchronous operations" from J3 meeting 188 seems to have fallen between the cracks.  In a straw poll, J3 voted (8-2-3) to extend ASYNCHRONOUS to restrict optimizations on variables that may be accessed asynchronously.  The minutes state that no further action will be taken on 09-231 and other papers as they are all input for the Interop TR N1761.

In section 5.2.7 of N1845, Restrictions on lifetimes, it states that all C pointers to any part of an object described by a C descriptor become undefined on return from the function unless the dummy argument has the TARGET, ASYNCHRONOUS or VOLATILE attributes.  However this only applies to attributes on the dummy argument and N1845 makes no mention of extending the ASYNCHRONOUS attribute.  In particular, this is important with regards to a variable that may be accessed asynchronously, but may not be argument associated with a dummy with the ASYNCHRONOUS attribute, as the compiler has no knowledge of the asynchronous access.

It seems to me that in order to satisfy the requirements in 09-231 that text in section 5.3.4 must be modified somewhat.

There are also other issues that are more minor and can be easily fixed:

1. Page 1, line 7: Replace "excution" with "execution".

2. Page 9, 5.2.2:  CFI_cdest_t contains a flexible array member and there is a macro CFI_CDESC_T for declaring a C descriptor with a given rank, however there doesn't appear to be a function to obtain the sizeof a CFI_cdest_t with a given rank.  A mechanism to obtain the size of a C descriptor is necessary if one needs to create a long-lived descriptor in C using malloc.

3. Page 14, following paragraph 7:  There is no description of the dim argument.

4. Page 15, lines 19-21: 5.2.3 states that CFI_dim_t is a named struct type defined by a typedef.  Thus CFI_dim_t is not a pointer type yet pointer dereferencing is used in lines 19-21, e.g., dim[0]->lower_bound should be dim[0].lower_bound.

5. Page 16, lines 6-7: See comment in item #4 above.

6. Page 16, lines 8-9:  The type of the source variable is not stated, in particular, whether it is a pointer.  The usage in line 8 implies it is a pointer, the usage in line 9 that it is not a pointer.

7. Page 16, line 40: Replace "component,;" with "component;"

8. Page 16, line 44: The use of sizeof(d) for the displacement argument assumes a particular layout of the interoperable type t, which is processor dependent.

9. Page 17, lines 20-23: See comment in item #4 regarding pointer dereferencing of dim[0].

10. Page 18, line 23: It is stated that ptr point to a C descriptor yet the address operator & is used with ptr in the call to CFI_setpointer.

Regards,
Craig Rasmussen
Los Alamos National Laboratory



More information about the J3 mailing list