[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