kokkos-execution 0.0.1
Loading...
Searching...
No Matches
Kokkos::Execution::parallel_reduce_t Struct Reference

Custom algorithm for the Kokkos::parallel_reduce construct. More...

#include <parallel_reduce.hpp>

Public Types

template<typename Functor, typename ExecPolicyOrIterSpace, typename Reducer, typename... Properties>
using parallel_reduce_data_t

Public Member Functions

template<typename Label, typename Functor, typename ExecPolicy, typename Reducer>
requires (Impl::label<std::remove_cvref_t<Label>> && Kokkos::ExecutionPolicy<std::remove_cvref_t<ExecPolicy>>)
constexpr auto operator() (Label &&label, ExecPolicy &&policy, Functor &&functor, Reducer &&reducer) const noexcept(noexcept(stdexec::__closure(*this, std::forward< ExecPolicy >(policy), std::forward< Functor >(functor), std::forward< Reducer >(reducer), Impl::Label{std::forward< Label >(label)}))) -> decltype(stdexec::__closure(*this, std::forward< ExecPolicy >(policy), std::forward< Functor >(functor), std::forward< Reducer >(reducer), Impl::Label{std::forward< Label >(label)}))
template<typename ExecPolicyOrIterSpace, typename Functor, typename Reducer>
requires Impl::execution_policy_or_iteration_space<std::remove_cvref_t<ExecPolicyOrIterSpace>>
constexpr auto operator() (ExecPolicyOrIterSpace &&policy_or_iter_space, Functor &&functor, Reducer &&reducer) const noexcept(noexcept(stdexec::__closure(*this, std::forward< ExecPolicyOrIterSpace >(policy_or_iter_space), std::forward< Functor >(functor), std::forward< Reducer >(reducer)))) -> decltype(stdexec::__closure(*this, std::forward< ExecPolicyOrIterSpace >(policy_or_iter_space), std::forward< Functor >(functor), std::forward< Reducer >(reducer)))
template<typename Label, typename Functor, std::integral T, typename Reducer>
requires Impl::label<std::remove_cvref_t<Label>>
constexpr auto operator() (Label &&label, const T work_count, Functor &&functor, Reducer &&reducer) const noexcept(noexcept(stdexec::__closure(*this, Impl::make_iter_space(work_count), std::forward< Functor >(functor), std::forward< Reducer >(reducer), Impl::Label{std::forward< Label >(label)}))) -> decltype(stdexec::__closure(*this, Impl::make_iter_space(work_count), std::forward< Functor >(functor), std::forward< Reducer >(reducer), Impl::Label{std::forward< Label >(label)}))
template<typename Functor, std::integral T, typename Reducer>
constexpr auto operator() (const T work_count, Functor &&functor, Reducer &&reducer) const noexcept(noexcept(stdexec::__closure(*this, Impl::make_iter_space(work_count), std::forward< Functor >(functor), std::forward< Reducer >(reducer)))) -> decltype(stdexec::__closure(*this, Impl::make_iter_space(work_count), std::forward< Functor >(functor), std::forward< Reducer >(reducer)))
template<stdexec::sender Sndr, typename Functor, typename ExecPolicyOrIterSpace, typename Reducer, typename... Properties>
requires Impl::execution_policy_or_iteration_space<std::remove_cvref_t<ExecPolicyOrIterSpace>>
constexpr auto operator() (Sndr &&sndr, ExecPolicyOrIterSpace &&policy_or_iter_space, Functor &&functor, Reducer &&reducer, Properties &&... properties) const noexcept(noexcept(Impl::ParallelReduceSender< Sndr, parallel_reduce_data_t< Functor, ExecPolicyOrIterSpace, Reducer, Properties... > >{{ parallel_reduce_t{}, parallel_reduce_data_t< Functor, ExecPolicyOrIterSpace, Reducer, Properties... >{ std::forward< Properties >(properties)..., std::forward< Functor >(functor), std::forward< ExecPolicyOrIterSpace >(policy_or_iter_space), std::forward< Reducer >(reducer)}, std::forward< Sndr >(sndr) }})) -> Impl::ParallelReduceSender< Sndr, parallel_reduce_data_t< Functor, ExecPolicyOrIterSpace, Reducer, Properties... > >

