Summary
RMM 26.06 completes the migration to CCCL-native memory resources (tracked in #2011). This introduces a large number of breaking changes for downstream consumers. A migration guide is needed to document these changes and provide concrete upgrade patterns.
Migration Guide Contents
Draft PR: #2344
The guide covers:
C++ breaking changes
- Removal of
device_memory_resource base class — resources now satisfy cuda::mr::resource concept directly
- De-templating of all resources and adaptors (
Upstream parameter removed)
- Upstream resources passed as
device_async_resource_ref instead of raw pointers
- Allocation/deallocation signature changes (
stream moves to first parameter, alignment added)
cuda::mr::shared_resource-based ownership model (resources are copyable value types)
- Removal of
owning_wrapper
- Per-device resource API changes (
_ref variants only)
device_buffer internal changes
- Removal of
device_memory_resource_view
- Resource implementations are now compiled (must link
librmm)
Custom resource migration
- Full CCCL resource concept requirements:
allocate/deallocate (async) + allocate_sync/deallocate_sync (sync) + operator== + get_property friend
- Copyability requirement for
any_resource — wrapping non-copyable state (mutexes, unique_ptrs) in std::shared_ptr
get_property friend cannot be defined in function-scoped (local) classes — must be at namespace scope
Python/Cython migration
DeviceMemoryResource internal representation change (optional[device_async_resource_ref] c_ref)
- Downstream
.pxd declarations: device_memory_resource *mr → device_async_resource_ref mr
- Downstream
.pyx files: mr.get_mr() → mr.c_ref.value() (works inside with nogil: blocks)
Remaining work
Summary
RMM 26.06 completes the migration to CCCL-native memory resources (tracked in #2011). This introduces a large number of breaking changes for downstream consumers. A migration guide is needed to document these changes and provide concrete upgrade patterns.
Migration Guide Contents
Draft PR: #2344
The guide covers:
C++ breaking changes
device_memory_resourcebase class — resources now satisfycuda::mr::resourceconcept directlyUpstreamparameter removed)device_async_resource_refinstead of raw pointersstreammoves to first parameter,alignmentadded)cuda::mr::shared_resource-based ownership model (resources are copyable value types)owning_wrapper_refvariants only)device_bufferinternal changesdevice_memory_resource_viewlibrmm)Custom resource migration
allocate/deallocate(async) +allocate_sync/deallocate_sync(sync) +operator==+get_propertyfriendany_resource— wrapping non-copyable state (mutexes, unique_ptrs) instd::shared_ptrget_propertyfriend cannot be defined in function-scoped (local) classes — must be at namespace scopePython/Cython migration
DeviceMemoryResourceinternal representation change (optional[device_async_resource_ref] c_ref).pxddeclarations:device_memory_resource *mr→device_async_resource_ref mr.pyxfiles:mr.get_mr()→mr.c_ref.value()(works insidewith nogil:blocks)Remaining work