[Mpi3-rma] MPI RMW operations

Shipman, Galen M. gshipman at ornl.gov
Tue Mar 25 10:43:24 CDT 2008


HI Brian,

On Mar 25, 2008, at 11:22 AM, Brian W. Barrett wrote:

> That makes sense.  How would an MPI_Rmw() call with the IMPLICIT
> epoch interact with explicit epochs?  If the answer is "it wouldn't",
> I think that's valid.  We just need to state it.

I would think the behavior would be undefined or "it wouldn't".

>
> Also, is there any reason we're not using the standard OP defines?
>
We would need additional operations for RMW/2 (as shown) and restrict  
other operations that don't apply within the standard.
I would also want to carefully look at the implementation costs for  
using the standard OP defines.

- Galen



> Brian
>
> On Mar 25, 2008, at 9:14 AM, Howard Pritchard wrote:
>
>> Hello Brian,
>>
>> That was the idea.
>>
>> The problem as we saw it is that in non-mpi shared memory
>> applications, atomic memory operations are typically used for
>> lightweight
>> synchronization.  Having to always use potentially heavyweight lock/
>> unlock
>> sequences seems to defeat the purpose of adding rmw operations to the
>> mpi specification.
>>
>> This is a special case of the more general discussion that we should
>> have about global visibility of rma operations, etc.
>>
>> Howard
>>
>> Brian W. Barrett wrote:
>>
>>> If MPI_MODE_PASSIVE_EPOCH_IMPLICIT is not given, is synchronization
>>> explicit using the standard epoch functions?
>>>
>>> Brian
>>>
>>> On Mar 24, 2008, at 9:09 PM, Shipman, Galen M. wrote:
>>>
>>>
>>>
>>>> Howard and I have been working on the RMW operations listed below
>>>> for
>>>> consideration.
>>>>
>>>> - Galen Shipman - ORNL
>>>>
>>>>
>>>> Single operand RMW operations
>>>>
>>>> MPI_Rmw(void *operand_addr,
>>>>                     int count,
>>>>                    MPI_Datatype datatype,
>>>>                    void *result_addr,
>>>>                    int target_rank,
>>>>                    MPI_Aint target_disp,
>>>>                    int assert,
>>>>                    MPI_RMW_Op op,
>>>>                     MPI_Win win)
>>>>
>>>>
>>>> Two operand RMW operations
>>>>
>>>> MPI_Rmw2(void *operand_addr,
>>>>                       int count,
>>>>                       MPI_Datatype datatype,
>>>>                      void *operand2_addr,
>>>>                      void *result_addr,
>>>>                      int target_rank,
>>>>                      MPI_Aint target_disp,
>>>>                       int assert,
>>>>                      MPI_RMW_2_Op op,
>>>>                       MPI_Win win)
>>>>
>>>>
>>>>
>>>> MPI_RMW_Op Predefined RMW single operand operations
>>>> The following predefined operations are supplied for MPI_RMW and
>>>> related
>>>> functions. These operations are invoked  by placing the following
>>>> in op.
>>>>
>>>> Name             Meaning
>>>>
>>>> MPI_RMW_INC             increment
>>>> MPI_RMW_PROD    product
>>>> MPI_RMW_SUM             sum
>>>> MPI_RMW_LAND    logical and
>>>> MPI_RMW_LOR             logical or
>>>> MPI_RMW_LXOR    logical xor
>>>> MPI_RMW_BAND    binary and
>>>> MPI_RMW_BOR             binary or
>>>> MPI_RMW_BXOR    binary xor
>>>> MPI_RMW_SWAP    swap value
>>>>
>>>> MPI_RMW_2_Op Predefined RMW two operand operations
>>>>
>>>> Name                                            Meaning
>>>>
>>>> MPI_RMW2_MASK_SWAP      swap masked bits
>>>> MPI_RMW2_COMP_SWAP      compare and swap
>>>>
>>>> Note: MPI_RMW2_COMP_SWAP is an equality comparison, we may wish to
>>>> consider multiple comparison operations such as >, >=, <, <=, ==,
>>>> <>.
>>>>
>>>> Both MPI_Rmw and MPI_Rmw2 take an assert argument.
>>>> When assert == MPI_MODE_PASSIVE_EPOCH_IMPLICIT MPI_Rmw/2 is
>>>> equivalent to:
>>>>
>>>> MPI_Win_lock(target_rank,0,win);
>>>> MPI_Rmw(.....);
>>>> MPI_Win_unlock(target_rank,0,win);
>>>>
>>>> When assert  == MPI_MODE_PASSIVE_EPOCH_IMPLICIT | MPI_MODE_NOCHECK
>>>> the MPI library knows that the window lock at the target need  
>>>> not be
>>>> acquired.
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> mpi3-rma mailing list
>>>> mpi3-rma at lists.mpi-forum.org
>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>> --
>>
>> Howard Pritchard
>> Cray Inc.
>>
>>
>> _______________________________________________
>> mpi3-rma mailing list
>> mpi3-rma at lists.mpi-forum.org
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
>>
>
> -- 
>    Brian W. Barrett
>    Dept. 1422: Scalable Computer Architectures
>    Sandia National Laboratories
>
>
>
>
> _______________________________________________
> mpi3-rma mailing list
> mpi3-rma at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma




More information about the mpiwg-rma mailing list