shmem_finc(3)
shmem_int4_finc, shmem_int8_finc, shmem_int_finc, shmem_long_finc, shmem_longlong_finc - Performs an atomic fetch-and-increment operation on a remote data object
As shipped in IRIX 6.5.19. Added in IRIX 6.5.19.
NAME shmem_int4_finc, shmem_int8_finc, shmem_int_finc, shmem_long_finc, shmem_longlong_finc - Performs an atomic fetch-and-increment operation on a remote data object SYNOPSIS C or C++: #include <mpp/shmem.h> int shmem_int_finc(int *target, int pe); long shmem_long_finc(long *target, int pe); long long shmem_longlong_finc(long long *target, int pe); Fortran: INTEGER pe INTEGER(KIND=4) SHMEM_INT4_FINC, target4 INTEGER(KIND=8) SHMEM_INT8_FINC, target8 ires4 = SHMEM_INT4_FINC(target4, pe) ires8 = SHMEM_INT8_FINC(target8, pe) DESCRIPTION These functions perform a fetch-and-increment operation. The target on processing element (PE) pe is increased by one and the function returns 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. 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). The fetch-and-increment routines write directly into another PE's memory without notifying that PE, so the receiving PE should normally set automatic cache invalidation by use of shmem_set_cache_inv(3) or shmem_set_cache_line_inv(3). If this is not done, the receiving PE's data cache might become incoherent. You can use the fetch-and-increment 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. To flush the cache, use shmem_udcflush() or shmem_udcflush_line(). RETURN VALUES The contents that had been at the target address on the remote PE prior to the increment. SEE ALSO intro_shmem(3), shmem_clear_cache_inv(3), shmem_set_cache_inv(3), shmem_set_cache_line_inv(3)