SHMEM_CSWAP(3) Open MPI SHMEM_CSWAP(3)
NAME
shmem_int_cswap(3), shmem_int4_cswap(3), shmem_int8_cswap(3),
shmem_long_cswap(3), shmem_longlong_cswap(3) - Performs an atomic con-
ditional swap to a remote data object
SYNOPSIS
C or C++:
#include <mpp/shmem.h>
int shmem_int_cswap(int *target, int cond, int value, int pe);
long shmem_long_cswap(long *target, long cond, long value,
int pe);
long long shmem_longlong_cswap(longlong *target,
longlong cond, longlong value, int pe);
Fortran:
INCLUDE "mpp/shmem.fh"
INTEGER pe
INTEGER(KIND=4) SHMEM_INT4_CSWAP
ires = SHMEM_INT4_CSWAP(target, cond, value, pe)
INTEGER(KIND=8) SHMEM_INT8_CSWAP
ires = SHMEM_INT8_CSWAP(target, cond, value, pe)
DESCRIPTION
The conditional swap routines conditionally update a target data object
on an arbitrary processing element (PE) and return the prior contents
of the data object in one atomic operation.
The arguments are as follows:
target The remotely accessible integer data object to be updated on the
remote PE. If you are using C/C++, the type of target should
match that implied in the SYNOPSIS section. If you are using the
Fortran compiler, it must be of type integer with an element
size of 4 bytes for SHMEM_INT4_ADD and 8 bytes for
SHMEM_INT8_ADD.
value The value to be atomically added to target. If you are using
C/C++, the type of value should match that implied in the SYNOP-
SIS section. If you are using Fortran, it must be of type inte-
ger with an element size of target.
pe An integer that indicates the PE number upon which target is to
be updated. If you are using Fortran, it must be a default inte-
ger value.
target The remotely accessible integer data object to be updated on the
remote PE. If you are using C/C++, the data type of target
should match that implied in the SYNOPSIS section. If you are
using Fortran, it must be of the following type:
SHMEM_INT4_CSWAP: 4-byte integer
SHMEM_INT8_CSWAP: 8-byte integer
cond cond is compared to the remote target value. If cond and the re-
mote target are equal, then value is swapped into the remote
target. Otherwise, the remote target is unchanged. In either
case, the old value of the remote target is returned as the
function return value. cond must be of the same data type as
target.
value The value to be atomically written to the remote PE. value must
be the same data type as target.
pe An integer that indicates the PE number upon which target is to
be updated. If you are using Fortran, it must be a default inte-
ger value.
NOTES
The term remotely accessible is defined in intro_shmem(3).
RETURN VALUES
The contents that had been in the target data object on the remote PE
prior to the conditional swap.
EXAMPLES
The following call ensures that the first PE to execute the conditional
swap will successfully write its PE number to race_winner on PE 0.
main()
{
static int race_winner = -1;
int oldval;
shmem_init();
oldval = shmem_int_cswap(&race_winner, -1, shmem_my_pe(), 0);
if (oldval == -1)
printf("pe %d was first\n",shmem_my_pe());
}
SEE ALSO
intro_shmem(3), shmem_cache(3), shmem_swap(3)
4.1.2 Nov 24, 2021 SHMEM_CSWAP(3)
Generated by dwww version 1.14 on Sun Aug 24 14:46:34 CEST 2025.