- changed title to bulk upcxx::rput with completions upcxx::source_cx::as_future() | upcxx::operation_cx::as_future() fails to compile
REGRESSION: bulk upcxx::rput with completions upcxx::source_cx::as_future() | upcxx::operation_cx::as_future() fails to compile
Issue #380
resolved
When building this reproducer (upcxx -O3 tmp.cpp):
#include <upcxx/upcxx.hpp>
int main(int argc, char **argv) {
uint8_t *src = NULL;
upcxx::global_ptr<uint8_t> dst;
upcxx::rput(src, dst, 3, upcxx::operation_cx::as_future() | upcxx::source_cx::as_future());
return 0;
}
I receive the following compile-time errors:
[jmg3@login4.summit upcxx_build]$ upcxx -O3 tmp.cpp
In file included from /gpfs/alpine/world-shared/csc296/summit/upcxx/gcc-8.1.1/2020.3.0/upcxx.O3.gasnet_seq.ibv/include/upcxx/copy.hpp:8,
from /gpfs/alpine/world-shared/csc296/summit/upcxx/gcc-8.1.1/2020.3.0/upcxx.O3.gasnet_seq.ibv/include/upcxx/upcxx.hpp:22,
from tmp.cpp:1:
/gpfs/alpine/world-shared/csc296/summit/upcxx/gcc-8.1.1/2020.3.0/upcxx.O3.gasnet_seq.ibv/include/upcxx/rput.hpp: In instantiation of 'void upcxx::detail::rput_src_handle_cb<Obj, Traits, true, op_is_handle>::add_op_suc(upcxx::backend::gasnet::handle_cb_successor, std::true_type) [with Obj = upcxx::detail::rput_obj<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, upcxx::detail::rput_traits<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, false> >; Traits = upcxx::detail::rput_traits<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, false>; bool op_is_handle = true; std::true_type = std::integral_constant<bool, true>]':
/gpfs/alpine/world-shared/csc296/summit/upcxx/gcc-8.1.1/2020.3.0/upcxx.O3.gasnet_seq.ibv/include/upcxx/rput.hpp:122:9: required from 'void upcxx::detail::rput_src_handle_cb<Obj, Traits, true, op_is_handle>::execute_and_delete(upcxx::backend::gasnet::handle_cb_successor) [with Obj = upcxx::detail::rput_obj<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, upcxx::detail::rput_traits<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, false> >; Traits = upcxx::detail::rput_traits<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, false>; bool op_is_handle = true]'
/gpfs/alpine/world-shared/csc296/summit/upcxx/gcc-8.1.1/2020.3.0/upcxx.O3.gasnet_seq.ibv/include/upcxx/rput.hpp:119:12: required from here
/gpfs/alpine/world-shared/csc296/summit/upcxx/gcc-8.1.1/2020.3.0/upcxx.O3.gasnet_seq.ibv/include/upcxx/rput.hpp:113:13: error: invalid static_cast from type 'upcxx::detail::rput_src_handle_cb<upcxx::detail::rput_obj<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, upcxx::detail::rput_traits<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, false> >, upcxx::detail::rput_traits<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, false>, true, true>*' to type 'upcxx::detail::rput_op_handle_cb<upcxx::detail::rput_obj<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, upcxx::detail::rput_traits<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, false> >, upcxx::detail::rput_traits<upcxx::completions<upcxx::future_cx<upcxx::operation_cx_event, (upcxx::progress_level)1>, upcxx::future_cx<upcxx::source_cx_event, (upcxx::progress_level)1> >, false>, true>*'
suc(static_cast<rput_op_handle_cb<Obj,Traits,true>*>(this));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Per discussion on slack, this appears to be a regression introduced with https://bitbucket.org/berkeleylab/upcxx/pull-requests/110.
Comments (7)
-
reporter -
- marked as blocker
- changed title to REGRESSION: bulk upcxx::rput with completions upcxx::source_cx::as_future() | upcxx::operation_cx::as_future() fails to compile
-
assigned issue to
- changed version to 2019.9.0 release
This regression first appeared in 2019.9.0.
We need @john bachan to look at this ASAP.
-
-
- changed status to resolved
- Added test/regression/issue380.cpp
- Fixed issue 380 where rput with source+operation cx failed to compile.
→ <<cset 8a7a9145ace7>>
-
Merge pull request #223 into develop
- issue380-fix: Update ChangeLog
- Added test/regression/issue380.cpp - Fixed issue 380 where rput with source+operation cx failed to compile.
→ <<cset d4cfe4d81820>>
-
- Added test/regression/issue380.cpp
- Fixed issue 380 where rput with source+operation cx failed to compile.
(cherry picked from commit 8a7a9145ace71fd10df40915d9778407311f1763)
→ <<cset df6271e75a82>>
-
Merging release upcxx-2020.3.2
- upcxx-2020.3: ChangeLog: update release date 2020.3.2 package version bumps Make future and serialization tests "full" upc++ ChangeLog cleanups Update ChangeLog
- Added test/regression/issue380.cpp - Fixed issue 380 where rput with source+operation cx failed to compile.
Fix issue 368. Needed to add a default constructor for bcast_payload_header in runtime.hpp since it has a union containing a non-trivially constructible member (std::atomic).
Add a Serialization example with an abstract base class
ChangeLog.md bugfix entry
Bugfix issue 369.
<completion>::as_future()
was typically leaking a small 56 byte heap struct per completion notification due to a refcount bungling indetail::persona_tls::fulfill_during_user_of_active()
. configure: search PATH for python3 and python2 configure: implement check_tool_path() Update ChangeLog Add issue371 test Fix issue 371: team_id's are not "universal" as documented Update ChangeLog Add issue343 test fix issue 343: ensure that default-construced team_id provide a unique invalid team_id Update ChangeLog Improve bad_shared_alloc to output shared heap status Add a test to demonstrate shared heap allocation failures Tweak shared heap allocation exceptions test/memberof.cpp: silence a harmless warning with -std=c++2a docs: revise Intel/libstdc++ recommendation bench/misc_perf: avoid C++20 deprecation warnings INSTALL.md: Clarify recommendations for using parallel make ChangeLog.md: list fix#356Fully qualifiedstd::foo
to::std::foo
in UPCXX_SERIALIZED_FOO macros. For members injected into user classes by UPCXX_SERIALIZED_* macros: This fixes issue 356 where non-public constructors were inaccessible to UCPXX_SERIALIZED_XXX macros. The fix entails smuggling a public static function into the class that then calls the constructor. Add issue356 regression test Update ChangeLog ChangeLog: document CROSS to UPCXX_CROSS rename configure: automatically cross-compile on Cray XC Start a ChangeLog for hotfix release
→ <<cset e35f012d9670>>
- Log in to comment