Integrate NVIDIA's S/R Bulk implementation into HPX#6746
Integrate NVIDIA's S/R Bulk implementation into HPX#6746hkaiser merged 70 commits intoTheHPXProject:masterfrom
Conversation
This exception_list class in the hpx namespace is a thread-safe container for handling multiple exceptions encountered during parallel algorithm execution. It allows storing std::exception_ptr objects, provides thread-safe access via a spinlock, and includes methods to add exceptions, get the count (size()), and iterate over the stored exceptions (begin()/end()). The class also includes placeholders for retrieving error codes and messages. This is useful for collecting and managing exceptions across parallel threads.
|
Can one of the admins verify this patch? |
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 preferencesFootnotes
|
49b7122 to
ff8a35c
Compare
isidorostsa
left a comment
There was a problem hiding this comment.
Excellent work! The tests are checking all the correct things, so if we get them passing we are good to merge :)
bf43519 to
15f19e6
Compare
1a7c336 to
d8a6edc
Compare
| )> | ||
| // clang-format on | ||
| template <typename Parameters> | ||
| requires(hpx::traits::is_executor_parameters_v<Parameters>) |
There was a problem hiding this comment.
As said before, in our experience, requires clauses don't always play well with return type SFIANE. I'd suggest leaving the HPX_CONCEPT_REQUIRES_ macro in place in these cases.
There was a problem hiding this comment.
I tried using HPX_CONCEPT_REQUIRES_ but it causes compilation errors with friend functions that have trailing return types. The compiler gives errors like "cannot combine with previous declaration specifier" no matter where I place the macro.
The C++20 requires clause is what scheduler_executor.hpp uses for the same pattern (line 260), so I followed that approach. Is there a way to make HPX_CONCEPT_REQUIRES_ work in this case ?
There was a problem hiding this comment.
If everything works with requires clauses - great. No need to use SFINAE in that case. We have seen issues with this pattern before, that's all.
a2c0134 to
a0d47a0
Compare
|
@hkaiser, in this commit, switched to |
|
removing to support both integral and range shapes, should I keep two separate overloads or use |
We usually use two overloads instead of constexpr if. But it's up to you to do whatever you feel fits best. |
8f5ec08 to
bfb9680
Compare
hkaiser
left a comment
There was a problem hiding this comment.
Otherwise, LGTM, thanks!
|
@charan-003, @isidorostsa Thanks for working on this! It was a long journey, but you made it! |
…-bulk Integrate NVIDIA's S/R Bulk implementation into HPX
This PR forwards stdexec::bulk and stdexec::bulk_t inside stdexec_forward.hpp.
These were previously commented out. This change makes bulk available through hpx::execution::experimental::bulk, aligning HPX's Sender/Receiver interface with NVIDIA's stdexec implementation.