atomic_fetch_[op]
#
Header File: <Kokkos_Core.hpp>
Usage#
old_value = atomic_fetch_[op](ptr_to_value, update_value);
Atomically updates the variable at the address given by ptr_to_value
with update_value
according to the relevant operation op
, and returns the previous value found at that address.
Description#
-
template<class T>
T atomic_fetch_add(T *const ptr_to_value, const T value);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value += value; return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
value – value to be added
-
template<class T>
T atomic_fetch_and(T *const ptr_to_value, const T value);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value &= value; return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
value – value with which to combine the original value.
-
template<class T>
T atomic_fetch_div(T *const ptr_to_value, const T value);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value /= value; return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
value – value by which to divide the original value..
-
template<class T>
T atomic_fetch_lshift(T *const ptr_to_value, const unsigned shift);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value << shift; return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
shift – value by which to shift the original variable.
-
template<class T>
T atomic_fetch_max(T *const ptr_to_value, const T value);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value = max(*ptr_to_value, value); return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
value – value which to take the maximum with.
-
template<class T>
T atomic_fetch_min(T *const ptr_to_value, const T value);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value = min(*ptr_to_value, value); return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
value – value which to take the minimum with.
-
template<class T>
T atomic_fetch_mul(T *const ptr_to_value, const T value);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value *= value; return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
value – value by which to multiply the original value.
-
template<class T>
T atomic_fetch_mod(T *const ptr_to_value, const T value);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value %= value; return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
value – value with which to combine the original value.
-
template<class T>
T atomic_fetch_or(T *const ptr_to_value, const T value);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value |= value; return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
value – value with which to combine the original value.
-
template<class T>
T atomic_fetch_rshift(T *const ptr_to_value, const unsigned shift);# Atomically executes
tmp = *ptr_to_value; *ptr_to_value >> shift; return tmp;
.- Parameters:
ptr_to_value – address of the value to be updated
shift – value by which to shift the original variable.