[Mpi3-rma] MPI RMW operations
Shipman, Galen M.
gshipman at ornl.gov
Mon Mar 24 22:09:52 CDT 2008
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.
More information about the mpiwg-rma
mailing list