NVIDIA/stdexec

is latest sync_wait() broken?

weilewei opened this issue · 5 comments

I cannot compile examples with latest stdexec as of today Nov 20. See the simple hello world example using the latest stdexec library. https://godbolt.org/z/q461foj41. It would work if not pulling the latest stdexec version. Thanks.

maikel commented

The readme states

If using stdexec from GitHub, then nvc++ 23.3 is required.

Can you try to update your toolchain and report whether this works?

yes, the simple hello world program works with 23.7 locally in my machine. The godbolt has some issue with stdexec when nvc++ >= 23.1.

but in a more complicated example, I got the following error after weekend's commits. and my code is here: https://github.com/NERSC/hpcpp/blob/main/apps/heat-equation/heat-equation-stdexec.cpp

"/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__basic_sender.hpp", line 162: error: no instance of function template "stdexec::__sexpr<_ImplFn>::apply [with _ImplFn=lambda [](_Cvref, _Fun &&) mutable->decltype(())]" matches the argument list
argument types are: (stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__get_data)
object type is: stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>
return __sndr.apply((_Sender&&) __sndr, __get_data());
^
detected during:
instantiation of "decltype(auto) stdexec::__detail::__default_basis_ops::get_state(_Sender &&, _Receiver &) [with _Sender=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 186
instantiation of type "stdexec::__detail::__state_type_t<stdexec::__just::just_t, stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t>" at line 226
instantiation of class "stdexec::__detail::__op_base<_Sexpr, _Receiver> [with _Sexpr=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 299
instantiation of class "stdexec::__detail::__op_state<_Sexpr, _Receiver> [with _Sexpr=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 409
instantiation of "stdexec::tag_invoke" based on template arguments <stdexec::__connect::connect_t, stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t> at line 6793 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/execution.hpp"
instantiation of "auto stdexec::__sync_wait::__diagnose_error<_Sender>() [with _Sender=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>]" at line 119 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/heat-equation-stdexec.cpp"
instantiation of "void heat_equation(stdexec::scheduler auto, Real_t *, Real_t *, Real_t *, Real_t, Real_t, int, int, bool) [with =exec::static_thread_pool::scheduler]" at line 169 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/heat-equation-stdexec.cpp"

"/opt/cray/pe/gcc/12.2.0/snos/include/g++/type_traits", line 2199: error: incomplete type is not allowed
typedef typename __decay_selector<__remove_type>::__type type;
^
detected during:
instantiation of class "std::decay<_Tp> [with _Tp=]" at line 2610
instantiation of type "std::decay_t<>" at line 37 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__type_traits.hpp"
instantiation of type "stdexec::__decay_t<>" at line 186 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__basic_sender.hpp"
instantiation of type "stdexec::__detail::__state_type_t<stdexec::__just::just_t, stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t>" at line 226 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__basic_sender.hpp"
instantiation of class "stdexec::__detail::__op_base<_Sexpr, _Receiver> [with _Sexpr=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 299 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__basic_sender.hpp"
instantiation of class "stdexec::__detail::__op_state<_Sexpr, _Receiver> [with _Sexpr=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 409 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__basic_sender.hpp"
instantiation of "stdexec::tag_invoke" based on template arguments <stdexec::__connect::connect_t, stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t> at line 6793 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/execution.hpp"
instantiation of "auto stdexec::__sync_wait::__diagnose_error<_Sender>() [with _Sender=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>]" at line 119 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/heat-equation-stdexec.cpp"
instantiation of "void heat_equation(stdexec::scheduler auto, Real_t *, Real_t *, Real_t *, Real_t, Real_t, int, int, bool) [with =exec::static_thread_pool::scheduler]" at line 169 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/heat-equation-stdexec.cpp"

"/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__basic_sender.hpp", line 162: error: no instance of function template "stdexec::__sexpr<_ImplFn>::apply [with _ImplFn=lambda [](_Cvref, _Fun &&) mutable->decltype(())]" matches the argument list
argument types are: (stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__get_data)
object type is: stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>
return __sndr.apply((_Sender&&) __sndr, __get_data());
^
detected during:
instantiation of "decltype(auto) stdexec::__detail::__default_basis_ops::get_state(_Sender &&, _Receiver &) [with _Sender=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 186
instantiation of type "stdexec::__detail::__state_type_t<stdexec::__just::just_t, stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t>" at line 226
instantiation of class "stdexec::__detail::__op_base<_Sexpr, _Receiver> [with _Sexpr=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 299
instantiation of class "stdexec::__detail::__op_state<_Sexpr, _Receiver> [with _Sexpr=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 409
instantiation of "stdexec::tag_invoke" based on template arguments <stdexec::__connect::connect_t, stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t> at line 328 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__meta.hpp"
[ 2 instantiation contexts not shown ]
instantiation of type "stdexec::__call_result_t<stdexec::__connect::connect_t, stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>" at line 130 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__execution_fwd.hpp"
instantiation of type "stdexec::connect_result_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>" at line 247 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/../../include/repeat_n/repeat_n.cuh"
instantiation of class "repeat_n_detail::operation_state_t<SenderId, Closure, ReceiverId> [with SenderId=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, Closure=stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, ReceiverId=stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>]" at line 6793 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/execution.hpp"
instantiation of "auto stdexec::__sync_wait::__diagnose_error<_Sender>() [with _Sender=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>]" at line 119 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/heat-equation-stdexec.cpp"
instantiation of "void heat_equation(stdexec::scheduler auto, Real_t *, Real_t *, Real_t *, Real_t, Real_t, int, int, bool) [with =exec::static_thread_pool::scheduler]" at line 169 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/heat-equation-stdexec.cpp"

