-
Notifications
You must be signed in to change notification settings - Fork 752
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
Enable level zero v2 in DPC++ #16656
Open
omarahmed1111
wants to merge
12
commits into
intel:sycl
Choose a base branch
from
omarahmed1111:enable-level-zero-v2
base: sycl
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 2 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
123099e
Enable level_zero_v2 on sycl
omarahmed1111 cbbdcec
Update UR tag
omarahmed1111 436c0e6
Change to only build one adapter
omarahmed1111 328b88f
Merge branch 'sycl' into enable-level-zero-v2
omarahmed1111 a80036d
Remove the l0 envvar assign
omarahmed1111 d73e2f7
formatting
omarahmed1111 85055dc
Merge branch 'sycl' into enable-level-zero-v2
omarahmed1111 2cd1aa2
fix configure.py formatting
omarahmed1111 8824606
Change help comment in configure.py
omarahmed1111 3d866b2
Merge branch 'sycl' into enable-level-zero-v2
omarahmed1111 9dd7a87
Update UR tag
omarahmed1111 3bfa408
Merge branch 'sycl' into enable-level-zero-v2
omarahmed1111 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
# commit 023a84744b7db460d42225c8b5ea4d6def085c81 | ||
# Merge: 9b57d7b7 0607d2c8 | ||
# commit c5bf8fd5c92ab7a24b439cd89cefc9cd425ec787 | ||
# Merge: e6d4355f 778085f7 | ||
# Author: Kenneth Benzie (Benie) <[email protected]> | ||
# Date: Thu Jan 16 10:17:25 2025 +0000 | ||
# Merge pull request #2546 from lukaszstolarczuk/bump-umf-to-latest-main | ||
# [main] Bump UMF to v0.10.1 | ||
set(UNIFIED_RUNTIME_TAG 023a84744b7db460d42225c8b5ea4d6def085c81) | ||
# Date: Mon Jan 13 10:41:50 2025 +0000 | ||
# Merge pull request #2479 from aarongreig/aaron/parameterizeDeviceTests | ||
# Parameterize CTS tests across all available adapters and devices. | ||
set(UNIFIED_RUNTIME_TAG bbf7e01bd74ac51b518fc044d0ca71a920443e5b) |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple of comments
Can you explain what L0 V2 is and how it releases to the current L0/L0 adapter
I agree with James, we shouldn't build two plugins by default. If we have some configure switch to build two, that's fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@igchor ping
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Out of curiosity, why "v2" instead of incremental refactoring?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got it, thanks
At this point it seems like the v2 adapter is only intended to be used by DPCPP/UR developers, and IMO features like that should not be built by default. If the feature is ready enough for downstream clients, should we switch over by default?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The existing L0 adapter code base has accumulated a lot of complexity over the years as L0 and the driver evolved. It has become very difficult to change. For example, there are 4 major queue modes that the adapter supports - "batched in order", "batched out of order", "immediate in order", "immediate out of order". In the existing adapter, they are all implemented together, with various conditions sprinkled all throughout to make it work. In practice, batched mode is all but legacy for 99% of scenarios, and "in order" and "out of order" L0 paths are so different (different types of L0 events, different way of synchronization), that there's not much to gain from sharing all the code between them.
Refactoring this incrementally, without breaking existing code, would be challenging. So the team has decided that a partial re-implementation (we still reuse all that's practical) of the performance critical paths is the best path forward. This also means that we have the opportunity to easily leverage new driver features and do a clean break away from the accumulated legacy tech debt.
In terms of quality, the v2 adapter has higher UR CTS passrate than the current one, and passes the vast majority of SYCL e2e tests (big exception being tests that hard-code exact sequence of operations expected from the adapter). However, this is still work-in-progress.