-
-
Notifications
You must be signed in to change notification settings - Fork 438
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
Integrate NVIDIA's S/R implementation into HPX #6431
Conversation
634cb7b
to
1798cbc
Compare
5b5ac33
to
f34103e
Compare
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesCodacy will stop sending the deprecated coverage status from June 5th, 2024. Learn more |
9c0318f
to
59b5170
Compare
36bfaf7
to
39cee7b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First batch of comments... more to come.
#ifdef HPX_HAVE_STDEXEC | ||
auto scheduler = | ||
hpx::execution::experimental::get_completion_scheduler< | ||
hpx::execution::experimental::set_value_t>( | ||
hpx::execution::experimental::get_env(u)); | ||
#else | ||
auto scheduler = | ||
hpx::execution::experimental::get_completion_scheduler< | ||
hpx::execution::experimental::set_value_t>(u); | ||
#endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we could factor out this difference allowing for the diferences to be very localized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We would have to alter our existing senders to provide environments, currently most of the times they do not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Really? What about:
inline constexpr struct get_completion_scheduler_ex_t
{
template <typename U>
decltype(auto) operator()(U&& u) const
{
#ifdef HPX_HAVE_STDEXEC
return hpx::execution::experimental::get_completion_scheduler<
hpx::execution::experimental::set_value_t>(
hpx::execution::experimental::get_env(HPX_FORWARD(U, u)));
#else
return hpx::execution::experimental::get_completion_scheduler<
hpx::execution::experimental::set_value_t>(HPX_FORWARD(U, u));
#endif
}
} get_completion_scheduler_ex{};
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah yes, good point. I will get on that, and I will migrate to using it after sorting out the build system.
libs/core/execution/include/hpx/execution/algorithms/as_sender.hpp
Outdated
Show resolved
Hide resolved
static_assert(ex::is_sender_v<decltype(s), ex::empty_env>); | ||
#endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't we rather implement is_sender_in_v
for our code base?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
right, leaving that as a TODO to remove much of the duplication from the tests.
1f90be4
to
210ddea
Compare
1948e56
to
3dbcee6
Compare
Fetching STDEXEC by default on C++20, so the CI is testing both with and without it. |
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
2dd79a1
to
1a188f2
Compare
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferences🚀 Don’t miss a bit, follow what’s new on Codacy. Codacy stopped sending the deprecated coverage status on June 5th, 2024. Learn more |
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
be320e8
to
7dee1a5
Compare
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
a75c80b
to
84f2c12
Compare
Just rebased on master |
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
84f2c12
to
16f0245
Compare
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesCodacy stopped sending the deprecated coverage status on June 5th, 2024. Learn more |
Thanks so much! |
👏 👏 |
This PR serves to replace the existing senders/receivers implementation in hpx with the stdexec implementation maintained by NVIDIA.
Big credits to the @pika-org team for their work when solving almost the same problem. This PR is built on top of much of that work.