Detailed Description

Custom algorithm for the Kokkos::parallel_reduce construct.

Definition at line 51 of file parallel_reduce.hpp.

Member Typedef Documentation

◆ parallel_reduce_data_t

template<typename Functor, typename ExecPolicyOrIterSpace, typename Reducer, typename... Properties>
using Kokkos::Execution::parallel_reduce_t::parallel_reduce_data_t
Initial value:
std::remove_cvref_t<Functor>,
std::remove_cvref_t<ExecPolicyOrIterSpace>,
std::remove_cvref_t<Reducer>,
std::remove_cvref_t<Properties>...
>

Definition at line 93 of file parallel_reduce.hpp.

Member Function Documentation

◆ operator()() [1/5]

template<typename Functor, std::integral T, typename Reducer>
auto Kokkos::Execution::parallel_reduce_t::operator() ( const T work_count,
Functor && functor,
Reducer && reducer ) const -> decltype(stdexec::__closure( *this, Impl::make_iter_space(work_count), std::forward< Functor >(functor), std::forward< Reducer >(reducer)))
inlineconstexprnoexcept

Definition at line 85 of file parallel_reduce.hpp.

References Kokkos::Execution::Impl::make_iter_space().

◆ operator()() [2/5]

template<typename ExecPolicyOrIterSpace, typename Functor, typename Reducer>
requires Impl::execution_policy_or_iteration_space<std::remove_cvref_t<ExecPolicyOrIterSpace>>
auto Kokkos::Execution::parallel_reduce_t::operator() ( ExecPolicyOrIterSpace && policy_or_iter_space,
Functor && functor,
Reducer && reducer ) const -> decltype(stdexec::__closure( *this, std::forward< ExecPolicyOrIterSpace >(policy_or_iter_space), std::forward< Functor >(functor), std::forward< Reducer >(reducer)))
inlineconstexprnoexcept

Definition at line 65 of file parallel_reduce.hpp.

◆ operator()() [3/5]

template<typename Label, typename Functor, std::integral T, typename Reducer>
requires Impl::label<std::remove_cvref_t<Label>>
auto Kokkos::Execution::parallel_reduce_t::operator() ( Label && label,
const T work_count,
Functor && functor,
Reducer && reducer ) const -> decltype(stdexec::__closure( *this, Impl::make_iter_space(work_count), std::forward< Functor >(functor), std::forward< Reducer >(reducer), Impl::Label{std::forward< Label >(label)}))
inlineconstexprnoexcept

◆ operator()() [4/5]

template<typename Label, typename Functor, typename ExecPolicy, typename Reducer>
requires (Impl::label<std::remove_cvref_t<Label>> && Kokkos::ExecutionPolicy<std::remove_cvref_t<ExecPolicy>>)
auto Kokkos::Execution::parallel_reduce_t::operator() ( Label && label,
ExecPolicy && policy,
Functor && functor,
Reducer && reducer ) const -> decltype(stdexec::__closure( *this, std::forward< ExecPolicy >(policy), std::forward< Functor >(functor), std::forward< Reducer >(reducer), Impl::Label{std::forward< Label >(label)}))
inlineconstexprnoexcept

Definition at line 55 of file parallel_reduce.hpp.

References Kokkos::Execution::label().

◆ operator()() [5/5]

template<stdexec::sender Sndr, typename Functor, typename ExecPolicyOrIterSpace, typename Reducer, typename... Properties>
requires Impl::execution_policy_or_iteration_space<std::remove_cvref_t<ExecPolicyOrIterSpace>>
auto Kokkos::Execution::parallel_reduce_t::operator() ( Sndr && sndr,
ExecPolicyOrIterSpace && policy_or_iter_space,
Functor && functor,
Reducer && reducer,
Properties &&... properties ) const -> Impl::ParallelReduceSender< Sndr, parallel_reduce_data_t< Functor, ExecPolicyOrIterSpace, Reducer, Properties... > >
inlineconstexprnoexcept

Definition at line 108 of file parallel_reduce.hpp.

References KOKKOS_EXECUTION_RETURNS_BRACED.


The documentation for this struct was generated from the following file: