Re: [Mpi3-rma] MPI RMW operations
Some comments: * Are the semantics supposed to be that the original value at the target is read and stored at the result_addr on the origin (like a Get), and the target memory is updated with the result of the reduction operation (like Accumulate)? * What are the semantics of the two-operand versions? * Why is there no count, datatype at the target like in Accumulate? * When assert == MPI_MODE_PASSIVE_EPOCH_IMPLICIT, what is the lock type for the Win_lock -- shared or exclusive? Also, Win_unlock takes only two parameters. * Regarding the interaction with explicit epochs of Rmw when assert == MPI_MODE_PASSIVE_EPOCH_IMPLICIT, it should be the same as the interaction of its equivalent sequence, namely, Lock - Rmw - Unlock. In other words, there shouldn't be another epoch around it on the same process (nested epochs not allowed), and the epochs on other processes must not conflict. Rajeev
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Shipman, Galen M. Sent: Monday, March 24, 2008 10:10 PM To: [email protected] Subject: [Mpi3-rma] MPI RMW operations
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 [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
participants (1)
-
Rajeev Thakur