[Mpi3-rma] Target displacement sign issue

Jeff Hammond jhammond at alcf.anl.gov
Wed Sep 5 09:31:17 CDT 2012


It is a not a 3.0 change but it would be better to make these routines
macro-able like mpi_wtime so that a user could call MPI_Get_address
inside of a loop and not get hosed.  I don't see a way to avoid this
behavior in some cases.

Jeff

On Wed, Sep 5, 2012 at 4:18 PM, Jim Dinan <dinan at mcs.anl.gov> wrote:
> This is true, but we've relied on a correspondence between Aints and
> pointers in a variety use cases for dynamic windows, e.g. the linked list
> example.
>
>  ~Jim.
>
>
> On 9/5/12 9:15 AM, Pavan Balaji wrote:
>>
>>
>> FYI, casting back MPI_Aint to a pointer was never safe (even in
>> MPI-2.2), since MPI_Aint can be larger than void *.
>>
>>   -- Pavan
>>
>> On 09/05/2012 09:13 AM, Jim Dinan wrote:
>>>
>>> Hi Hubert,
>>>
>>> If I understand this correctly, then one would no longer be able to cast
>>> an MPI_Aint back to a pointer.  We would have to add another routine,
>>> MPI_Get_pointer_dynamic() to do this conversion.
>>>
>>>    ~Jim.
>>>
>>> On 9/4/12 6:25 PM, Hubert Ritzdorf wrote:
>>>>
>>>>
>>>> Hi,
>>>>
>>>> Possibly another solution:
>>>>
>>>> (*) Let MPI_AINT_MAX the maximal value of MPI_Aint variable
>>>> (*) Let the window_base of a window created by MPI_WIN_CREATE_DYNAMIC
>>>>       be MPI_AINT_MAX + 1
>>>> (*) Define a new function MPI_Get_address_dynamic returning the
>>>>       address of a location relative to MPI_AINT_MAX + 1
>>>> (*) Remove the non-negative qualification in the description
>>>>       of target_disp in MPI_{Put/Get/Accumulate/...).
>>>>
>>>> Hubert
>>>>
>>>>> -----Original Message-----
>>>>> From: mpi3-rma-bounces at lists.mpi-forum.org [mailto:mpi3-rma-
>>>>> bounces at lists.mpi-forum.org] On Behalf Of Hubert Ritzdorf
>>>>> Sent: Tuesday, September 04, 2012 7:23 PM
>>>>> To: MPI 3.0 Remote Memory Access working group
>>>>> Subject: Re: [Mpi3-rma] Target displacement sign issue
>>>>>
>>>>> Hi,
>>>>>
>>>>> MPI_Get_address returns an MPI_Aint which is signed.(integer).
>>>>>
>>>>> C:
>>>>> MPI_Aint's may be used in Reduce Operations with Min/Max
>>>>> or the application can internally use min/max computations.
>>>>> Can anybody guarantee that applications don't perform
>>>>> min/max operations on these displacements (which results in different
>>>>> results for unsigned and signed variables) or use derived values of
>>>>> these
>>>>> displacements in other signed/unsigned significant cases.
>>>>>
>>>>> Fortran:
>>>>> MPI_BOTTOM is a variable in a common block/module. Thus,
>>>>> MPI_Get_address might really return a signed integer (depending on the
>>>>> compiler).
>>>>> Fortran doesn't have unsigned integers and cannot handle them.
>>>>> Thus, the non-negative integer specification for target_disp in
>>>>> MPI_{Put/Get/Accumulate/...)
>>>>> might be incorrect for Fortran and MPI_Win_Create_dynamic().
>>>>>
>>>>> Hubert
>>>>> ________________________________________
>>>>> From: mpi3-rma-bounces at lists.mpi-forum.org [mpi3-rma-bounces at lists.mpi-
>>>>> forum.org] on behalf of Jim Dinan [dinan at mcs.anl.gov]
>>>>> Sent: Tuesday, September 04, 2012 5:10 PM
>>>>> To: mpi3-rma at lists.mpi-forum.org
>>>>> Subject: Re: [Mpi3-rma] Target displacement sign issue
>>>>>
>>>>> Hi All,
>>>>>
>>>>> This is an important issue that we need to resolve before releasing the
>>>>> 3.0 spec.  Please take a look and send feedback.
>>>>>
>>>>> Dave has voiced a concern that the implicit type conversion in my
>>>>> proposed text below may not be portable.  If anyone has more experience
>>>>> with this aspect (signed->unsigned conversion) of C/Fortran/etc type
>>>>> systems, please chime in.
>>>>>
>>>>>     ~Jim.
>>>>>
>>>>> On 8/28/12 2:29 PM, Jim Dinan wrote:
>>>>>>
>>>>>> 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.
>>>>>
>>>>> _______________________________________________
>>>>> mpi3-rma mailing list
>>>>> mpi3-rma at lists.mpi-forum.org
>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
>>>>>
>>>>>
>>>>>    Click
>>>>>
>>>>> https://www.mailcontrol.com/sr/O6SiJI5AP4bTndxI!oX7Up2F0f+S6NySj!qlvEoKFyZ
>>>>>
>>>>> NTFyVkk9WjRzJbmnfHdyw83VGVWKbSfC8ewgPpp7kgg==  to report this email as
>>>>> spam.
>>>>>
>>>>> _______________________________________________
>>>>> mpi3-rma mailing list
>>>>> mpi3-rma at lists.mpi-forum.org
>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
>>>>
>>>>
>>>> _______________________________________________
>>>> mpi3-rma mailing list
>>>> mpi3-rma at lists.mpi-forum.org
>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
>>>>
>>> _______________________________________________
>>> mpi3-rma mailing list
>>> mpi3-rma at lists.mpi-forum.org
>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
>>>
>>
> _______________________________________________
> mpi3-rma mailing list
> mpi3-rma at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma



-- 
Jeff Hammond
Argonne Leadership Computing Facility
University of Chicago Computation Institute
jhammond at alcf.anl.gov / (630) 252-5381
http://www.linkedin.com/in/jeffhammond
https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond



More information about the mpiwg-rma mailing list