Skip to content

Remove host_task object management - #2359

Open
ndgrigorian wants to merge 1 commit into
masterfrom
feature/drop-host-task-object-management
Open

ndgrigorian wants to merge 1 commit into
masterfrom
feature/drop-host-task-object-management

Conversation

@ndgrigorian

@ndgrigorian ndgrigorian commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Inspired by comment in: AdaptiveCpp/AdaptiveCpp#1915

we move away from use of host_task, which enables compatibility with AdaptiveCpp, and fixes long-standing undefined behavior of calling sycl::free from within a host_task. The host_task decrementing the refcount would cause the USMDeleter to be called in its scope, which is undefined behavior under the SYCL spec

Instead, we use a polling thread which checks for event completion, then decreases references

  • Have you provided a meaningful PR description?
  • Have you added a test, reproducer or referred to an issue with a reproducer?
  • Have you tested your changes locally for CPU and GPU devices?
  • Have you made sure that new changes do not introduce compiler warnings?
  • Have you checked performance impact of proposed changes?
  • Have you added documentation for your changes, if necessary?
  • Have you added your changes to the changelog?
  • If this PR is a work in progress, are you opening the PR as a draft?

@ndgrigorian
ndgrigorian force-pushed the feature/drop-host-task-object-management branch from c41755c to bbf7d44 Compare August 10, 2026 18:17
@github-actions

Copy link
Copy Markdown

@coveralls

coveralls commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Coverage Status

coverage: 75.044% (+0.09%) from 74.959% — feature/drop-host-task-object-management into master

Comment thread dpctl/apis/include/dpctl4pybind11.hpp Outdated
Comment thread dpctl/apis/include/dpctl4pybind11.hpp
Comment thread dpctl/apis/include/detail/keep_alive_pool.hpp Outdated
Comment thread dpctl/utils/_order_manager.py Outdated
Comment thread docs/doc_sources/api_reference/dpctl/utils.rst Outdated
Comment thread dpctl/apis/include/detail/keep_alive_pool.hpp Outdated
Comment thread dpctl/apis/include/dpctl4pybind11.hpp Outdated
Comment thread dpctl/apis/include/detail/keep_alive_pool.hpp Outdated
@ndgrigorian
ndgrigorian requested a review from antonwolfy August 19, 2026 00:28
Comment thread dpctl/_sycl_queue.pyx
Comment thread dpctl/apis/include/detail/keep_alive_pool.hpp Outdated
Comment thread dpctl/apis/include/dpctl4pybind11.hpp
Comment thread docs/doc_sources/beginners_guides/installation.rst Outdated
Comment thread dpctl/apis/include/dpctl4pybind11.hpp Outdated
Comment thread dpctl/apis/include/dpctl4pybind11.hpp Outdated
Comment thread dpctl/_async_dec_ref.hpp Outdated
Comment thread dpctl/CMakeLists.txt Outdated
Comment thread dpctl/_sycl_queue.pyx Outdated
Comment thread dpctl/_async_dec_ref.hpp Outdated
Comment thread dpctl/apis/include/dpctl4pybind11.hpp
@ndgrigorian
ndgrigorian force-pushed the feature/drop-host-task-object-management branch from f412bf7 to 637c490 Compare September 6, 2026 07:16
@ndgrigorian
ndgrigorian force-pushed the feature/drop-host-task-object-management branch from ad6aa9e to 9a6f156 Compare September 14, 2026 21:29
@ndgrigorian ndgrigorian changed the title Migrate host_task object management to a thread pool based approach Remove host_task object management Sep 14, 2026
Removed use of host_task
that took the GIL and could free a USM allocation, so the task called sycl::free and destroyed a sycl::context inside the host_task. This is forbidden per the SYCL spec, and made dpctl unbuildable against AdaptiveCpp, which does not implement host_task.

The releases are now deferred instead via a polling thread.

Deprecates SyclQueue._submit_keep_args_alive in favor of SyclQueue.keep_args_alive, intended as a public method for keeping alive these Python objects in a way free of host_task. Also deprecates methods add_event_pair, num_host_task_events, and host_task_events on the SequentialOrderManager, while adding add_event, add_cleanup_event, and num_cleanup_events.

_sycl_queue.pyx also gains an atexit hook to prevent crashes at process teardown.
@ndgrigorian
ndgrigorian force-pushed the feature/drop-host-task-object-management branch from 84bf7e3 to 1d6e587 Compare September 17, 2026 22:00
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.

4 participants