-
Notifications
You must be signed in to change notification settings - Fork 116
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
[UR] Remove UMF sources and use standalone UMF repo instead #1216
Conversation
06b1194
to
903172f
Compare
Do you have a rationale for such a change? Splitting repos can make synchronization quite hard despite some marginal maintenance-adjacent benefits. I'm wary about such splits while it still requires 3 merge requests between UR and intel/llvm before a patch is truly landed. Until that situation is sorted, I fear a change like this will compound this maintenance complexity. Thoughts? |
UMF has become a separate project with its own repository. It is currently under active development and is intended to be used by various oneAPI components, not just UR. All further enhancements and fixes will only go into the UMF repository - we do not plan to merge such changes here in the UR repository and into the UMF repository separately, so downloading UMF from its own repository makes it easier to manage. |
@kbenzie could you please take a look? Also, I have one question: Would it be OK if UMF (and hence UR) had a dependency on hwloc? Hwloc will be needed to enable 'OS memory provider' that is currently disabled and for other features like topology discovery that will be used by other oneAPI components. |
As for UMF being a separate project, I think this change makes sense. 👍
Would the dependency be dynamic? In principal I don't have an issue with the dependency but I'd like to avoid a situation where a user doesn't have hwloc available and that causes SYCL programs to crash. |
Thanks. That should go in the body of the commit message. Otherwise, I defer to kbenzie's expert judgment |
903172f
to
7fa65fe
Compare
Of course, done. |
Ideally hwloc would be a static dependency. As far as I know hwloc is already distributed inside oneapi packages so there should not be any issues with distribution. (But in any way, I do not add any extra dependency in this PR). |
7fa65fe
to
2b907c4
Compare
Codecov ReportAttention:
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## main #1216 +/- ##
==========================================
- Coverage 15.58% 13.21% -2.38%
==========================================
Files 232 220 -12
Lines 32089 31194 -895
Branches 3638 3551 -87
==========================================
- Hits 5001 4121 -880
- Misses 27037 27069 +32
+ Partials 51 4 -47 ☔ View full report in Codecov by Sentry. |
2b907c4
to
5fd1722
Compare
Oh, if its statically linked users shouldn't even notice, right? In that case I don't see any issues adding the dependency. |
Actually, sorry, I'm not yet sure if we'll link statically or dynamically. I will take a look at how other oneAPI components are using it and I'll specify that when I create a PR with adding the dependency. We can discuss it then and change the approach if necessary. |
@kbenzie are you OK merging this PR as is, or do you need more time to review it? |
We'll need approvals from all the touched 4 adapters (@oneapi-src/unified-runtime-opencl-write, @oneapi-src/unified-runtime-hip-write, @oneapi-src/unified-runtime-cuda-write, @oneapi-src/unified-runtime-level-zero-write) as well as shared code (@oneapi-src/unified-runtime-maintain). I'll take a look for the OpenCL adapter and shared code but the other adapter teams will need to approve also. |
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.
LGTM for level-zero
@@ -19,9 +17,31 @@ target_include_directories(ur_common PUBLIC | |||
${CMAKE_SOURCE_DIR}/include | |||
) | |||
|
|||
message(STATUS "Download Unified Memory Framework from github.com") |
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.
In dpc++ we have a switch to enable building against a local checkout of unified runtime. Should we have the same thing here?
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.
I don't think there will be many changes required in the UR when bumping UMF version in the future.
However, we've had some discussion about potentially moving some of the memory provider logic for L0 and CUDA to UMF - if we decide to do that, then adding such a switch might a good idea.
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.
HIP and CUDA look 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.
👍
FYI, I've create a testing PR to llvm (with this patch rebased on main from a few days ago): intel/llvm#12570 |
@kbenzie do you have an estimate on when you will merge it? is there any extra testing you would like me to do? |
I was on holiday last week. No additionally testing necessary, we'll aim to merge it this week. |
5fd1722
to
e3eff58
Compare
@igchor I rebased this to test against the latest main changes before merging, seems like a fix in required for the native cpu cmake, hopefull its a straight forward fix?
|
UMF has become a separate project with its own repository. It is currently under active development and is intended to be used by various oneAPI components, not just UR. All further enhancements and fixes will only go into the UMF repository - we do not plan to merge such changes here in the UR repository and into the UMF repository separately.
e3eff58
to
db5c33b
Compare
Yes, I just had to remove reference to |
oneapi-src/unified-runtime#1216 --------- Co-authored-by: Kenneth Benzie (Benie) <k.benzie@codeplay.com>
oneapi-src#1216 mistakenly removed linking adapters with Threads library (threads lib was linked with disjoint_pool). Fix this.
Before oneapi-src#1216 adapters linked with disjoint_pool library that linked with Threads library. PR oneapi-src#1216 replace disjoint_pool with a version from UMF library that does not link with Threads lib explicitly which leads to compilation error on xmain. Fix this by explicitly adding adding Threads to ur_common.
No description provided.