[cuda.core] Add support for Multicast Objects
@juenglin arbeitet bereits daran.
Seit 30.7.2026.
- Vorherrschende Sprache
- Cython
- Sterne
- 3.4k
- Forks
- 329
- Ø Merge
- 1 T. 23 Std.
- Gemergte PRs (30 T.)
- 116
Beschreibung
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.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Bewertung
Dieses Issue wurde noch nicht bewertet.