[cuda.core] Add support for Multicast Objects
@juenglin is already working on this.
Since Jul 30, 2026.
- Dominant language
- Cython
- Stars
- 3.4k
- Forks
- 329
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 116
Description
Feature Request
Add Python bindings and a cuda.core abstraction for CUDA Multicast Objects
(the cuMulticastCreate / cuMulticastAddDevice / cuMulticastBindMem /
cuMulticastBindAddr / cuMulticastUnbind family of driver APIs).
Motivation
Multicast Objects enable a single virtual address to multicast memory accesses
across multiple devices, which is foundational for efficient multi-GPU
collectives and SHARP-style reductions on NVLink-connected systems (Hopper+
and beyond). They are already exposed via the low-level cuda.bindings driver
API, but there is no high-level cuda.core object wrapping them.
This is one of the last major CUDA driver features without a cuda.core
counterpart. Internal teams building multi-GPU libraries (RAPIDS, Triton,
cuBLASMp, etc.) currently have to drop to raw driver calls.
Proposed Scope
- A
MulticastObject(or similarly named) class with:- Constructor / factory taking granularity + participating-device list
add_device(device)/bind_memory(buffer)/bind_address(...)/
unbind(...)methods- Context-manager lifecycle (auto-release on exit)
- Integration with existing
Device,Buffer, andVirtualMemoryResource
- Query helpers for multicast granularity (
cuMulticastGetGranularity) - Example(s) under
cuda_core/examples/demonstrating a simple 2-GPU
multicast allreduce-style pattern - API reference entry in
cuda_core/docs/source/api.rst
Related
- Tracking gaps identified in cuda.core feature audit (Nov 2025) — other
untracked gaps includehost_launchandLibrary(cuLibrary) APIs; those
can be filed separately. - Relevant driver APIs:
cuMulticastCreate,cuMulticastAddDevice,
cuMulticastBindMem,cuMulticastBindAddr,cuMulticastUnbind,
cuMulticastGetGranularity.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.