"/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/__detail/__basic_sender.hpp", line 308: error: no instance of function template "stdexec::__sexpr<_ImplFn>::apply [with _ImplFn=lambda [](_Cvref, _Fun &&) mutable->decltype(())]" matches the argument list
argument types are: (stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__connect_fn<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t>)
object type is: stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>
return __sexpr.apply((_Sexpr&&) __sexpr, __connect_t{__self});
^
detected during:
instantiation of "auto stdexec::__detail::__op_state<_Sexpr, _Receiver>::__connect(stdexec::__detail::__op_state<_Sexpr, _Receiver> *, _Sexpr &&)->stdexec::__call_result_t<stdexec::__detail::__impl_of<_Sexpr>, stdexec::__copy_cvref_fn<_Sexpr>, stdexec::__detail::__op_state<_Sexpr, _Receiver>::__connect_t> [with _Sexpr=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 322
instantiation of "stdexec::__detail::__op_state<_Sexpr, _Receiver>::__op_state(_Sexpr &&, _Receiver) [with _Sexpr=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 168
instantiation of "auto stdexec::__detail::__default_basis_ops::connect(_Sender &&, _Receiver)->stdexec::__detail::__op_state<_Sender, _Receiver> [with _Sender=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 413
instantiation of "auto stdexec::tag_invoke(_Tag, _Self &&, _Receiver &&)->stdexec::__msecond<stdexec::__if_c<stdexec::__std_concepts::same_as<...>, void>, decltype(())> [with _Tag=stdexec::__connect::connect_t, _Self=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t]" at line 347 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/functional.hpp"
instantiation of "auto stdexec::__tag_invoke::tag_invoke_t::operator()(_Tag, _Args &&...) const->stdexec::__tag_invoke::tag_invoke_result_t<_Tag, _Args...> [with _Tag=stdexec::__connect::connect_t, _Args=<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__schedule_from::__receiver1<exec::static_thread_pool::scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_value_t>>, repeat_n_detail::receiver_t<repeat_n_detail::operation_state_t<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__closure::__compose<stdexec::__closure::__compose<stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__closure::__binder_back<stdexec::__bulk::bulk_t, int, lambda ->void>>, stdexec::__schedule_from::__receiver1<stdexec::__loop::run_loop::__scheduler::__id, stdexec::_Yp<std::variant<std::monostate, std::tuplestdexec::__receivers::set_stopped_t, std::tuple<stdexec::__receivers::set_error_t, std::__exception_ptr::exception_ptr>, std::tuple<stdexec::__receivers::set_error_t, cudaError_t>, std::tuplestdexec::__receivers::set_value_t>>, stdexec::__detail::__receiver_with<&stdexec::_write::__operation_base<stdexec::__sync_wait::__receiver<>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>>>>>, __env_t>::_rcvr, lambda [](auto *)->decltype(auto) noexcept{}>::__t>]" at line 2163 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/execution.hpp"
[ 38 instantiation contexts not shown ]
instantiation of "auto stdexec::tag_invoke(_Tag, _Self &&, _Receiver &&)->stdexec::__msecond<stdexec::__if_c<stdexec::__std_concepts::same_as<...>, void>, decltype(())> [with _Tag=stdexec::__connect::connect_t, _Self=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__sync_wait::__receiver<>::__t]" at line 347 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/functional.hpp"
instantiation of "auto stdexec::__tag_invoke::tag_invoke_t::operator()(_Tag, _Args &&...) const->stdexec::__tag_invoke::tag_invoke_result_t<_Tag, _Args...> [with _Tag=stdexec::__connect::connect_t, _Args=<stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, stdexec::__sync_wait::__receiver<>::__t>]" at line 2163 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/execution.hpp"
instantiation of "auto stdexec::__connect::connect_t::operator()(_Sender &&, _Receiver &&) const->stdexec::__call_result_t<stdexec::__connect::connect_t::__select_impl_t<_Sender, _Receiver>> [with _Sender=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>, _Receiver=stdexec::__sync_wait::__receiver<>::__t]" at line 6848 of "/global/homes/w/wwei/src/hpcpp/build_main/_deps/stdexec-src/include/stdexec/execution.hpp"
instantiation of "auto stdexec::__sync_wait::sync_wait_t::apply_sender(_Sender &&) const->std::optional<stdexec::__sync_wait::__sync_wait_result_t<_Sender>> [with _Sender=stdexec::__sexpr<lambda [](_Cvref, _Fun &&) mutable->decltype(())>]" at line 119 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/heat-equation-stdexec.cpp"
instantiation of "void heat_equation(stdexec::scheduler auto, Real_t *, Real_t *, Real_t *, Real_t, Real_t, int, int, bool) [with =exec::static_thread_pool::scheduler]" at line 169 of "/global/homes/w/wwei/src/hpcpp/apps/heat-equation/heat-equation-stdexec.cpp"

@weilewei is it possible for you to give us a self-contained repro of the issue? The bit of code you link to has dependencies on other parts of your app.

@ericniebler and @maikel, we found out the issue is on our end after some debugging. The fixes are 1) we forgot to enable CMAKE_GNU_EXTENSIONS and 2) some updates are needed for our local copy on repeat_n.cuh. details: NERSC/hpcpp#18.

I am closing issue.

from NERSC/hpcpp#18:

Probably a recent in stdexec fails compilation without GNU exts which triggered this

I would consider that a stdexec bug. we should have fallbacks for any language extensions we use. i'll investigate, thanks.