Skip to content

Clean up stdexec-only paths and update affected tests#7123

Open
guptapratykshh wants to merge 61 commits intoTheHPXProject:masterfrom
guptapratykshh:cleanup/stdexec-pr
Open

Clean up stdexec-only paths and update affected tests#7123
guptapratykshh wants to merge 61 commits intoTheHPXProject:masterfrom
guptapratykshh:cleanup/stdexec-pr

Conversation

@guptapratykshh
Copy link
Copy Markdown
Contributor

Proposed Changes

  • removedHPX_HAVE_STDEXECguarded cleanup paths and kept the stdexec-only implementation as the single active path
  • update the affected execution, execution_base, executor, algorithm, async MPI/CUDA, and synchronization tests to match the unified stdexec-only code path
  • cleared up related CMake/stdexec configuration so the build reflects the same single-path setup consistently

Any background context you want to provide?

Checklist

Not all points below apply to all pull requests.

  • I have added a new feature and have added tests to go along with it.
  • I have fixed a bug and have added a regression test.
  • I have added a test using random numbers; I have made sure it uses a seed, and that random numbers generated are valid inputs for the tests.

@guptapratykshh guptapratykshh requested a review from hkaiser as a code owner March 28, 2026 05:53
@StellarBot
Copy link
Copy Markdown

Can one of the admins verify this patch?

@guptapratykshh guptapratykshh force-pushed the cleanup/stdexec-pr branch 4 times, most recently from 7ca8cbe to a24be1a Compare March 28, 2026 08:45
@hkaiser
Copy link
Copy Markdown
Contributor

hkaiser commented Mar 28, 2026

@isidorostsa Please have a look

@hkaiser
Copy link
Copy Markdown
Contributor

hkaiser commented Mar 28, 2026

BTW, how does this relate to #6708? Does this PR superseds it?

@hkaiser
Copy link
Copy Markdown
Contributor

hkaiser commented Mar 28, 2026

@guptapratykshh thanks for working on this. Could you please proactively keep an eye on the CI results. Currently there seem to be some compilation issues with this PR.

@guptapratykshh
Copy link
Copy Markdown
Contributor Author

BTW, how does this relate to #6708? Does this PR superseds it?

this PR is a narrower follow up in the same direction as #6708, updated on top of the current master rather than a wholesale replacement for it. It keeps the stdexec-only cleanup goal, but its scope here is mainly removing the remaining dead internal paths and fixing the resulting test issues while preserving backward compatibility.

@hkaiser
Copy link
Copy Markdown
Contributor

hkaiser commented Mar 28, 2026

BTW, how does this relate to #6708? Does this PR superseds it?

this PR is a narrower follow up in the same direction as #6708, updated on top of the current master rather than a wholesale replacement for it. It keeps the stdexec-only cleanup goal, but its scope here is mainly removing the remaining dead internal paths and fixing the resulting test issues while preserving backward compatibility.

Thanks for the explanations. Do we still need #6708? What does it have in addition to your PR?

@guptapratykshh
Copy link
Copy Markdown
Contributor Author

BTW, how does this relate to #6708? Does this PR superseds it?

this PR is a narrower follow up in the same direction as #6708, updated on top of the current master rather than a wholesale replacement for it. It keeps the stdexec-only cleanup goal, but its scope here is mainly removing the remaining dead internal paths and fixing the resulting test issues while preserving backward compatibility.

Thanks for the explanations. Do we still need #6708? What does it have in addition to your PR?

after merging #6708 into my branch and updating it to work with current master, I do not think we still need #6708 as separate PR

@hkaiser
Copy link
Copy Markdown
Contributor

hkaiser commented Mar 28, 2026

Thanks for the explanations. Do we still need #6708? What does it have in addition to your PR?

after merging #6708 into my branch and updating it to work with current master, I do not think we still need #6708 as separate PR

Ok, please let me know once you think that we can close the other PR.

@guptapratykshh guptapratykshh force-pushed the cleanup/stdexec-pr branch 8 times, most recently from 3863598 to 62d14bc Compare March 29, 2026 13:59
Copy link
Copy Markdown
Contributor

