-
Notifications
You must be signed in to change notification settings - Fork 47
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
Always download CCCL. #522
Conversation
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'm not sure that this is the fix that we want, it's too narrow. IIUC we'd have a similar problem for any package that has patches? I think what we want to do is to add logic to rapids_cpm_find
that checks if a PATCH_COMMAND
is passed and forces downloading if so. That will generally work for the case that CPM is well designed for, i.e. building from source. The downside is that in our common use case of conda packaging it will force clobbering because everything will download, but I think that's OK since it's already effectively the case.
It looks like we're already observing this behavior in at least one place. Here's an rmm PR where spdlog is being installed into the conda environment and used, but we have a patch for spdlog. That raises a separate question of whether the patch is maybe unnecessary? But the behavior we're observing doesn't seem right to me. |
Hmm but this is tricky. It seems like |
@vyasr Thanks for digging into this. I wondered the same kind of thing but didn't know how to pursue that question as far as you have. I'll wait for feedback from @robertmaynard on this, but we want to figure this out for 24.02 because we don't want builds from source with CUDA 12.2 to be broken. |
For sure, and I agree on the timeline. If necessary we can always merge a stopgap solution while brainstorming about the longer-term solution. Thinking about this more, the right solution is quite tricky, but perhaps involves multiple pieces:
Maybe I'm overthinking this and there's a simpler way, I'll wait for Robert in case I'm overlooking obvious simpler solutions. I've started prototyping 2/3 above, though, so I can push those changes if we agree that they're right. The change to CPM.cmake isn't necessary for us to proceed. |
ExternalProject treats an empty string or no string the same as a way to disable / ignore that command. So in both cases that would resolve to no
Rapids-cmake needs to obey source tree overrides even when in the presence of I think we can modify 2 and 3 as follows and ensure we always use a patch version of a project when provided:
|
Sounds good. I'll work on that change, should be able to have something by Tuesday (Monday is a holiday). |
#525 will replace this PR. |
Closing in favor of #525 |
Description
I saw an issue in rapidsai/raft#2092 that can be fixed by always downloading CCCL, so that we can get the required patches for
CCCL::Thrust
install rules. This affects CUDA 12.2 builds because that CTK version ships CCCL 2.2.0 (therefore it has a matching local package).xref: rapidsai/raft#2092 (comment)
Note: This PR should target 24.02 even if we slip CUDA 12.2 conda/wheel builds to 24.04, since it fixes an issue with source builds using CUDA 12.2.
Checklist
cmake-format.json
is up to date with these changes.include_guard(GLOBAL)
)