Hi All, Here is the suggested change to address this issue. In the paragraph on page 425, line 1, add the bracketed sentence: In the case of a window created with MPI_WIN_CREATE_DYNAMIC, the target_disp for all RMA functions is the address at the target; i.e., the effective window_base is MPI_BOTTOM and the disp_unit is one. [Thus, for dynamic windows, the target_disp argument to all RMA functions in interpreted as unsigned.] Users should use MPI_GET_ADDRESS at the target process to determine the address of a target memory location and communicate this address to the origin process. ~Jim. On 8/28/12 9:46 AM, Jim Dinan wrote:
Hi All,
Currently, target displacements in put/get/acc/etc are defined to be non-negative integers of type, MPI_Aint. MPI_Aint is defined to be a signed integer. However, displacements associated with dynamic windows are addresses (unsigned) and can range into the space of negative integers.
It seems like the least impact change would be to add a special case that the displacement argument will be interpreted as unsigned for dynamic windows. Changing the interface to take an 'unsigned MPI_Aint' would be the most clear (and preserve the existing and intended new semantics), but would break backward compatibility.
Interested to hear your thoughts.
~Jim.