Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

276 Automatically synthesize and deduce message types for sends to arbitrary handlers #2064

Conversation

lifflander
Copy link
Collaborator

Fixes #276

@lifflander lifflander force-pushed the 276-automatically-synthesize-message-types-for-sends-to-arbitrary-handlers branch from 1429af2 to 3020c27 Compare January 17, 2023 18:32
@lifflander lifflander force-pushed the 276-automatically-synthesize-message-types-for-sends-to-arbitrary-handlers branch from 1338c01 to cb28d28 Compare January 18, 2023 00:45
@lifflander lifflander marked this pull request as ready for review January 24, 2023 18:32
@lifflander lifflander force-pushed the 276-automatically-synthesize-message-types-for-sends-to-arbitrary-handlers branch from f90c90b to b600931 Compare January 24, 2023 18:32
@codecov
Copy link

codecov bot commented Jan 24, 2023

Codecov Report

Merging #2064 (f40ee4d) into develop (ad0273d) will decrease coverage by 0.06%.
The diff coverage is 79.67%.

❗ Current head f40ee4d differs from pull request most recent head 6b69c91. Consider uploading reports for the commit 6b69c91 to get more accurate results

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #2064      +/-   ##
===========================================
- Coverage    84.92%   84.86%   -0.06%     
===========================================
  Files          721      721              
  Lines        25737    25667      -70     
===========================================
- Hits         21857    21783      -74     
- Misses        3880     3884       +4     
Impacted Files Coverage Δ
examples/rdma/rdma_simple_put.cc 14.03% <0.00%> (ø)
examples/rdma/rdma_simple_put_direct.cc 20.00% <0.00%> (ø)
src/vt/collective/scatter/scatter.impl.h 94.44% <0.00%> (ø)
src/vt/event/event.cc 57.36% <0.00%> (ø)
src/vt/group/group_manager.h 100.00% <ø> (ø)
src/vt/objgroup/manager.h 100.00% <ø> (ø)
src/vt/parameterization/parameterization.h 100.00% <ø> (ø)
src/vt/rdma/collection/rdma_collection.cc 0.00% <0.00%> (ø)
src/vt/registry/auto/auto_registry_common.h 93.93% <ø> (ø)
src/vt/registry/auto/auto_registry_general.h 100.00% <ø> (ø)
... and 73 more

... and 14 files with indirect coverage changes

@github-actions
Copy link

github-actions bot commented Jan 24, 2023

Pipelines results

