NVIDIA / NVIDIA/cuda-python

cuda.core: support multidimensional and array-backed graph memcpy nodes

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

@Andy-Jost arbeitet bereits daran.

Seit 24.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

Background

GraphDefinition.memcpy() currently models only a 1D pointer-to-pointer copy, while CUDA graph memcpy nodes contain full CUDA_MEMCPY3D descriptors with offsets, pitches, height/depth, and array endpoints. Captured or externally created graphs can therefore contain memcpy nodes that cuda.core cannot faithfully inspect or mutate.

This is a follow-up to #2352 and #2395.

Scope

Add end-to-end support for multidimensional and array-backed graph memcpy nodes, including:

  • Explicit construction of 2D/3D, pitched, offset, and array-backed copies.
  • Node properties that faithfully represent the complete copy descriptor.
  • Partial updates that preserve every omitted descriptor field. CUDA 13.2 and newer should preserve the recorded copy context automatically; on CUDA 12.2 through 13.1, the intended context must be current during updates.
  • Correct ownership handling for pointer, host-memory, and array endpoints.
  • Reconstruction of explicit, captured, and externally created memcpy nodes without flattening them to 1D.
  • Public API documentation and release notes.

Acceptance criteria

  • Explicitly constructed and captured 2D/3D memcpy nodes round-trip through inspection without losing descriptor fields.
  • Pitched, offset, and array-backed copies can be constructed, instantiated, and launched successfully.
  • Partial updates change only requested fields and preserve ownership metadata. CUDA 13.2 and newer preserve the recorded context; the current-context requirement for CUDA 12.2 through 13.1 is documented.
  • Existing executable graphs retain their old parameters and resources after definition updates.
  • Unsupported endpoint or descriptor combinations fail before mutating the graph.
  • Tests cover host/device pointers, pitched and offset copies, array endpoints, reconstruction, ownership lifetime, context behavior, and failed-update atomicity.

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.