NVIDIA / NVIDIA/cuda-python

[cuda.core] Add support for Multicast Objects

Offen
#2,057 4 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@juenglin arbeitet bereits daran.

Seit 30.7.2026.

cuda.core feature P1
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, and VirtualMemoryResource
  • 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 include host_launch and Library (cuLibrary) APIs; those
    can be filed separately.
  • Relevant driver APIs: cuMulticastCreate, cuMulticastAddDevice,
    cuMulticastBindMem, cuMulticastBindAddr, cuMulticastUnbind,
    cuMulticastGetGranularity.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.