X3J3/97-144 Page 1 of 1 Date: February 13, 1997 To: WG5/X3J3 From: Richard Bleikamp Subject: Copyin/Copyout and Async I/O Compilers pass some arguments via copyin/out Problems with MPI, HPF, and async I/O - copyout mechanism can overwrite a value stored via I/O - copyin can "miss" the values being READ Considered restricting use of async I/O list items to avoid this issue, but the hammer was too BIG Proposed approach - describe, in the standard, those cases when a compiler usually uses copyin/copyout, and prohibit them (via a constraint) - give enough information to the compiler to know when copyin/out is NOT wanted, compiler must not use copyin/out in these cases - require ASYNC attribute for dummy args and require explicit interface for any routine with a dummy arg with the ASYNC attribute - use text from interp 125 to describe those cases where copyin/out is typically used, and have a constaint to prohibit those cases when the corresponding dummy arg has the async attribute - compiler is still free to pass by address or descriptor - disallow function calls in I/O lists - interp 125 describes when pointers/targets passed as arguments are associated, which is similar to when a compiler must pass by address or descriptor. We will "disallow" other cases for async i/o in the absence of the POINTER and TARGET attribute on a dummy argument