Hi Jim, MPI_Get_address() returns the address (displacement) relative to MPI_BOTTOM. This initial address zero is indicated by the constant MPI_BOTTOM. In C, MPI_Bottom is a defined constant and the value is 0. In Fortran, MPI_BOTTOM is a variable in a common block which is located anywhere in memory. The address is constant for the application. But the address of MPI_BOTTOM may be dependent on the application, compiler, .. The value of MPI_BOTTOM is not relevant in MPI Implementations for Fortran. There is no (official) pointer arithmetic in Fortran. Non-negative disp was correct for windows created by MPI_Win_create since the base address of a contiguous window region was transferred to MPI_Win_Create. Non_negative disp is still correct for MPI_Win_Allocate and MPI_Win_allocate_shared. This is not correct for windows created MPI_Win_dynamic (at least in Fortran). Hubert ________________________________________ From: [email protected] [[email protected]] on behalf of Jim Dinan [[email protected]] Sent: Wednesday, September 12, 2012 5:04 PM To: [email protected] Subject: Re: [Mpi3-rma] MPI_WIN_CREATE_DYNAMIC and target_disp Hi Hubert, Thanks for weighing in on the Fortran side of this issue. IIUC, are you saying that the dynamic window displacement should be relative to the location of MPI_BOTTOM? The intent of the working group was that the displacement should be relative to the /value/ of MPI_BOTTOM, which is assumed to be NULL. Unfortunately, removing "non-negative" from the target_disp argument in MPI_{GET, RGET, PUT, RPUT, ACCUMULATE, ...} is a bigger change than we can make at this stage. ~Jim. On 9/5/12 10:50 AM, Hubert Ritzdorf wrote:
Hi,
dependent on the actual discussion, I propose a change in the current version of MPI 3.0 draft. I send it to the rma list instead of mpi-comments list in order to get one of the discussed changes or this change into the MPI document:
The argument target_disp in the RMA function MPI_{GET, RGET, PUT, RPUT, ACCUMULATE, ...} is qualified as non-negative integer. I think, that this cannot be guaranteed for the Fortran version of new function MPI_WIN_CREATE_DYNAMIC. The displacement is actually relative to MPI_BOTTOM which is a variable in a common block or module.
The location of MPI_BOTTOM may be dependent on compiler (and possibly compiler options) and the sequence of common blocks/modules in memory. (Example: The memory of a window might be located in a common block, which is located in front of the common block which contains MPI_BOTTOM). Therefore, non-negative displacements cannot be guaranteed for windows created by MPI_WIN_CREATE_DYNAMIC in Fortran .
The simple change would be to remove "non-negative". But I assume that a rationale would be required.
Hubert
_______________________________________________ mpi3-rma mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
_______________________________________________ mpi3-rma mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma Click https://www.mailcontrol.com/sr/!19pCLlfG47TndxI!oX7UrJwzC7nuAWDdK6MjdrJUqRl6... to report this email as spam.