32 using policy_t = Kokkos::RangePolicy<TEST_EXECUTION_SPACE>;
45 static_assert(std::derived_from<op_state_t, Kokkos::Execution::Impl::Immovable>);
46 static_assert(!std::move_constructible<op_state_t>);
47 static_assert(!std::is_move_assignable_v<op_state_t>);
49 static_assert(!std::copy_constructible<op_state_t>);
50 static_assert(!std::is_copy_assignable_v<op_state_t>);
62 stdexec::schedule(std::declval<typename OpStateTest::context_t>().get_scheduler()),
64 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
67 static_assert(!std::is_const_v<sndr_t>);
70 using op_state_from_sndr_const_ref_t = stdexec::connect_result_t<const sndr_t&, Tests::Utils::SinkReceiver>;
72 static_assert(std::same_as<
73 op_state_from_sndr_const_ref_t,
80 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
91 constexpr size_t size = 10;
93 const view_s_t witness(Kokkos::view_alloc(
exec,
"witness - shared space"));
109 ASSERT_EQ(witness(), size / 2 * (size - 1) - 1);
116 stdexec::schedule(std::declval<typename OpStateTest::context_t>().get_scheduler()),
118 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
120 "hello again from pfor",
121 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
124 using op_state_t = stdexec::connect_result_t<sndr_t&&, Tests::Utils::SinkReceiver>;
129 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
134 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
137 static_assert(std::same_as<
147 static_assert(!std::is_nothrow_constructible_v<op_state_t, sndr_t, Tests::Utils::SinkReceiver, clsr_0_t, clsr_1_t>);
149 static_assert(stdexec::__tuple_size_v<typename op_state_t::closures_t> == 2);
160 stdexec::schedule(std::declval<typename OpStateTest::context_t>().get_scheduler()),
162 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
164 "hello again from pfor",
165 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
167 "hello one more time from pfor",
168 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>(0, 10),
171 using op_state_t = stdexec::connect_result_t<sndr_t&&, Tests::Utils::SinkReceiver>;
176 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
181 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
186 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
189 static_assert(std::same_as<
201 !std::is_nothrow_constructible_v<op_state_t, sndr_t, Tests::Utils::SinkReceiver, clsr_0_t, clsr_1_t, clsr_2_t>);
203 static_assert(stdexec::__tuple_size_v<typename op_state_t::closures_t> == 3);
211 using sndr_t =
decltype(stdexec::then(
214 stdexec::schedule(std::declval<typename OpStateTest::context_t>().get_scheduler()),
216 Kokkos::RangePolicy<TEST_EXECUTION_SPACE, Kokkos::IndexType<size_t>>(0, 10),
223 using op_state_t = stdexec::connect_result_t<sndr_t&&, Tests::Utils::SinkReceiver>;
228 Kokkos::RangePolicy<TEST_EXECUTION_SPACE, Kokkos::IndexType<size_t>>
233 Kokkos::RangePolicy<TEST_EXECUTION_SPACE>
238 Kokkos::RangePolicy<TEST_EXECUTION_SPACE, Kokkos::LaunchBounds<1>>
241 static_assert(std::same_as<
253 !std::is_nothrow_constructible_v<op_state_t, sndr_t, Tests::Utils::SinkReceiver, clsr_0_t, clsr_1_t, clsr_2_t>);
255 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.