Skip to content

Commit

Permalink
kokkos#120: atomic_fetch_op md to rst
Browse files Browse the repository at this point in the history
  • Loading branch information
pierrepebay authored and fnrizzi committed Dec 10, 2023
1 parent 59fb1f0 commit 3b6f624
Show file tree
Hide file tree
Showing 2 changed files with 185 additions and 161 deletions.
161 changes: 0 additions & 161 deletions docs/source/API/core/atomics/atomic_fetch_op.md

This file was deleted.

185 changes: 185 additions & 0 deletions docs/source/API/core/atomics/atomic_fetch_op.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
``atomic_fetch_[op]``
=====================

.. role::cpp(code)
:language: cpp
Header File: ``Kokkos_Core.hpp``

Usage:

.. code-block:: cpp
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,
and returns the previous value found at that address..

Synopsis
--------

.. code-block:: cpp
template<class T>
T atomic_fetch_add(T* const ptr_to_value, const T value);
template<class T>
T atomic_fetch_and(T* const ptr_to_value, const T value);
template<class T>
T atomic_fetch_div(T* const ptr_to_value, const T value);
template<class T>
T atomic_fetch_lshift(T* const ptr_to_value, const unsigned shift);
template <class T>
T atomic_fetch_max(T* const ptr_to_value, const T val);
template <class T>
T atomic_fetch_min(T* const ptr_to_value, const T val);
template<class T>
T atomic_fetch_mod(T* const ptr_to_value, const T value);
template<class T>
T atomic_fetch_mul(T* const ptr_to_value, const T value);
template<class T>
T atomic_fetch_or(T* const ptr_to_value, const T value);
template<class T>
T atomic_fetch_rshift(T* const ptr_to_value, const unsigned shift);
template<class T>
T atomic_fetch_sub(T* const ptr_to_value, const T value);
template<class T>
T atomic_fetch_xor(T* const ptr_to_value, const T value);
Description
-----------

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value to be added.

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value with which to combine the original value.

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value by which to divide the original value..

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``shift``: value by which to shift the original variable.

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value which to take the maximum with.

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value which to take the minimum with.

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value by which to multiply the original value.

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value with which to combine the original value.

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value with which to combine the original value.

- .. code-block:: cpp

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;``.

- ``ptr_to_value``: address of the to be updated value.
- ``shift``: value by which to shift the original variable.

- .. code-block:: cpp

template<class T>
T atomic_fetch_sub(T* const ptr_to_value, const T value);


Atomically executes ``*ptr_to_value -= value``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value to be substracted..

- .. code-block:: cpp

template<class T>
T atomic_fetch_xor(T* const ptr_to_value, const T value);

Atomically executes ``tmp = *ptr_to_value; *ptr_to_value ^= value; return tmp;``.

- ``ptr_to_value``: address of the to be updated value.
- ``value``: value with which to combine the original value.

0 comments on commit 3b6f624

Please sign in to comment.