30 using policy_t = Kokkos::RangePolicy<TEST_EXECUTION_SPACE>;
43 static_assert(std::derived_from<op_state_t, Kokkos::Execution::Impl::Immovable>);
44 static_assert(!std::move_constructible<op_state_t>);
45 static_assert(!std::is_move_assignable_v<op_state_t>);
47 static_assert(!std::copy_constructible<op_state_t>);
48 static_assert(!std::is_copy_assignable_v<op_state_t>);
60 stdexec::schedule(std::declval<typename OpStateTest::context_t>().get_scheduler()),
62 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
65 static_assert(!std::is_const_v<sndr_t>);
68 using op_state_from_sndr_const_ref_t = stdexec::connect_result_t<const sndr_t&, Tests::Utils::SinkReceiver>;
70 static_assert(std::same_as<
71 op_state_from_sndr_const_ref_t,
78 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
89 constexpr size_t size = 10;
91 const view_s_t witness(Kokkos::view_alloc(
exec,
"witness - shared space"));
107 ASSERT_EQ(witness(), size / 2 * (size - 1) - 1);
114 stdexec::schedule(std::declval<typename OpStateTest::context_t>().get_scheduler()),
116 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
118 "hello again from pfor",
119 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
122 using op_state_t = stdexec::connect_result_t<sndr_t&&, Tests::Utils::SinkReceiver>;
127 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
132 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
135 static_assert(std::same_as<
145 static_assert(!std::is_nothrow_constructible_v<op_state_t, sndr_t, Tests::Utils::SinkReceiver, clsr_0_t, clsr_1_t>);
147 static_assert(stdexec::__tuple_size_v<typename op_state_t::closures_t> == 2);
158 stdexec::schedule(std::declval<typename OpStateTest::context_t>().get_scheduler()),
160 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
162 "hello again from pfor",
163 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
165 "hello one more time from pfor",
166 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
169 using op_state_t = stdexec::connect_result_t<sndr_t&&, Tests::Utils::SinkReceiver>;
174 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
179 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
184 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
187 static_assert(std::same_as<
199 !std::is_nothrow_constructible_v<op_state_t, sndr_t, Tests::Utils::SinkReceiver, clsr_0_t, clsr_1_t, clsr_2_t>);
201 static_assert(stdexec::__tuple_size_v<typename op_state_t::closures_t> == 3);
209 using sndr_t =
decltype(stdexec::then(
212 stdexec::schedule(std::declval<typename OpStateTest::context_t>().get_scheduler()),
214 Kokkos::RangePolicy<TEST_EXECUTION_SPACE, Kokkos::IndexType<size_t>>(0, 10),
221 using op_state_t = stdexec::connect_result_t<sndr_t&&, Tests::Utils::SinkReceiver>;
226 Kokkos::RangePolicy<TEST_EXECUTION_SPACE, Kokkos::IndexType<size_t>>
231 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
236 Kokkos::RangePolicy<TEST_EXECUTION_SPACE, Kokkos::LaunchBounds<1>>
239 static_assert(std::same_as<
251 !std::is_nothrow_constructible_v<op_state_t, sndr_t, Tests::Utils::SinkReceiver, clsr_0_t, clsr_1_t, clsr_2_t>);
253 static_assert(stdexec::__tuple_size_v<typename op_state_t::closures_t> == 3);
A stricter variant of stdexec::operation_state.
constexpr get_exec_t get_exec
constexpr parallel_for_t parallel_for
consteval bool test_op_state_flattened_from_three()
consteval bool test_op_state_traits()
constexpr bool test_op_state_passed_by_const_ref()
consteval bool test_op_state_flattened_from_two()
consteval bool test_op_state_flattened_from_three_mixed_tags()
auto get_scheduler() const noexcept -> ExecutionSpaceImpl::Scheduler< Exec >
Inspired by https://github.com/kokkos/kokkos/blob/69273c3a4e7b6adeb95066341ca201d62fe1e698/core/src/i...
decltype(stdexec::schedule(std::declval< scheduler_t >())) schedule_sender_t
Kokkos::View< value_t, Kokkos::SharedSpace > view_s_t
Kokkos::Execution::ExecutionSpaceContext< Exec > context_t
A receiver that can handle all completions and does nothing with them.