4#include "exec/fork_join.hpp"
5#include "exec/static_thread_pool.hpp"
35using namespace Kokkos::utils::callbacks;
53 const view_s_t data(Kokkos::view_alloc(
"data - shared space"));
55 experimental::execution::static_thread_pool pool{4};
59 stdexec::schedule(pool.get_scheduler())
61 | experimental::execution::fork_join(
69 | stdexec::continues_on(pool.get_scheduler())
72 ASSERT_EQ(data(), 0) <<
"Eager execution is not allowed.";
84 ASSERT_EQ(data(), 14);
93 const view_s_t data(Kokkos::view_alloc(
exec,
"data - shared space"));
97 auto sndr = stdexec::just() | stdexec::continues_on(esc.
get_scheduler())
98 | experimental::execution::fork_join(
102 static_assert(stdexec::__sender_for<
decltype(sndr), experimental::execution::fork_join_t>);
104 ASSERT_EQ(data(), 0) <<
"Eager execution is not allowed.";
109 ASSERT_THAT(recorded_events, [&]() {
111 return testing::ElementsAre(
119 return testing::ElementsAre(
127 ASSERT_EQ(data(), 2);
136 const view_s_t data(Kokkos::view_alloc(
exec,
"data - shared space"));
141 | experimental::execution::fork_join(
145 static_assert(stdexec::__sender_for<
decltype(sndr), experimental::execution::fork_join_t>);
147 ASSERT_EQ(data(), 0) <<
"Eager execution is not allowed.";
151 ASSERT_THAT(recorded_events, [&]() {
153 return testing::ElementsAre(
164 return testing::ElementsAre(
174 ASSERT_EQ(data(), 3);
constexpr std::string dispatch_label(const Exec &, const std::string_view label)
Get the dispatch label from Exec and label.
#define MATCHER_FOR_BEGIN_SINGLE(_exec_, _label_)
#define MATCHER_FOR_WAIT_EVENT(_record_event_variant_)
#define MATCHER_FOR_BEGIN_PFOR(_exec_, _label_)
#define MATCHER_FOR_RECORD_EVENT(_exec_)
#define MATCHER_FOR_BEGIN_FENCE(_exec_, _label_)
RecorderListener< EventDiscardMatcher< TEST_EXECUTION_SPACE >, BeginFenceEvent, BeginParallelForEvent, BeginSingleEvent, Kokkos::Execution::Impl::RecordEvent, Kokkos::Execution::Impl::WaitEvent > recorder_listener_t
#define KOKKOS_EXECUTION_THREADS_THROWS_ON_SYNC_WAIT_ASSERT_AND_SKIP(_sndr_)
#define KOKKOS_EXECUTION_STDEXEC_PRAGMA_DIAGNOSTIC_IGNORED
Basic list of ignored diagnostics when including anything from stdexec.
#define THEN_INCREMENT_ATOMIC(_scope_, _data_)
Same as THEN_INCREMENT, using Tests::Utils::atomic_fetch_add. // NOLINTNEXTLINE(cppcoreguidelines-mac...
auto record_sync_wait(Sndr &&sndr)
constexpr check_completion_scheduler_type_t< Tag, Schd > check_completion_scheduler_type
Matcher to filter out events that are just noise for tests.
auto get_scheduler() const noexcept -> ExecutionSpaceImpl::Scheduler< execution_space >
Event to be sent to Kokkos::utils::callbacks::dispatch when calling record.
Event to be sent to Kokkos::utils::callbacks::dispatch when calling wait.
Kokkos::View< value_t, Kokkos::SharedSpace > view_s_t
Kokkos::Execution::ExecutionSpaceContext< Exec > context_t
Load the value at data and check it is equal to prev. Then, add value to it.
#define BULK_SUM_INDICES(_size_, _data_)
Add a bulk using Tests::Utils::Functors::SumIndices. // NOLINTNEXTLINE(cppcoreguidelines-macro-usage)...