@isidorostsa isidorostsa left a comment

Choose a reason for hiding this comment

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

Thank you for taking on this task! Removing old senders would be helpful

To make it possible to review this please contain unnecessary or pedantic edits as much as possible.

Comment thread .github/actions/collect-artifacts/action.yml
Comment thread libs/core/async_cuda/include/hpx/async_cuda/cuda_event.hpp Outdated
Comment thread libs/core/execution/include/hpx/execution/algorithms/as_sender.hpp Outdated
@guptapratykshh guptapratykshh force-pushed the cleanup/stdexec-pr branch 3 times, most recently from 49ba52e to d94eaf8 Compare March 30, 2026 13:29
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Copilot AI review requested due to automatic review settings April 16, 2026 05:20
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 147 out of 167 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

libs/core/execution_base/tests/unit/CMakeLists.txt:1

  • This disables the entire execution_base unit test suite for Clang/AppleClang, which significantly reduces CI signal and increases the risk of undetected regressions on those compilers. If only a subset fails (e.g., due to deprecation warnings or specific ICEs), prefer disabling only the affected targets (via list(REMOVE_ITEM ...) or per-test conditions) or adding targeted compile options, rather than excluding the full suite.
# Copyright (c) 2019 Thomas Heller

Comment thread libs/core/async_cuda/include/hpx/async_cuda/transform_stream.hpp
Comment thread libs/core/execution_base/tests/unit/basic_schedule.cpp
…flow

Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Copilot AI review requested due to automatic review settings April 16, 2026 08:42
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 146 out of 167 changed files in this pull request and generated 4 comments.

Comment thread libs/core/execution_base/tests/unit/CMakeLists.txt
Comment thread libs/core/execution/tests/unit/CMakeLists.txt
Comment thread libs/core/execution/CMakeLists.txt
Comment thread cmake/HPX_SetupStdexec.cmake Outdated
@guptapratykshh guptapratykshh requested a review from hkaiser April 16, 2026 16:12
@@ -23,3 +23,4 @@ tim
uint
vill
wit
endwhile
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The words in this list must be alphabetically ordered.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Now you have the new word in the list twice.

tests.examples.transpose.transpose_smp_block
tests.examples.async_io.async_io_simple
tests.examples.modules.algorithms.run_on_all
tests.examples.modules.checkpoint.1d_stencil_4_checkpoint
Copy link
Copy Markdown
Contributor

@hkaiser hkaiser Apr 16, 2026

Choose a reason for hiding this comment

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

I believe this is a leftover file and should have been removed. If you want to exclude certain tests from the CI, please add those here: https://github.com/TheHPXProject/hpx/blob/master/.github/workflows/exclude.targets

Comment thread cmake/HPX_SetupStdexec.cmake Outdated
# stdexec's stop_token header currently declares _mm_pause without the C
# linkage used by MSVC's intrinsic headers, which breaks module builds.
string(REPLACE "extern void _mm_pause();" "extern \"C\" void _mm_pause();"
_patched_content "${_patched_content}"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why did you resolve this comment (and similar comments below)?

Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Copilot AI review requested due to automatic review settings April 19, 2026 04:17
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 147 out of 167 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (2)

libs/core/execution/tests/unit/CMakeLists.txt:1

  • This change disables the entire execution unit test suite for Clang/AppleClang, which is a major loss of CI signal and can mask regressions. If only a subset of tests (or specific Clang versions) are problematic, prefer excluding just those targets (e.g., list(REMOVE_ITEM ...)) or adding versioned guards (similar to the approach in foreach_scheduler.cpp) so the rest of the suite still runs on Clang.
# Copyright (c) 2014-2026 Hartmut Kaiser

libs/core/execution_base/tests/unit/CMakeLists.txt:1

  • Like the execution tests, this disables the full execution_base unit test suite for Clang/AppleClang. Consider narrowing the exclusion to the specific failing tests or to specific Clang versions; otherwise Clang builds will miss coverage for a core module that was heavily modified in this PR.
# Copyright (c) 2019 Thomas Heller

Comment thread libs/core/execution_base/tests/unit/CMakeLists.txt
Comment thread cmake/HPX_SetupStdexec.cmake Outdated
Copilot AI review requested due to automatic review settings April 20, 2026 05:13
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 147 out of 167 changed files in this pull request and generated 6 comments.

Comment thread libs/core/execution_base/tests/unit/CMakeLists.txt
Comment thread libs/core/execution/tests/unit/CMakeLists.txt
Comment thread libs/core/async_mpi/tests/unit/algorithm_transform_mpi.cpp
Comment thread CMakeLists.txt
Comment thread CMakeLists.txt
Comment on lines +631 to +635
if(NOT HPX_WITH_STDEXEC)
hpx_error(
"HPX_WITH_STDEXEC=OFF is no longer supported. HPX now requires stdexec."
)
endif()
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

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

The option help text still suggests there are two supported modes (stdexec vs native), but the configuration now hard-errors when HPX_WITH_STDEXEC=OFF. Please update the option description to reflect that stdexec is required (or consider removing the option entirely if it is no longer a meaningful configuration knob).

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think we can remove the option altogether.

Copilot AI review requested due to automatic review settings April 20, 2026 07:05
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 147 out of 167 changed files in this pull request and generated 4 comments.

Comment thread libs/core/execution/tests/unit/CMakeLists.txt Outdated
Comment thread libs/core/async_mpi/tests/unit/algorithm_transform_mpi.cpp
Copilot AI review requested due to automatic review settings April 20, 2026 07:26
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 147 out of 168 changed files in this pull request and generated 1 comment.

Comment thread libs/core/execution/tests/unit/CMakeLists.txt Outdated
Copilot AI review requested due to automatic review settings April 20, 2026 11:50
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 147 out of 167 changed files in this pull request and generated 1 comment.

Comment thread libs/core/execution_base/tests/unit/CMakeLists.txt
…exec PR#2035)

Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
@guptapratykshh guptapratykshh requested a review from hkaiser April 21, 2026 09:16
@hkaiser
Copy link
Copy Markdown
Contributor

hkaiser commented Apr 21, 2026

@guptapratykshh Thanks so much for your patience with this. This PR is very large, so it is of utmost importance to separate all unrelated changes into their own PRs. Please make sure that the changes to the build system you applied are strictly related to this PR. I think you should not disable unrelated tests, even if those fail on the CIs, for instance. Also, please pay attention to the copilot comments (and not simply resolve them) as usually there is some truth to what it suggest (even if the suggested solution might not be appropriate).

if(HPX_WITH_STATIC_LINKING)
set(disabled_tests ${disabled_tests} hello_world_1)
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If disabling tests, please make sure to specify the latest compiler version that we know to fail. That will allow for the tests to be re-evaluated if a newer version will be available.

return util::detail::algorithm_result<ExPolicy, FwdIter2>::get(
shift_right_helper(policy, first, last, new_first));
shift_right_helper(
policy, first, last, new_first, result_first));
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The changes to this file seem to be unrelated.

Comment thread libs/core/algorithms/tests/performance/CMakeLists.txt

void for_each_test_execute_on_sender()
{
#if !defined(HPX_CLANG_VERSION)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add a compiler version to the condition

test_uninitialized_copy_n_sender(
hpx::launch::async, par(task), IteratorTag());
test_uninitialized_copy_n_sender(
hpx::launch::async, par_unseq(task), IteratorTag());
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why did you remove these test cases?

test_uninitialized_copy_n_exception_sender(
hpx::launch::async, par(task), IteratorTag());
test_uninitialized_copy_n_exception_sender(
hpx::launch::async, par_unseq(task), IteratorTag());
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, why did you remove these testcases. The same applies to more places in other files.

@@ -23,3 +23,4 @@ tim
uint
vill
wit
endwhile
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Now you have the new word in the list twice.

Comment thread CMakeLists.txt
Comment on lines +631 to +635
if(NOT HPX_WITH_STDEXEC)
hpx_error(
"HPX_WITH_STDEXEC=OFF is no longer supported. HPX now requires stdexec."
)
endif()
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think we can remove the option altogether.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants