-
Notifications
You must be signed in to change notification settings - Fork 22
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
Switch to CCCL / Thrust 2.0 for CUDA 11.x builds #1021
Milestone
Comments
Edited to adapt this to CCCL, the combined successor to thrust, cub and libcudacxx. |
ptheywood
changed the title
Thrust 2.0 for CUDA 11.x builds
Switch to CCCL / Thrust 2.0 for CUDA 11.x builds
Nov 28, 2023
11 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
CUDA 12 ships with Thrust/CUB 2.0. It's a new major release, but fortunatley we do not use any of the removed / breaking changes. It does add libcudacxx as a depenceny, which is distributed with CUDA, so 12.0 builds are fine.
CUDA 11.x builds are less fine, where if we clone thrust 2.0 the libcudacxx submodule causes path length issues when cloning the submodule on windows for the standalone example, and the current rc builds error in 11.0 atleast.
We could move to Thrust 2.0 everywhere, once there is a thrust 2.x release on github, but will need to workaround some issues.
Or we can just keep with 1.16+, and if CUB/Thrust in a future release cause breakages with our usage we can just #ifdef around it? I.e. make it a future problem rather than trying to pre-empt it.
Edit
As of October 2023, Thrust, cub and libcudacxx have been combined into CCCL. We might need to make changes so we can leverage this as the thrust/cub interfaces and cmake evovle.
https://github.com/NVIDIA/cccl
CCCL is compatible with older cuda's.
I.e. we can't hard pin to a particualr version and stay supported, will need to check the version, and not fetch if cuda's is newer to stay supported. We roughly do this with thrust currently, but some version's of thrust's cmake didn't get along with being unfound iirc.
However due to cuda's magic include dirs, can't isystem it (I sketchily managed this in the past with cub/thrust, but think I had to remove that when the thrust cmake changed at one point).
Not all features will work with CUDA 11 either (those that depend on C++20), but we dont' want those anyway.
As this changes the cmake target(s) we link against, this will also prevent issues with thrust 1 vs 2 cmake suggested above, by always requiring CCCL.
The text was updated successfully, but these errors were encountered: