cuda.core 1.2.0 Release Notes#

Fixes and enhancements#

  • Graph node resources are now retained independently across graph clones, executable graphs, updates, node deletion, and in-flight launches. Previously, modifying a graph definition could release resources still used by an existing executable graph. Releasing graph-attached objects could also call CUDA from a CUDA-invoked callback, where CUDA API calls are prohibited; these objects are now released from a safe context. (#2357, #2371)

  • Added update() methods to kernel, memcpy, memset, child-graph, event record, event wait, and host-callback graph definition nodes. Updates change parameters used by future graph instantiations without affecting existing executable graphs. This feature requires CUDA driver and cuda.bindings versions 12.2 or newer. (#2352)

  • Added graph[node] views for updating nodes in an executable graph. Kernel, memcpy, memset, child-graph, event, and host-callback parameters can be replaced without reinstantiating the graph. Kernel, memcpy, and memset nodes can also be enabled or disabled. Resources introduced by these updates remain alive through in-flight launches. Superseded resources stay retained until a successful whole-graph update or executable graph destruction. This feature requires CUDA driver and cuda.bindings versions 12.2 or newer. (#2353, #2354)

  • Linker.which_backend() and constructing a Linker no longer raise FunctionNotFoundError when an nvJitLink older than 12.3 (12.0–12.2) is installed. These versions do not export the unversioned nvJitLinkVersion symbol, so probing the version crashed instead of falling back. cuda.core now warns and falls back to the driver (cuLink) backend, restoring the pre-0.7.0 behavior. (#2409, closes #2408)

Deprecation Notices#

  • Support for using cuda-core with Python 3.10 is deprecated and will be removed in a future version. Python 3.10 reaches end of life in October 2026 per the CPython support cycle.