shmem_fadd(3)

shmem_int4_fadd, shmem_int8_fadd, shmem_int_fadd, shmem_long_fadd, shmem_longlong_fadd - Performs an atomic fetch-and-add operation on a remote data object

As shipped in IRIX 6.5.19. Added in IRIX 6.5.19.

NAME
     shmem_int4_fadd, shmem_int8_fadd, shmem_int_fadd, shmem_long_fadd,
     shmem_longlong_fadd - Performs an atomic fetch-and-add operation on a
     remote data object

SYNOPSIS
     C or C++:

        #include <mpp/shmem.h>

        int shmem_int_fadd(int *target, int value, int pe);

        long shmem_long_fadd(long *target, long value, int pe);

        long long shmem_longlong_fadd(long long *target, long long value,
        int pe);

     Fortran:

        INTEGER pe

        INTEGER(KIND=4) SHMEM_INT4_FADD, ires, target, value
        ires = SHMEM_INT4_FADD(target, value, pe)

        INTEGER(KIND=8) SHMEM_INT8_FADD, ires, target, value
        ires = SHMEM_INT8_FADD(target, value, pe)


DESCRIPTION
     shmem_fadd functions perform an atomic fetch-and-add operation.  An
     atomic fetch-and-add operation fetches the old target and adds value
     to target without the possibility of another process updating target
     between the time of the fetch and the update.  These routines add
     value to target on Processing Element (PE) pe and return the previous
     contents of target as an atomic operation.

     The arguments are as follows:

     target    The remotely accessible integer data object to be updated on
               the remote PE.  The type of target should match that implied
               in the SYNOPSIS section.

     value     The value to be atomically added to target.  The type of
               value should match that implied in the SYNOPSIS section.

     pe        An integer that indicates the PE number on which target is
               to be updated.  If you are using Fortran, it must be a
               default integer value.

NOTES
     The term remotely accessible is defined in intro_shmem(3).

     You can use the fetch-and-add routines without setting the remote
     write invalidate bit if you know, prior to the call, that the data at
     the target addresses are not cachable or are otherwise known not to
     reside in the remote processor's cache at the time of the call.
     Alternatively, the receiving processor can flush its cache when it
     knows that it has received data from another processor.  In general,
     this requires synchronization.  The cache can be flushed using
     shmem_udcflush() or shmem_udcflush_line().

RETURN VALUES
     The contents that had been at the target address on the remote PE
     prior to the atomic addition operation.

SEE ALSO
     intro_shmem(3), shmem_clear_cache_inv(3), shmem_set_cache_inv(3),
     shmem_set_cache_line_inv(3).