Skip to content

Commit 07730dc

Browse files
committed
docs(core): finalize 1.1.0 release notes
Add a Highlights section, backfill PR/issue links on New features entries, and add Bug fixes entries for the v1.1.0 IPC import hardening (NVIDIA#2219, NVIDIA#2223, NVIDIA#2224), the ManagedBuffer.accessed_by torn-state fix (NVIDIA#2222), and graph node attachment lifetimes (NVIDIA#2280). Highlights (per review): the .pyi type-stub support and the new cuda.core.texture module; NVLink enumeration is covered in New features / Bug fixes rather than as a highlight. Also adds a New features entry for the cuda.core.texture module (NVIDIA#467, NVIDIA#2095, NVIDIA#2307).
1 parent 8b20f77 commit 07730dc

1 file changed

Lines changed: 53 additions & 1 deletion

File tree

cuda_core/docs/source/release/1.1.0-notes.rst

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,31 @@
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+
1027
New 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

74126
Deprecated APIs
75127
---------------

0 commit comments

Comments
 (0)