Skip to content

[SYCL] Try to enqueue host command depencies #2561

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

Merged
merged 21 commits into from
Oct 1, 2020

Conversation

s-kanaev
Copy link
Contributor

Let's have this part of dependency graph:

  EC2 -> C2 -> EC1 -> C1

EC1 and EC2 are of helper type EmptyCommand. Both are blocked.
C1 and C2 are of any other type which represents some meaningful operation i.e. the one that actually does something useful, like ExecCGCommand with a host task or UpdateHostReqCommand for host accessor.
This part of graph is result of two submissions: the first one adds EC1 -> C1 and the second adds EC2 -> C2 -> EC1.
The submission process in both cases adds the corresponding Cx command in first place and then adds the empty command ECx. When Cx is added to the graph it's also added to list of leaves for corresponding memory record. Now, when ECx is added to graph it removes corresponding Cx from list of leaves. ECx is added to the list instead of Cx. Blocked state of ECx prevents it from being enqueued.

Upon the second submission, C2 isn't going to be enqueued right away as it depends on blocked EC1.

When C1 finishes (whether it is a host task or host accessor's update command) SYCL RT will unblock EC1 and trigger enqueue process for leaves of memory records C1 was depending by. Eventually, RT will enqueue the EC1 which will set its event into complete state. Though, EC2 isn't going to be enqueued due to it's blocked state. Neither does its dependencies.

PR with test: #2540
PR with comment fix: #2541

Sergey Kanaev added 10 commits September 25, 2020 12:10
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
@s-kanaev s-kanaev requested a review from a team as a code owner September 29, 2020 13:10
Sergey Kanaev added 7 commits September 29, 2020 16:29
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Sergey Kanaev added 3 commits September 30, 2020 18:11
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
@againull againull merged commit a9839b0 into intel:sycl Oct 1, 2020
@s-kanaev
Copy link
Contributor Author

s-kanaev commented Oct 1, 2020

/summary:run

@s-kanaev s-kanaev deleted the private/s-kanaev/ht-workaround-3 branch October 1, 2020 08:17
alexbatashev pushed a commit to alexbatashev/llvm that referenced this pull request Oct 5, 2020
…_wrapper

* upstream/sycl: (1021 commits)
  [SYCL] Enable async_work_group_copy for scalar and vector bool types (intel#2582)
  [SYCL] Fix element type in handler::copy (intel#2590)
  [NFC][SYCL] Remove unnecessary if condition (intel#2585)
  [SYCL][NFC] Fix SYCL lit test execution on a system w/o GPU (intel#2584)
  [SYCL] Add error handling for non-uniform work group size case (intel#2569)
  [SYCL][ESIMD] Preserve undef initializer for globals in ESIMDLowerVecArg pass (intel#2555)
  [SYCL] Make Level-Zero events visible on the host (intel#2576)
  [Driver][SYCL][NFC] Add help information for -Wno-sycl-strict (intel#2570)
  [SYCL] Relax test to work in Win32 environment. (intel#2580)
  [SYCL] Emit suppressed warnings from SYCL headers (intel#2575)
  [SYCL][NFC] Cover more classes with ABI tests (intel#2577)
  [SYCL][ESIMD] Update ESIMD tests and add raw send support. (intel#2482)
  [SYCL] Make ESIMD on-device tests require linux,gpu,opencl. (intel#2560)
  [SYCL] Release commands with no dependencies after they're enqueued (intel#2492)
  [SYCL] Add multi-device and multi-platform support for SYCL_DEVICE_ALLOWLIST  (intel#2483)
  [SYCL] Try to enqueue host command depencies (intel#2561)
  [SYCL][ESIMD][NFC] Align namespace name with the spec guidelines (intel#2573)
  [SYCL][NFC] Add class layout ABI tests for memory objects (intel#2559)
  [SYCL] Change adress space for global variables (intel#2534)
  [NFC][SYCL] Fix comment. (intel#2541)
  ...
jsji pushed a commit that referenced this pull request May 16, 2024
Various tests already declare `REQUIRES: spirv-dis`, but this feature
was never enabled so those tests were always skipped as "unsupported".

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@08835f4d85ec5c8
kbenzie added a commit to kbenzie/intel-llvm that referenced this pull request Feb 17, 2025
[L0][CMDBUF] Optimize fence/event waits during update
Chenyang-L pushed a commit that referenced this pull request Feb 18, 2025
[L0][CMDBUF] Optimize fence/event waits during update
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.

3 participants