Skip to content

Add migration guide for RMM 26.04 → 26.06 breaking changes #2345

@bdice

Description

@bdice

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

  1. Removal of device_memory_resource base class — resources now satisfy cuda::mr::resource concept directly
  2. De-templating of all resources and adaptors (Upstream parameter removed)
  3. Upstream resources passed as device_async_resource_ref instead of raw pointers
  4. Allocation/deallocation signature changes (stream moves to first parameter, alignment added)
  5. cuda::mr::shared_resource-based ownership model (resources are copyable value types)
  6. Removal of owning_wrapper
  7. Per-device resource API changes (_ref variants only)
  8. device_buffer internal changes
  9. Removal of device_memory_resource_view
  10. Resource implementations are now compiled (must link librmm)

Custom resource migration

  1. Full CCCL resource concept requirements: allocate/deallocate (async) + allocate_sync/deallocate_sync (sync) + operator== + get_property friend
  2. Copyability requirement for any_resource — wrapping non-copyable state (mutexes, unique_ptrs) in std::shared_ptr
  3. get_property friend cannot be defined in function-scoped (local) classes — must be at namespace scope

Python/Cython migration

  1. DeviceMemoryResource internal representation change (optional[device_async_resource_ref] c_ref)
  2. Downstream .pxd declarations: device_memory_resource *mrdevice_async_resource_ref mr
  3. Downstream .pyx files: mr.get_mr()mr.c_ref.value() (works inside with nogil: blocks)

Remaining work

  • Review and iterate on the migration guide based on feedback from downstream library migrations (cudf, raft, cuml, cugraph, rapidsmpf)
  • Finalize the guide once all downstream PRs in [FEA] Support memory resources from CCCL 3.2 #2011 are merged
  • Consider adding a "Troubleshooting" section for common compilation errors encountered during migration

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    To-do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions