@@ -11,6 +11,18 @@ Highlights
1111
1212- Support for Python 3.10 is dropped (end of life).
1313
14+ - ``cuda.core `` now requires a minimum ``cuda-bindings `` version per CUDA major: 12.9.8 for
15+ CUDA 12 and 13.5.0 for CUDA 13. See the breaking changes below.
16+
17+ - :class: `VirtualMemoryResource ` buffers can be shared with other processes through POSIX file
18+ descriptors or fabric handles.
19+
20+ - :func: `host_launch ` enqueues a Python callable or a compiled host function on a stream in
21+ stream order.
22+
23+ - A new :doc: `error handling <../error_handling >` policy: :class: `CUDAWarning ` reports CUDA
24+ errors that cannot be raised, and :class: `CUDAOutOfMemoryError ` is a :class: `MemoryError `.
25+
1426Breaking Changes
1527----------------
1628
@@ -72,8 +84,27 @@ New features
7284 linker. :meth: `Linker.link ` also accepts ``"ltoir" `` on nvJitLink 13.3 or
7385 newer so incremental LTO chains can retain IR until their final link. Direct
7486 PTX and CUBIN inputs are rejected for this target because they carry no LTOIR
75- and nvJitLink would otherwise silently omit them.
76- (`#2369 <https://github.com/NVIDIA/cuda-python/issues/2369 >`__)
87+ and nvJitLink would otherwise silently omit them. Incremental links with
88+ link-time optimization disable the nvJitLink intermediate cache, which
89+ crashed after repeated links on Windows.
90+ (`#2369 <https://github.com/NVIDIA/cuda-python/issues/2369 >`__,
91+ `#3038 <https://github.com/NVIDIA/cuda-python/issues/3038 >`__)
92+
93+ - Added the ``priority `` option to :class: `LaunchConfig `, which sets the
94+ execution priority of a kernel launch. Lower numbers are higher priorities.
95+ The valid range is the device's stream priority range, as for
96+ :attr: `StreamOptions.priority `. A nonzero value outside it raises
97+ ``ValueError ``.
98+ (`#2631 <https://github.com/NVIDIA/cuda-python/issues/2631 >`__)
99+
100+ - Added the ``cluster_scheduling_policy_preference `` option to
101+ :class: `LaunchConfig `: ``"DEFAULT" ``, ``"SPREAD" ``, or
102+ ``"LOAD_BALANCING" ``. It requires compute capability 9.0 or newer.
103+ (`#2629 <https://github.com/NVIDIA/cuda-python/issues/2629 >`__)
104+
105+ - The PyTorch tensor bridge uses the stable ``PyObject `` to ``Tensor `` C API
106+ of PyTorch 2.14 and newer, and no longer caps the supported PyTorch
107+ version. PyTorch 2.3 to 2.13 keep the previous path.
77108
78109- Added the read-only :attr: `ManagedBuffer.last_prefetch_location ` property,
79110 which reports the destination requested by the most recent explicit
@@ -296,8 +327,8 @@ Fixes and enhancements
296327
297328- When a :class: `Device ` method has to run in the device's context and the
298329 caller's context cannot be restored afterwards, the created resource is
299- destroyed and the raised ``CUDAError `` now carries a note (Python 3.11+;
300- appended to the message on 3.10) stating that the caller's context could not
330+ destroyed and the raised ``CUDAError `` now carries a note
331+ stating that the caller's context could not
301332 be restored and which context is current. Previously the error named only
302333 the driver status of the failed ``cuCtxSetCurrent `` call. If the call itself
303334 failed as well, its error is raised and the restoration failure is the note.
@@ -315,8 +346,7 @@ Fixes and enhancements
315346 context is current, returning ``None ``.
316347
317348- A failed rollback of a partially embedded child graph node is now attached
318- as a note to the exception that triggered the rollback (reported as
319- :class: `CUDAWarning ` on Python 3.10), and a failed ``cuStreamEndCapture ``
349+ as a note to the exception that triggered the rollback, and a failed ``cuStreamEndCapture ``
320350 made when a still-building :class: `~graph.GraphBuilder ` is garbage collected
321351 is now reported as :class: `CUDAWarning `; both were silent.
322352
@@ -447,6 +477,33 @@ Fixes and enhancements
447477 cuda.core error, please report".
448478 (`#3202 <https://github.com/NVIDIA/cuda-python/issues/3202 >`__)
449479
480+ - A process that made a device current with :meth: `Device.set_current ` no
481+ longer crashes at interpreter shutdown. The primary context was released
482+ from a thread-local destructor after Python had finalized.
483+ (`#2743 <https://github.com/NVIDIA/cuda-python/issues/2743 >`__)
484+
485+ - :meth: `Buffer.from_ipc_descriptor ` no longer deadlocks when two threads
486+ import IPC buffers at the same time.
487+ (`#2840 <https://github.com/NVIDIA/cuda-python/issues/2840 >`__)
488+
489+ - :class: `Linker ` passes boolean nvJitLink options as ``1 `` or ``0 ``.
490+ Newer nvJitLink versions reject the ``true `` and ``false `` values that it
491+ passed before.
492+ (`#3254 <https://github.com/NVIDIA/cuda-python/issues/3254 >`__)
493+
494+ - :class: `Program ` with ``code_type="nvvm" `` now raises :class: `CUDAError `
495+ for twelve :class: `ProgramOptions ` fields that libNVVM cannot use, such as
496+ ``pch `` and ``no_cache ``. Before, they were silently ignored.
497+ (`#2954 <https://github.com/NVIDIA/cuda-python/issues/2954 >`__)
498+
499+ - A failed IPC export that receives an invalid file descriptor from the
500+ driver now raises the original error. The rollback used to close the
501+ invalid descriptor and replace the error with ``EBADF ``.
502+
503+ - A new graph no longer adopts the metadata of a destroyed graph when the
504+ driver reuses its handle address. Cleanup of the old graph could
505+ invalidate the new one.
506+
450507Deprecations
451508------------
452509
@@ -456,3 +513,15 @@ Deprecations
456513
457514 - ``TimeoutError `` is now ``NvmlTimeoutError ``.
458515 - ``MemoryError `` is now ``NvmlMemoryError ``.
516+
517+ Known issues
518+ ------------
519+
520+ - :class: `PinnedMemoryResource ` rejects ``HOST_NUMA `` pools on CUDA 12.6 to
521+ 12.8 drivers, although the driver supports them. This regression is present
522+ since 1.2.0.
523+ (`#2795 <https://github.com/NVIDIA/cuda-python/issues/2795 >`__)
524+
525+ - :meth: `SMResource.split ` with ``dry_run=True `` raises on
526+ CUDA 13 when a group requests a nonzero SM count.
527+ (`#2765 <https://github.com/NVIDIA/cuda-python/issues/2765 >`__)
0 commit comments