Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#120: API-core-builtinreducers-Sum transition from md to rst #268

Merged
merged 6 commits into from
Jan 25, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 0 additions & 88 deletions docs/source/API/core/builtinreducers/Sum.md

This file was deleted.

99 changes: 99 additions & 0 deletions docs/source/API/core/builtinreducers/Sum.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
``Sum``
=======

.. role::cpp(code)
:language: cpp

.. role:: cppkokkos(code)
:language: cppkokkos

Specific implementation of `ReducerConcept <ReducerConcept.html>`_ performing an ``add`` operation

Header File: ``<Kokkos_Core.hpp>``

Usage
-----

.. code-block:: cpp

T result;
parallel_reduce(N,Functor,Sum<T,S>(result));

Synopsis
--------

.. code-block:: cpp

template<class Scalar, class Space>
class Sum{
public:
typedef Sum reducer;
typedef typename std::remove_cv<Scalar>::type value_type;
typedef Kokkos::View<value_type, Space> result_view_type;

KOKKOS_INLINE_FUNCTION
void join(value_type& dest, const value_type& src) const;

KOKKOS_INLINE_FUNCTION
void init( value_type& val) const;

KOKKOS_INLINE_FUNCTION
value_type& reference() const;

KOKKOS_INLINE_FUNCTION
result_view_type view() const;

KOKKOS_INLINE_FUNCTION
Sum(value_type& value_);

KOKKOS_INLINE_FUNCTION
Sum(const result_view_type& value_);
};

Public Class Members
--------------------

Typedefs
~~~~~~~~

* ``reducer``: The self type.
* ``value_type``: The reduction scalar type.
* ``result_view_type``: A ``Kokkos::View`` referencing the reduction result

Constructors
~~~~~~~~~~~~

.. cppkokkos:kokkosinlinefunction:: Sum(value_type& value_);

* Constructs a reducer which references a local variable as its result location.

.. cppkokkos:kokkosinlinefunction:: Sum(const result_view_type& value_);

* Constructs a reducer which references a specific view as its result location.

Functions
~~~~~~~~~

.. cppkokkos:kokkosinlinefunction:: void join(value_type& dest, const value_type& src) const;

* Add ``src`` into ``dest``: ``dest+=src;``.

.. cppkokkos:kokkosinlinefunction:: void init(value_type& val) const;

* Initialize ``val`` using the Kokkos::reduction_identity<Scalar>::sum() method. The default implementation sets ``val=0``.
antoinemeyer5 marked this conversation as resolved.
Show resolved Hide resolved

.. cppkokkos:kokkosinlinefunction:: value_type& reference() const;

* Returns a reference to the result provided in class constructor.

.. cppkokkos:kokkosinlinefunction:: result_view_type view() const;

* Returns a view of the result referenced in class constructor.

Additional Information
~~~~~~~~~~~~~~~~~~~~~~

* ``Sum<T,S>::value_type`` is non-const ``T``
* ``Sum<T,S>::result_view_type`` is ``Kokkos::View<T,S,Kokkos::MemoryTraits<Kokkos::Unmanaged>>``. Note that the S (memory space) must be the same as the space where the result resides.
* Requires: ``Scalar`` has ``operator =`` and ``operator +=`` defined. ``Kokkos::reduction_identity<Scalar>::sum()`` is a valid expression.
* In order to use Sum with a custom type, a template specialization of ``Kokkos::reduction_identity<CustomType>`` must be defined. See `Built-In Reducers with Custom Scalar Types <../../../ProgrammingGuide/Custom-Reductions-Built-In-Reducers-with-Custom-Scalar-Types.html>`_ for details