PR tests (clang-10, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (nvidia cuda 11.0, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

/vt/src/vt/runnable/runnable.h(248): warning: missing return statement at end of non-void function "vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]"
          detected during:
            instantiation of "decltype(auto) vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/runnable/make_runnable.h(282): here
            instantiation of "auto vt::runnable::RunnableMaker<MsgT>::runLambda(Callable &&, Args &&...) [with MsgT=vt::BaseMsgType, Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/objgroup/manager.impl.h(228): here
            instantiation of "decltype(auto) vt::objgroup::ObjGroupManager::invoke<ObjT,f,Args...>(vt::objgroup::ObjGroupManager::ProxyElmType<ObjT>, Args &&...) [with ObjT=NodeObj, f=&NodeObj::isWorkFinished, Args=<>]" 
/vt/src/vt/objgroup/proxy/proxy_objgroup_elm.impl.h(114): here
            instantiation of "decltype(auto) vt::objgroup::proxy::ProxyElm<ObjT>::invoke<f,Args...>(Args &&...) const [with ObjT=NodeObj, f=&NodeObj::isWorkFinished, Args=<>]" 
/vt/examples/collection/jacobi1d_vt.cc(325): here

/vt/src/vt/runnable/runnable.h(248): warning: missing return statement at end of non-void function "vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=bool (NodeObj::*)(), Args=<NodeObj *>]"
          detected during:
            instantiation of "decltype(auto) vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/runnable/make_runnable.h(282): here
            instantiation of "auto vt::runnable::RunnableMaker<MsgT>::runLambda(Callable &&, Args &&...) [with MsgT=vt::BaseMsgType, Callable=bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/objgroup/manager.impl.h(228): here
            instantiation of "decltype(auto) vt::objgroup::ObjGroupManager::invoke<ObjT,f,Args...>(vt::objgroup::ObjGroupManager::ProxyElmType<ObjT>, Args &&...) [with ObjT=NodeObj, f=&NodeObj::isWorkFinished, Args=<>]" 
/vt/src/vt/objgroup/proxy/proxy_objgroup_elm.impl.h(114): here
            instantiation of "decltype(auto) vt::objgroup::proxy::ProxyElm<ObjT>::invoke<f,Args...>(Args &&...) const [with ObjT=NodeObj, f=&NodeObj::isWorkFinished, Args=<>]" 
/vt/examples/collection/jacobi1d_vt.cc(325): here

/vt/src/vt/runnable/runnable.h(248): warning: missing return statement at end of non-void function "vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]"
          detected during:
            instantiation of "decltype(auto) vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/runnable/make_run%0D%0A%0D%0A%0D%0A ==> And there is more. Read log. <==

Build log


PR tests (clang-9, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (clang-11, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (clang-12, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (gcc-10, ubuntu, openmpi, no LB)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (gcc-9, ubuntu, mpich, zoltan)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (gcc-7, ubuntu, mpich, trace runtime, LB)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (nvidia cuda 11.2, ubuntu, mpich)

Build for ( UTC)

/vt/src/vt/runnable/runnable.h(248): warning: missing return statement at end of non-void function "vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]"
          detected during:
            instantiation of "decltype(auto) vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/runnable/make_runnable.h(282): here
            instantiation of "auto vt::runnable::RunnableMaker<MsgT>::runLambda(Callable &&, Args &&...) [with MsgT=vt::BaseMsgType, Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/objgroup/manager.impl.h(228): here
            instantiation of "decltype(auto) vt::objgroup::ObjGroupManager::invoke<ObjT,f,Args...>(vt::objgroup::ObjGroupManager::ProxyElmType<ObjT>, Args &&...) [with ObjT=NodeObj, f=&NodeObj::isWorkFinished, Args=<>]" 
/vt/src/vt/objgroup/proxy/proxy_objgroup_elm.impl.h(114): here
            instantiation of "decltype(auto) vt::objgroup::proxy::ProxyElm<ObjT>::invoke<f,Args...>(Args &&...) const [with ObjT=NodeObj, f=&NodeObj::isWorkFinished, Args=<>]" 
/vt/examples/collection/jacobi1d_vt.cc(325): here

/vt/src/vt/runnable/runnable.h(248): warning: missing return statement at end of non-void function "vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=bool (NodeObj::*)(), Args=<NodeObj *>]"
          detected during:
            instantiation of "decltype(auto) vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/runnable/make_runnable.h(282): here
            instantiation of "auto vt::runnable::RunnableMaker<MsgT>::runLambda(Callable &&, Args &&...) [with MsgT=vt::BaseMsgType, Callable=bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/objgroup/manager.impl.h(228): here
            instantiation of "decltype(auto) vt::objgroup::ObjGroupManager::invoke<ObjT,f,Args...>(vt::objgroup::ObjGroupManager::ProxyElmType<ObjT>, Args &&...) [with ObjT=NodeObj, f=&NodeObj::isWorkFinished, Args=<>]" 
/vt/src/vt/objgroup/proxy/proxy_objgroup_elm.impl.h(114): here
            instantiation of "decltype(auto) vt::objgroup::proxy::ProxyElm<ObjT>::invoke<f,Args...>(Args &&...) const [with ObjT=NodeObj, f=&NodeObj::isWorkFinished, Args=<>]" 
/vt/examples/collection/jacobi1d_vt.cc(325): here

/vt/src/vt/runnable/runnable.h(248): warning: missing return statement at end of non-void function "vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]"
          detected during:
            instantiation of "decltype(auto) vt::runnable::RunnableNew::runLambda(Callable &&, Args &&...) [with Callable=__nv_bool (NodeObj::*)(), Args=<NodeObj *>]" 
/vt/src/vt/runnable/make_run%0D%0A%0D%0A%0D%0A ==> And there is more. Read log. <==

Build log


PR tests (clang-13, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (gcc-11, ubuntu, mpich, json schema test)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (gcc-12, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (gcc-8, ubuntu, mpich, address sanitizer)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (clang-14, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

Compilation - successful

Testing - passed

Build log


PR tests (intel icpc, ubuntu, mpich)

Build for 6b69c91 (2023-03-14 17:08:17 UTC)

intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
intel-cc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.-%0D%0A%0D%0A%0D%0A ==> And there is more. Read log. <==

Build log


@@ -154,10 +155,11 @@ struct FunctorAdapterArgs<ObjTypeT, MsgT> {

// Need to provide a non-pointer overload for parameterization auto-registered
// functions for GCC
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this here to address a limitation in older versions of GCC, that may no longer be applicable?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should checking this be converted into a separate issue? (to avoid delaying merge for this PR)

@PhilMiller
Copy link
Member

Separately, I think it would be worthwhile to do a refactor pushing that strong Node type all the way down the stack, to the point that we don't call get() on it except in MPI call arguments.

@lifflander lifflander force-pushed the 276-automatically-synthesize-message-types-for-sends-to-arbitrary-handlers branch from 7bb32e4 to dcc89a1 Compare February 2, 2023 22:25
@thearusable thearusable force-pushed the 276-automatically-synthesize-message-types-for-sends-to-arbitrary-handlers branch 2 times, most recently from e69f41f to ab229fe Compare February 8, 2023 15:07
@lifflander lifflander force-pushed the 276-automatically-synthesize-message-types-for-sends-to-arbitrary-handlers branch from ab229fe to 3502881 Compare February 8, 2023 21:36
@lifflander
Copy link
Collaborator Author

@thearusable Can you focus on the objgroup and collection send/broadcast APIs?

@thearusable
Copy link
Contributor

@thearusable Can you focus on the objgroup and collection send/broadcast APIs?

Sure, will do

@thearusable thearusable force-pushed the 276-automatically-synthesize-message-types-for-sends-to-arbitrary-handlers branch 2 times, most recently from 57c81e5 to 96fbfe5 Compare February 10, 2023 18:21
@PhilMiller
Copy link
Member

I'd be a bit more comfortable if the changes for reduce and scatter were split out to follow-up PRs, just because their interface is a bit more involved.

@PhilMiller
Copy link
Member

OK, scatter is fine to keep in.. That's small and similar to send/broadcast

@PhilMiller PhilMiller changed the title 276 automatically synthesize message types for sends to arbitrary handlers 276 Automatically synthesize and infer message types for sends to arbitrary handlers Feb 28, 2023
@PhilMiller PhilMiller changed the title 276 Automatically synthesize and infer message types for sends to arbitrary handlers 276 Automatically synthesize and deduce message types for sends to arbitrary handlers Feb 28, 2023
@lifflander lifflander force-pushed the 276-automatically-synthesize-message-types-for-sends-to-arbitrary-handlers branch from bead248 to 6b69c91 Compare March 14, 2023 17:08
@PhilMiller PhilMiller added this pull request to the merge queue Mar 14, 2023
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to no response for status checks Mar 14, 2023
@lifflander lifflander merged commit edf105d into develop Mar 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Automatically synthesize message types for sends to arbitrary handlers
4 participants