.. SPDX-FileCopyrightText: 2019-2020 Intel Corporation
..
.. SPDX-License-Identifier: CC-BY-4.0

==========
Reductions
==========

oneCCL specification defines the following reduction operations for :ref:`Allreduce`, :ref:`Reduce` and :ref:`ReduceScatter` collective operations:

.. code:: cpp

    enum class reduction
    {
        sum    = /* unspecified */,
        prod   = /* unspecified */,
        min    = /* unspecified */,
        max    = /* unspecified */,
        custom = /* unspecified */
    };

reduction::sum
    elementwise summation
reduction::prod
    elementwise multiplication
reduction::min
    elementwise min
reduction::max
    elementwise max
reduction::custom
    | specify user-defined reduction operation
    | the actual reduction function must be passed through ``reduction_fn`` operation attribute

:doc:`operation_attributes`
