Fix injected class name bug in cccl_resource_ref constraints, use cuda::std::optional#2188
Merged
rapids-bot[bot] merged 2 commits intorapidsai:mainfrom Dec 18, 2025
Conversation
Inside a class template like cccl_resource_ref<ResourceType>, the bare name cccl_resource_ref refers to the injected class name (the current instantiation), not the class template. The is_specialization_of_v trait requires a class template as its second argument, causing a type/value mismatch error. Use fully qualified names (::rmm::detail::cccl_resource_ref and ::rmm::detail::cccl_async_resource_ref) to bypass the injected class name and correctly refer to the class template.
Replace std::optional with cuda::std::optional from libcu++ in cccl_resource_ref and cccl_async_resource_ref. The standard library std::optional lacks CUDA annotations and cannot be used in __device__ or __host__ __device__ contexts, causing warnings when thrust_allocator (which has __host__ __device__ constructors) copies its resource ref member.
vyasr
approved these changes
Dec 18, 2025
33 tasks
Collaborator
Author
|
/merge |
Collaborator
Author
|
CI passed for the testing with CCCL 3.2 via #2106. Merging. |
Collaborator
Author
|
/merge |
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Inside a class template like
cccl_resource_ref<ResourceType>, the bare namecccl_resource_refrefers to the injected class name (the current instantiation), not the class template. Theis_specialization_of_vtrait requires a class template as its second argument, causing a type/value mismatch error.Use fully qualified names (
::rmm::detail::cccl_resource_refand::rmm::detail::cccl_async_resource_ref) to bypass the injected class name and correctly refer to the class template.Also replaced
std::optionalwithcuda::std::optionalto fix a failure wherermm::mr::thrust_allocatorderives fromthrust::device_malloc_allocatorwhich has__device__constructors.This fixes bugs observed in https://github.com/rapidsai/rmm/actions/runs/20351412120/job/58476756910?pr=2106.