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

Addressing remaining Stdexec issues #6534

Open
isidorostsa opened this issue Aug 23, 2024 · 1 comment
Open

Addressing remaining Stdexec issues #6534

isidorostsa opened this issue Aug 23, 2024 · 1 comment

Comments

@isidorostsa
Copy link
Contributor

isidorostsa commented Aug 23, 2024

Remaining issues

  1. HPX senders should replace tag-invocable tags with member functions, following the changes introduced in P2300R8.
  2. Some Stdexec algorithms use std synchronization primitives, which clash with HPX's (e.g. stdexec::run_loop, this_thread::sync_wait use std::mutex and std::condition_variable. This causes some tests to deadlock. Thanks to @zhekemist for identifying this! The following commit fixed a bug caused by this interaction: d06c9ad.
  3. The tests algorithm_transform_mpi and mpi_ring_async_executor have been disabled due to issue # 2 highlighted above. Other tests may be failing too, but it was noticed that there are MPI tests that fail but do return 0 so they are not marked as failing. This should be corrected too.
  4. Code and build system need testing on Windows and macOS beyond CI.

Due to these issues, Stdexec won't be enabled by default. To activate there needs to be an explicit definition: HPX_WITH_STDEXEC=ON

@zhekemist
Copy link
Contributor

This minimal example can be used to reproduce the 2nd issue.

Alternatively, it can also be reproduced by running any of the following unit tests:

  • tests.regressions.modules.executors.bulk_sync_wait
  • tests.unit.modules.execution.algorithm_as_sender
  • tests.unit.modules.executors.explicit_scheduler_executor
  • tests.unit.modules.executors.scheduler_executor
  • tests.unit.modules.executors.thread_pool_scheduler

with one of these command line arguments:

  • --hpx:threads=1 or
  • --hpx:queuing=<policy> with <policy> being either static, static-priority, local-workrequesting-fifo or local-workrequesting-mc. (These are the policies among those that I was able to test on my machine where deadlocking happened. But I suspect that any non-workstealing policy leads to this issue.)

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

No branches or pull requests

2 participants