2020
2121#include " common.cuh"
2222#include " stdexec/execution.hpp"
23- #include " exec/on.hpp"
2423
24+ namespace ex = stdexec;
2525
2626#if defined(_NVHPC_CUDA) || defined(__CUDACC__)
2727# include " nvexec/detail/throw_on_cuda_error.cuh"
3030#else
3131namespace nvexec {
3232 struct stream_receiver_base {
33- using receiver_concept = stdexec ::receiver_t ;
33+ using receiver_concept = ex ::receiver_t ;
3434 };
3535
3636 struct stream_sender_base {
37- using sender_concept = stdexec ::sender_t ;
37+ using sender_concept = ex ::sender_t ;
3838 };
3939
4040 namespace detail {
4141 struct stream_op_state_base { };
4242 } // namespace detail
4343
44- inline bool is_on_gpu () {
44+ inline auto is_on_gpu () -> bool {
4545 return false ;
4646 }
4747} // namespace nvexec
@@ -73,13 +73,13 @@ namespace nvexec::_strm::repeat_n {
7373 op_state_.i_ ++;
7474
7575 if (op_state_.i_ == op_state_.n_ ) {
76- op_state_.propagate_completion_signal (stdexec ::set_value);
76+ op_state_.propagate_completion_signal (ex ::set_value);
7777 return ;
7878 }
7979
80- auto sch = stdexec ::get_scheduler (stdexec ::get_env (op_state_.rcvr_ ));
80+ auto sch = ex ::get_scheduler (ex ::get_env (op_state_.rcvr_ ));
8181 inner_op_state_t & inner_op_state = op_state_.inner_op_state_ .emplace (
82- stdexec ::__emplace_from{[&]() noexcept {
82+ ex ::__emplace_from{[&]() noexcept {
8383 return ex::connect (ex::schedule (sch) | op_state_.closure_ , receiver_2_t <OpT>{op_state_});
8484 }});
8585
@@ -115,9 +115,9 @@ namespace nvexec::_strm::repeat_n {
115115 using inner_op_state_t = typename OpT::inner_op_state_t ;
116116
117117 if (op_state_.n_ ) {
118- auto sch = stdexec ::get_scheduler (stdexec ::get_env (op_state_.rcvr_ ));
118+ auto sch = ex ::get_scheduler (ex ::get_env (op_state_.rcvr_ ));
119119 inner_op_state_t & inner_op_state = op_state_.inner_op_state_ .emplace (
120- stdexec ::__emplace_from{[&]() noexcept {
120+ ex ::__emplace_from{[&]() noexcept {
121121 return ex::connect (
122122 ex::schedule (sch) | op_state_.closure_ , receiver_2_t <OpT>{op_state_});
123123 }});
@@ -148,10 +148,10 @@ namespace nvexec::_strm::repeat_n {
148148
149149 template <class PredecessorSenderId , class Closure , class ReceiverId >
150150 struct operation_state_t : operation_state_base_t <ReceiverId> {
151- using PredSender = stdexec ::__t <PredecessorSenderId>;
152- using Receiver = stdexec ::__t <ReceiverId>;
153- using Scheduler = std::invoke_result_t <stdexec ::get_scheduler_t , stdexec ::env_of_t <Receiver>>;
154- using InnerSender = std::invoke_result_t <Closure, stdexec ::schedule_result_t <Scheduler>>;
151+ using PredSender = ex ::__t <PredecessorSenderId>;
152+ using Receiver = ex ::__t <ReceiverId>;
153+ using Scheduler = std::invoke_result_t <ex ::get_scheduler_t , ex ::env_of_t <Receiver>>;
154+ using InnerSender = std::invoke_result_t <Closure, ex ::schedule_result_t <Scheduler>>;
155155
156156 using predecessor_op_state_t =
157157 ex::connect_result_t <PredSender, receiver_1_t <operation_state_t >>;
@@ -168,25 +168,25 @@ namespace nvexec::_strm::repeat_n {
168168 if (this ->stream_provider_ .status_ != cudaSuccess) {
169169 // Couldn't allocate memory for operation state, complete with error
170170 this ->propagate_completion_signal (
171- stdexec ::set_error, std::move (this ->stream_provider_ .status_ ));
171+ ex ::set_error, std::move (this ->stream_provider_ .status_ ));
172172 } else {
173173 if (n_) {
174- stdexec ::start (*pred_op_state_);
174+ ex ::start (*pred_op_state_);
175175 } else {
176- this ->propagate_completion_signal (stdexec ::set_value);
176+ this ->propagate_completion_signal (ex ::set_value);
177177 }
178178 }
179179 }
180180
181181 operation_state_t (PredSender&& pred_sender, Closure closure, Receiver&& rcvr, std::size_t n)
182182 : operation_state_base_t <ReceiverId>(
183183 static_cast <Receiver&&>(rcvr),
184- stdexec ::get_completion_scheduler<stdexec ::set_value_t >(stdexec ::get_env(pred_sender))
184+ ex ::get_completion_scheduler<ex ::set_value_t >(ex ::get_env(pred_sender))
185185 .context_state_)
186186 , pred_sender_{static_cast <PredSender&&>(pred_sender)}
187187 , closure_(closure)
188188 , n_(n) {
189- pred_op_state_.emplace (stdexec ::__emplace_from{[&]() noexcept {
189+ pred_op_state_.emplace (ex ::__emplace_from{[&]() noexcept {
190190 return ex::connect (static_cast <PredSender&&>(pred_sender_), receiver_1_t {*this });
191191 }});
192192 }
@@ -204,21 +204,21 @@ namespace repeat_n_detail {
204204 OpT& op_state_;
205205
206206 public:
207- using receiver_concept = stdexec ::receiver_t ;
207+ using receiver_concept = ex ::receiver_t ;
208208
209209 void set_value () noexcept {
210210 using inner_op_state_t = typename OpT::inner_op_state_t ;
211211
212212 op_state_.i_ ++;
213213
214214 if (op_state_.i_ == op_state_.n_ ) {
215- stdexec ::set_value (std::move (op_state_.rcvr_ ));
215+ ex ::set_value (std::move (op_state_.rcvr_ ));
216216 return ;
217217 }
218218
219- auto sch = stdexec ::get_scheduler (stdexec ::get_env (op_state_.rcvr_ ));
219+ auto sch = ex ::get_scheduler (ex ::get_env (op_state_.rcvr_ ));
220220 inner_op_state_t & inner_op_state = op_state_.inner_op_state_ .emplace (
221- stdexec ::__emplace_from{[&]() noexcept {
221+ ex ::__emplace_from{[&]() noexcept {
222222 return ex::connect (ex::schedule (sch) | op_state_.closure_ , receiver_2_t <OpT>{op_state_});
223223 }});
224224
@@ -227,16 +227,16 @@ namespace repeat_n_detail {
227227
228228 template <class Error >
229229 void set_error (Error&& err) noexcept {
230- stdexec ::set_error (std::move (op_state_.rcvr_ ), static_cast <Error&&>(err));
230+ ex ::set_error (std::move (op_state_.rcvr_ ), static_cast <Error&&>(err));
231231 }
232232
233233 void set_stopped () noexcept {
234- stdexec ::set_stopped (std::move (op_state_.rcvr_ ));
234+ ex ::set_stopped (std::move (op_state_.rcvr_ ));
235235 }
236236
237237 [[nodiscard]]
238- auto get_env () const noexcept -> stdexec ::env_of_t<Receiver> {
239- return stdexec ::get_env (op_state_.rcvr_ );
238+ auto get_env () const noexcept -> ex ::env_of_t<Receiver> {
239+ return ex ::get_env (op_state_.rcvr_ );
240240 }
241241
242242 explicit receiver_2_t (OpT& op_state)
@@ -251,37 +251,37 @@ namespace repeat_n_detail {
251251 OpT& op_state_;
252252
253253 public:
254- using receiver_concept = stdexec ::receiver_t ;
254+ using receiver_concept = ex ::receiver_t ;
255255
256256 void set_value () noexcept {
257257 using inner_op_state_t = typename OpT::inner_op_state_t ;
258258
259259 if (op_state_.n_ ) {
260- auto sch = stdexec ::get_scheduler (stdexec ::get_env (op_state_.rcvr_ ));
260+ auto sch = ex ::get_scheduler (ex ::get_env (op_state_.rcvr_ ));
261261 inner_op_state_t & inner_op_state = op_state_.inner_op_state_ .emplace (
262- stdexec ::__emplace_from{[&]() noexcept {
262+ ex ::__emplace_from{[&]() noexcept {
263263 return ex::connect (
264264 ex::schedule (sch) | op_state_.closure_ , receiver_2_t <OpT>{op_state_});
265265 }});
266266
267267 ex::start (inner_op_state);
268268 } else {
269- stdexec ::set_value (std::move (op_state_.rcvr_ ));
269+ ex ::set_value (std::move (op_state_.rcvr_ ));
270270 }
271271 }
272272
273273 template <class Error >
274274 void set_error (Error&& err) noexcept {
275- stdexec ::set_error (std::move (op_state_.rcvr_ ), static_cast <Error&&>(err));
275+ ex ::set_error (std::move (op_state_.rcvr_ ), static_cast <Error&&>(err));
276276 }
277277
278278 void set_stopped () noexcept {
279- stdexec ::set_stopped (std::move (op_state_.rcvr_ ));
279+ ex ::set_stopped (std::move (op_state_.rcvr_ ));
280280 }
281281
282282 [[nodiscard]]
283- auto get_env () const noexcept -> stdexec ::env_of_t<Receiver> {
284- return stdexec ::get_env (op_state_.rcvr_ );
283+ auto get_env () const noexcept -> ex ::env_of_t<Receiver> {
284+ return ex ::get_env (op_state_.rcvr_ );
285285 }
286286
287287 explicit receiver_1_t (OpT& op_state)
@@ -291,10 +291,10 @@ namespace repeat_n_detail {
291291
292292 template <class PredecessorSenderId , class Closure , class ReceiverId >
293293 struct operation_state_t {
294- using PredSender = stdexec ::__t <PredecessorSenderId>;
295- using Receiver = stdexec ::__t <ReceiverId>;
296- using Scheduler = std::invoke_result_t <stdexec ::get_scheduler_t , stdexec ::env_of_t <Receiver>>;
297- using InnerSender = std::invoke_result_t <Closure, stdexec ::schedule_result_t <Scheduler>>;
294+ using PredSender = ex ::__t <PredecessorSenderId>;
295+ using Receiver = ex ::__t <ReceiverId>;
296+ using Scheduler = std::invoke_result_t <ex ::get_scheduler_t , ex ::env_of_t <Receiver>>;
297+ using InnerSender = std::invoke_result_t <Closure, ex ::schedule_result_t <Scheduler>>;
298298
299299 using predecessor_op_state_t =
300300 ex::connect_result_t <PredSender, receiver_1_t <operation_state_t >>;
@@ -310,9 +310,9 @@ namespace repeat_n_detail {
310310
311311 void start () & noexcept {
312312 if (n_) {
313- stdexec ::start (*pred_op_state_);
313+ ex ::start (*pred_op_state_);
314314 } else {
315- stdexec ::set_value (std::move (rcvr_));
315+ ex ::set_value (std::move (rcvr_));
316316 }
317317 }
318318
@@ -321,7 +321,7 @@ namespace repeat_n_detail {
321321 , closure_(closure)
322322 , rcvr_(rcvr)
323323 , n_(n) {
324- pred_op_state_.emplace (stdexec ::__emplace_from{[&]() noexcept {
324+ pred_op_state_.emplace (ex ::__emplace_from{[&]() noexcept {
325325 return ex::connect (static_cast <PredSender&&>(pred_sender_), receiver_1_t {*this });
326326 }});
327327 }
@@ -331,16 +331,16 @@ namespace repeat_n_detail {
331331 struct repeat_n_sender_t {
332332 using __t = repeat_n_sender_t ;
333333 using __id = repeat_n_sender_t ;
334- using Sender = stdexec ::__t <SenderId>;
335- using sender_concept = stdexec ::sender_t ;
334+ using Sender = ex ::__t <SenderId>;
335+ using sender_concept = ex ::sender_t ;
336336
337- using completion_signatures = stdexec ::completion_signatures<
338- stdexec ::set_value_t (),
339- stdexec ::set_stopped_t (),
340- stdexec ::set_error_t (std::exception_ptr)
337+ using completion_signatures = ex ::completion_signatures<
338+ ex ::set_value_t (),
339+ ex ::set_stopped_t (),
340+ ex ::set_error_t (std::exception_ptr)
341341#if defined(_NVHPC_CUDA) || defined(__CUDACC__)
342342 ,
343- stdexec ::set_error_t (cudaError_t)
343+ ex ::set_error_t (cudaError_t)
344344#endif
345345 >;
346346
@@ -349,50 +349,50 @@ namespace repeat_n_detail {
349349 std::size_t n_{};
350350
351351#if defined(_NVHPC_CUDA) || defined(__CUDACC__)
352- template <stdexec ::__decays_to<repeat_n_sender_t > Self, stdexec ::receiver Receiver>
353- requires (stdexec ::sender_to<Sender, Receiver>)
352+ template <ex ::__decays_to<repeat_n_sender_t > Self, ex ::receiver Receiver>
353+ requires (ex ::sender_to<Sender, Receiver>)
354354 && (!nvexec::_strm::receiver_with_stream_env<Receiver>)
355- friend auto tag_invoke(stdexec ::connect_t , Self&& self, Receiver r)
356- -> repeat_n_detail::operation_state_t<SenderId, Closure, stdexec ::__id<Receiver>> {
357- return repeat_n_detail::operation_state_t <SenderId, Closure, stdexec ::__id<Receiver>>(
355+ friend auto tag_invoke(ex ::connect_t , Self&& self, Receiver r)
356+ -> repeat_n_detail::operation_state_t<SenderId, Closure, ex ::__id<Receiver>> {
357+ return repeat_n_detail::operation_state_t <SenderId, Closure, ex ::__id<Receiver>>(
358358 static_cast <Sender&&>(self.sender_ ), self.closure_ , static_cast <Receiver&&>(r), self.n_ );
359359 }
360360
361- template <stdexec ::__decays_to<repeat_n_sender_t > Self, stdexec ::receiver Receiver>
362- requires (stdexec ::sender_to<Sender, Receiver>)
361+ template <ex ::__decays_to<repeat_n_sender_t > Self, ex ::receiver Receiver>
362+ requires (ex ::sender_to<Sender, Receiver>)
363363 && (nvexec::_strm::receiver_with_stream_env<Receiver>)
364- friend auto tag_invoke(stdexec ::connect_t , Self&& self, Receiver r)
365- -> nvexec::_strm::repeat_n::operation_state_t<SenderId, Closure, stdexec ::__id<Receiver>> {
366- return nvexec::_strm::repeat_n::operation_state_t <SenderId, Closure, stdexec ::__id<Receiver>>(
364+ friend auto tag_invoke(ex ::connect_t , Self&& self, Receiver r)
365+ -> nvexec::_strm::repeat_n::operation_state_t<SenderId, Closure, ex ::__id<Receiver>> {
366+ return nvexec::_strm::repeat_n::operation_state_t <SenderId, Closure, ex ::__id<Receiver>>(
367367 static_cast <Sender&&>(self.sender_ ), self.closure_ , static_cast <Receiver&&>(r), self.n_ );
368368 }
369369#else
370- template <stdexec ::__decays_to<repeat_n_sender_t > Self, stdexec ::receiver Receiver>
371- requires stdexec ::sender_to<Sender, Receiver>
372- friend auto tag_invoke (stdexec ::connect_t , Self&& self, Receiver r)
373- -> repeat_n_detail::operation_state_t<SenderId, Closure, stdexec ::__id<Receiver>> {
374- return repeat_n_detail::operation_state_t <SenderId, Closure, stdexec ::__id<Receiver>>(
370+ template <ex ::__decays_to<repeat_n_sender_t > Self, ex ::receiver Receiver>
371+ requires ex ::sender_to<Sender, Receiver>
372+ friend auto tag_invoke (ex ::connect_t , Self&& self, Receiver r)
373+ -> repeat_n_detail::operation_state_t<SenderId, Closure, ex ::__id<Receiver>> {
374+ return repeat_n_detail::operation_state_t <SenderId, Closure, ex ::__id<Receiver>>(
375375 static_cast <Sender&&>(self.sender_ ), self.closure_ , static_cast <Receiver&&>(r), self.n_ );
376376 }
377377#endif
378378
379- auto get_env () const noexcept -> stdexec ::env_of_t<const Sender&> {
380- return stdexec ::get_env (sender_);
379+ auto get_env () const noexcept -> ex ::env_of_t<const Sender&> {
380+ return ex ::get_env (sender_);
381381 }
382382 };
383383} // namespace repeat_n_detail
384384
385385struct repeat_n_t {
386- template <stdexec ::sender Sender, stdexec ::__sender_adaptor_closure Closure>
386+ template <ex ::sender Sender, ex ::__sender_adaptor_closure Closure>
387387 auto operator ()(Sender&& __sndr, std::size_t n, Closure closure) const noexcept
388- -> repeat_n_detail::repeat_n_sender_t<stdexec ::__id<Sender>, Closure> {
389- return repeat_n_detail::repeat_n_sender_t <stdexec ::__id<Sender>, Closure>{
388+ -> repeat_n_detail::repeat_n_sender_t<ex ::__id<Sender>, Closure> {
389+ return repeat_n_detail::repeat_n_sender_t <ex ::__id<Sender>, Closure>{
390390 std::forward<Sender>(__sndr), closure, n};
391391 }
392392
393- template <stdexec ::__sender_adaptor_closure Closure>
393+ template <ex ::__sender_adaptor_closure Closure>
394394 auto operator ()(std::size_t n, Closure closure) const
395- -> stdexec ::__binder_back<repeat_n_t, std::size_t, Closure> {
395+ -> ex ::__binder_back<repeat_n_t, std::size_t, Closure> {
396396 return {
397397 {n, static_cast <Closure&&>(closure)},
398398 {},
@@ -406,8 +406,8 @@ inline constexpr repeat_n_t repeat_n{};
406406template <class SchedulerT >
407407[[nodiscard]]
408408auto is_gpu_scheduler (SchedulerT&& scheduler) -> bool {
409- auto snd = ex::just () | exec ::on (scheduler, ex::then ([] { return nvexec::is_on_gpu (); }));
410- auto [on_gpu] = stdexec ::sync_wait (std::move (snd)).value ();
409+ auto snd = ex::just () | ex ::on (scheduler, ex::then ([] { return nvexec::is_on_gpu (); }));
410+ auto [on_gpu] = ex ::sync_wait (std::move (snd)).value ();
411411 return on_gpu;
412412}
413413
@@ -417,9 +417,9 @@ auto maxwell_eqs_snr(
417417 bool write_results,
418418 std::size_t n_iterations,
419419 fields_accessor accessor,
420- stdexec ::scheduler auto && computer) {
420+ ex ::scheduler auto && computer) {
421421 return ex::just ()
422- | exec ::on (
422+ | ex ::on (
423423 computer,
424424 repeat_n (
425425 n_iterations,
@@ -434,18 +434,18 @@ void run_snr(
434434 std::size_t n_iterations,
435435 grid_t & grid,
436436 std::string_view scheduler_name,
437- stdexec ::scheduler auto && computer) {
437+ ex ::scheduler auto && computer) {
438438 time_storage_t time{is_gpu_scheduler (computer)};
439439 fields_accessor accessor = grid.accessor ();
440440
441441 auto init = ex::just ()
442- | exec ::on (computer, ex::bulk (ex::par, grid.cells , grid_initializer (dt, accessor)));
443- stdexec ::sync_wait (init);
442+ | ex ::on (computer, ex::bulk (ex::par, grid.cells , grid_initializer (dt, accessor)));
443+ ex ::sync_wait (init);
444444
445445 auto snd = maxwell_eqs_snr (dt, time.get (), write_vtk, n_iterations, accessor, computer);
446446
447447 report_performance (grid.cells , n_iterations, scheduler_name, [&snd] {
448- stdexec ::sync_wait (std::move (snd));
448+ ex ::sync_wait (std::move (snd));
449449 });
450450}
451451
0 commit comments