77=================================
88
99
10+ Highlights
11+ ----------
12+
13+ - ``cuda.core `` now ships with ``.pyi `` type stubs for all public APIs,
14+ giving IDEs and type checkers full autocompletion and static analysis.
15+ - New :mod: `cuda.core.texture ` module for texture and surface memory:
16+ :class: `~texture.OpaqueArray `, :class: `~texture.MipmappedArray `,
17+ :class: `~texture.TextureObject `, and :class: `~texture.SurfaceObject `,
18+ constructed through the corresponding ``Device.create_* `` factories.
19+ - Richer managed-memory support: the new :class: `ManagedBuffer ` exposes a
20+ property-style advice API (:attr: `~ManagedBuffer.read_mostly `,
21+ :attr: `~ManagedBuffer.preferred_location `,
22+ :attr: `~ManagedBuffer.accessed_by `) with NUMA-aware host locations via the
23+ new :class: `Host ` type, plus batched range operations in
24+ :mod: `cuda.core.utils ` for prefetching and discarding many buffers at once.
25+
26+
1027New features
1128------------
1229
1330- Added :class: `Host ` as the symmetric counterpart of :class: `Device ` for
1431 expressing managed-memory locations: ``Host() `` (any host),
1532 ``Host(numa_id=N) `` (specific NUMA node), and ``Host.numa_current() ``
1633 (calling thread's NUMA node).
34+ (`#1775 <https://github.com/NVIDIA/cuda-python/pull/1775 >`__)
1735
1836- Added :class: `ManagedBuffer `, a :class: `Buffer ` subclass returned by
1937 :meth: `ManagedMemoryResource.allocate ` that exposes a property-style
@@ -30,13 +48,16 @@ New features
3048
3149 Use :meth: `ManagedBuffer.from_handle ` to wrap an existing managed-memory
3250 pointer.
51+ (`#1775 <https://github.com/NVIDIA/cuda-python/pull/1775 >`__)
3352
3453- Added batched managed-memory range operations to :mod: `cuda.core.utils `
3554 (CUDA 13+): :func: `~utils.prefetch_batch `, :func: `~utils.discard_batch `,
3655 and :func: `~utils.discard_prefetch_batch `. Each takes a sequence of
3756 managed :class: `Buffer ` instances and dispatches to the corresponding
3857 ``cuMem*BatchAsync `` driver entry point, addressing the managed-memory
39- portion of #1333. Single-buffer operations are exposed as instance
58+ portion of
59+ `#1333 <https://github.com/NVIDIA/cuda-python/issues/1333 >`__. Single-buffer
60+ operations are exposed as instance
4061 methods on :class: `ManagedBuffer ` (:meth: `~ManagedBuffer.prefetch `,
4162 :meth: `~ManagedBuffer.discard `, :meth: `~ManagedBuffer.discard_prefetch `)
4263 and as property setters (:attr: `~ManagedBuffer.read_mostly `,
@@ -48,13 +69,27 @@ New features
4869 :meth: `system.Device.get_nvlinks ` for device-specific NVLink enumeration.
4970 These APIs avoid relying on the static NVML ``NVML_NVLINK_MAX_LINKS `` macro
5071 when querying the links available on a particular device.
72+ (`#2192 <https://github.com/NVIDIA/cuda-python/pull/2192 >`__)
5173
5274- Added the :attr: `graph.GraphBuilder.graph_definition ` property, which
5375 exposes a captured graph as an explicit :class: `graph.GraphDefinition `
5476 view sharing ownership of the same underlying graph. This enables hybrid
5577 flows that mix the capture and explicit graph-building APIs, such as
5678 inspecting or augmenting a captured graph, or populating a conditional
5779 body entirely through the explicit API.
80+ (`#2026 <https://github.com/NVIDIA/cuda-python/pull/2026 >`__)
81+
82+ - Added the :mod: `cuda.core.texture ` module for texture and surface memory:
83+ :class: `~texture.OpaqueArray ` and :class: `~texture.MipmappedArray ` for
84+ hardware-laid-out array allocations, and :class: `~texture.TextureObject ` and
85+ :class: `~texture.SurfaceObject ` for bindless kernel-side sampled reads and
86+ typed load/store. Objects are constructed from a
87+ :class: `~texture.ResourceDescriptor ` via
88+ :meth: `Device.create_opaque_array `, :meth: `Device.create_mipmapped_array `,
89+ :meth: `Device.create_texture_object `, and :meth: `Device.create_surface_object `.
90+ (`#467 <https://github.com/NVIDIA/cuda-python/issues/467 >`__,
91+ `#2095 <https://github.com/NVIDIA/cuda-python/pull/2095 >`__,
92+ `#2307 <https://github.com/NVIDIA/cuda-python/pull/2307 >`__)
5893
5994- ``cuda.core `` now ships with ``.pyi `` stubs for all public APIs, enabling
6095 users' IDEs and type checkers to provide better autocompletion and static
@@ -70,6 +105,23 @@ Bug fixes
70105 correctly return the process name, if it is a GPU-using process.
71106- :meth: `system.Device.get_nvlink ` now validates link numbers against the
72107 device-specific NVLink count and raises ``ValueError `` for unsupported links.
108+ - Hardened the IPC buffer import path against malformed or untrusted peer
109+ descriptors: descriptor payloads shorter than the driver struct are now
110+ rejected before import
111+ (`#2223 <https://github.com/NVIDIA/cuda-python/pull/2223 >`__), an imported
112+ buffer's size is validated against the mapped allocation extent before any
113+ copy (`#2224 <https://github.com/NVIDIA/cuda-python/pull/2224 >`__), and
114+ negative allocation handles are always rejected, including under ``-O ``
115+ (`#2219 <https://github.com/NVIDIA/cuda-python/pull/2219 >`__).
116+ - :attr: `ManagedBuffer.accessed_by ` now validates every location before
117+ issuing any advice, so a bulk assignment containing an invalid entry can no
118+ longer leave the applied advice in a torn state.
119+ (`#2222 <https://github.com/NVIDIA/cuda-python/pull/2222 >`__)
120+ - Graph nodes now keep their Python-owned attachments (kernel-argument
121+ buffers, host-callback functions and user data, and memcpy/memset operands)
122+ alive for the lifetime of the graph. Previously, keeping these objects alive
123+ was the caller's responsibility.
124+ (`#2280 <https://github.com/NVIDIA/cuda-python/pull/2280 >`__)
73125
74126Deprecated APIs
75127---------------
0 commit comments