Skip to content

Conversation

sergey-semenov
Copy link
Contributor

@sergey-semenov sergey-semenov commented Feb 28, 2023

The test relies on the fact that the tasks submitted to the queue haven't been enqueued before the call to queue::wait. Guarantee that by manually blocking/unblocking their dependency node instead of relying on a host task.

The test relies on the fact that the tasks submitted to the queue
haven't been enqueued before the call to queue::wait. Guarantee that
by manually blocking/unblocking their enqueue with a dependency node
instead of relying on a host task.
@sergey-semenov sergey-semenov changed the title [SYCL][NFC] Fix a race condition in queue wait unit test [SYCL] Fix a race condition in queue wait unit test Feb 28, 2023
@sergey-semenov sergey-semenov temporarily deployed to aws February 28, 2023 22:58 — with GitHub Actions Inactive
@sergey-semenov
Copy link
Contributor Author

Basic/reqd_work_group_size.cpp failure is unrelated, see #8146 (comment)

@sergey-semenov sergey-semenov temporarily deployed to aws March 2, 2023 12:24 — with GitHub Actions Inactive
@sergey-semenov
Copy link
Contributor Author

@dm-vodopyanov @intel/llvm-reviewers-runtime Could you please take a look?

Copy link
Contributor

@steffenlarsen steffenlarsen left a comment

Choose a reason for hiding this comment

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

I am okay with it as-is, to get things working as intended.

That said I worry that this is maybe a little too deep in implementation-details. Would it have been possible to somehow create an unfinished event, use it as a dependency, then mark it finished when we need it? It may be as implementation-specific as this.

@sergey-semenov
Copy link
Contributor Author

@steffenlarsen The problem here is that we need to create a situation where some commands both haven't been enqueued and are unblocked. In any user application this will only occur when there are blocked commands. And any of the usual ways to block commands (host tasks & host accessors) would attempt to enqueue their users after they're unblocked. I don't see how an unfinished event would help here.

I guess one alternative solution would be to construct the graph directly to avoid trying to enqueue the tasks in the first place, but that's even more implementation-specific.

@bader bader merged commit 7ed9e63 into intel:sycl Mar 9, 2023
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