-
Notifications
You must be signed in to change notification settings - Fork 197
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
Add missing Thrust includes #678
Conversation
rerun tests |
rerun tests |
I'm going to go ahead and open this for review, because of the long CI delays due to The CI logs indicate 5a3f8f3 is building with Thrust 1.17.0. If CI passes on 5a3f8f3, I will revert all CMake changes so that only the updates to Thrust |
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.
CMake override looks correct. Approving even thought we will need to remove it at some point
rerun tests |
1 similar comment
rerun tests |
@robertmaynard It looks like the pyraft package is failing to build and not finding the Thrust 1.17.0 version override that I specified. Do you have any insight on this?
I pinged @vyasr since I thought it might be scikit-build related at first. He said,
It looks like the C++ side built fine, so maybe we can ignore this problem and just revert the CMake changes / merge as-is. Then hope that the rapids-cmake change to 1.17.0 doesn't break anything. |
@bdice I can't think of any reason why |
Okay. If it's not a dependency, then this is probably an issue with the build system that may be out of scope for this PR (I'd like to get it merged so that the cugraph PR is unblocked). For now, I'm going to revert the manual overrides of rapids-cmake versions and see if CI passes with only the |
Yes, I am also a little confused by that and am going to dig a little deeper. Just to be sure, the libraft builds that happen in CI actually compile the libraries, correct? We're not building pyraft against a header-only libraft? Assuming that is the case, I am not sure where the dependency on Thrust is coming from here. I'll try to dig a little further in a bit. |
@cjnolet what is the purpose of the Definitely think addressing that is out of scope for this PR. |
@vyasr, since RAFT is header only and contains a significant amount of non-thrust code (such as the handle and communicator, as two examples), that option allows users to build without RAFT forcing the |
My guess is that by having both librmm and libraft-headers in the conda env you are getting the version of thrust that exists in librmm which is the older 1.15. For some reason the resolution of this conflict causes a mismatch which causes We would want to add an explicit override and call to |
Right, but the issue is that if we build libraft with the thrust dependency on then when pyraft goes to
is possible. If libraft is header-only, then unless it bundles the thrust files there's no way to avoid the dependency when building pyraft. And I don't think we can bundle because we need libraft (and all other RAPIDS libraries) to use the thrust bundled in librmm to ensure that we use identical thrust across RAPIDS (at least until we switch to using the custom namespaces for thrust).
I was suspicious about that as well, but I wasn't sure because the thrust library that's being found is here:
Does the thrust from librmm get installed directly into the conda environment like this? I thought it would have been installed into some lower namespace contained within rmm directories, but I guess now that I'm thinking that through it doesn't make a whole lot of sense. At minimum the cmake files need to be discoverable in the standard locations I suppose. |
Yes that is the expected location of the 'real' thrust-config.cmake for version 1.15. There exists a
I agree
We most definetly need to ensure a consistent thrust version across all of RAPIDS |
Agreed, I just meant that we could ensure a consistent version while still having separate copies of thrust in each lib (rather than pointing them all at the one from librmm) once we switched to using thrust custom namespaces. |
@gpucibot merge |
Description
This PR cleans up some
#include
s for Thrust. This is meant to help ease the transition to Thrust 1.17 when that is updated in rapids-cmake.Context
Version 1.16 of Thrust reduced the number of internal header inclusions:
I am making similar changes across all RAPIDS libraries to clean up includes ("include what we use," in essence) to make sure we have compatibility with future versions of Thrust.