cuda.core 1.0.0 release prep: support policy, docs, and release notes#2032
cuda.core 1.0.0 release prep: support policy, docs, and release notes#2032leofang wants to merge 4 commits intoNVIDIA:mainfrom
Conversation
Add support.rst covering versioning (SemVer), CUDA version support (dual major versions), Python version support (CPython EOL schedule), free-threading (experimental), and release cadence (bimonthly). Closes NVIDIA#2030
- Update cuda.coop and cuda.compute URLs from the old
nvidia.github.io/cccl/python/{coop,compute} paths (now 404)
to the current unstable doc paths.
- Add nvFatbin and NVML to the cuda.bindings interface list.
- Update all three synced files: README.md, cuda_python/DESCRIPTION.rst,
and cuda_python/docs/source/index.rst.
Add new features (green contexts, system.Device NVML APIs, system.typing module, NVML enum re-wrapping), breaking changes (tensor bridge behavior, system.Device renames, privatized helper classes, UUID format change, removed enums), and bug fixes (is_managed for pool alloc, nvJitLink log error handling, NVML event set init, Device.arch unknown, empty field values, runtime error messages, wheel size reduction).
- api.rst: replace pre-1.0 warning with stable-API statement and link to support policy. - install.rst: update free-threading version reference from 0.4.0 to 1.0.0. - nv-versions.json: add 1.0.0 entry for the version switcher dropdown.
| :meth:`Device.create_context`, then use :meth:`Context.create_stream` and | ||
| :attr:`Context.resources` to work within the partitioned resources. | ||
| (`#1976 <https://github.com/NVIDIA/cuda-python/pull/1976>`__) | ||
| - Added the :mod:`cuda.core.system` module for NVIDIA Management Library (NVML) |
There was a problem hiding this comment.
This was added in 0.6.0. Below is just changes (additions) to it.
| - Added the :mod:`cuda.core.system` module for NVIDIA Management Library (NVML) | |
| - Changes to :mod:`cuda.core.system` module for NVIDIA Management Library (NVML) |
| - Moved all :mod:`cuda.core.system` enums into a new :mod:`cuda.core.system.typing` | ||
| module. Imports from ``cuda.core.system`` continue to work but the canonical | ||
| location is now ``cuda.core.system.typing``. | ||
| (`#2022 <https://github.com/NVIDIA/cuda-python/pull/2022>`__) |
There was a problem hiding this comment.
This is really part of the note above. The fact that we merged it and them immediately moved it is uninteresting to our users. It's also dangerously incorrect (their old locations will not continue to work, publicly).
| - Moved all :mod:`cuda.core.system` enums into a new :mod:`cuda.core.system.typing` | |
| module. Imports from ``cuda.core.system`` continue to work but the canonical | |
| location is now ``cuda.core.system.typing``. | |
| (`#2022 <https://github.com/NVIDIA/cuda-python/pull/2022>`__) |
| - Removed ``BrandType``, ``NvlinkVersion``, ``PcieUtilCounter``, ``Pstates``, | ||
| and ``TemperatureSensors`` enums from ``cuda.core.system``; the underlying | ||
| values are now returned as plain strings or accessed through other APIs. | ||
| (`#2014 <https://github.com/NVIDIA/cuda-python/pull/2014>`__) |
There was a problem hiding this comment.
Covered by the enum changes above.
| - Removed ``BrandType``, ``NvlinkVersion``, ``PcieUtilCounter``, ``Pstates``, | |
| and ``TemperatureSensors`` enums from ``cuda.core.system``; the underlying | |
| values are now returned as plain strings or accessed through other APIs. | |
| (`#2014 <https://github.com/NVIDIA/cuda-python/pull/2014>`__) |
| - Fixed a potential crash when NVML event set creation failed, due to | ||
| ``__dealloc__`` freeing an uninitialized handle. | ||
| (`#1992 <https://github.com/NVIDIA/cuda-python/pull/1992>`__) |
There was a problem hiding this comment.
| - Fixed a potential crash when NVML event set creation failed, due to | |
| ``__dealloc__`` freeing an uninitialized handle. | |
| (`#1992 <https://github.com/NVIDIA/cuda-python/pull/1992>`__) | |
| - Fixed a potential crash when NVML event set creation failed on Windows, due to | |
| ``__dealloc__`` freeing an uninitialized handle. | |
| (`#1992 <https://github.com/NVIDIA/cuda-python/pull/1992>`__) |
|
|
||
| - **Major**: Bumped when a new CUDA major release is out and support for the oldest CUDA major | ||
| version is dropped. Breaking API changes only happen at major-version boundaries. | ||
| - **Minor**: Bumped when new, backward-compatible features are added, or when a new Python minor |
There was a problem hiding this comment.
Python calls these "feature releases", because "minor" sort of makes sense because it's the second number, it undersells the importance of them (and it doesn't follow semver anyway).
| - **Minor**: Bumped when new, backward-compatible features are added, or when a new Python minor | |
| - **Minor**: Bumped when new, backward-compatible features are added, or when a new Python feature |
| ``cuda.core`` supports all Python versions following the `CPython EOL schedule | ||
| <https://devguide.python.org/versions/>`_. As of writing, Python 3.10 – 3.14 are supported. | ||
|
|
||
| When a new Python minor version is released and the oldest supported version reaches EOL, |
There was a problem hiding this comment.
| When a new Python minor version is released and the oldest supported version reaches EOL, | |
| When a new Python feature version is released and the oldest supported version reaches EOL, |
| - Supported CUDA versions | ||
| * - 1.x | ||
| - 12, 13 | ||
|
|
There was a problem hiding this comment.
Do we want to add that certain features in cuda_core may require a specific minimum version of cuda_bindings? (I'm thinking of NVML support specifically, but that may not be the only case). Saying it supports "any 12 or 13" is a bit misleading.
As a minimum, I'm going to file another pull request to document the minimum required cuda_bindings version that will set next to the cuda.core.system docs.
| - Re-wrapped NVML enums as human-readable ``StrEnum`` subclasses instead of raw | ||
| integer re-exports from ``cuda.bindings.nvml``. Added | ||
| :class:`~system.typing.GpuP2PCapsIndex`, :class:`~system.typing.GpuP2PStatus`, | ||
| and :class:`~system.typing.GpuTopologyLevel` enums. | ||
| (`#2014 <https://github.com/NVIDIA/cuda-python/pull/2014>`__) |
There was a problem hiding this comment.
| - Re-wrapped NVML enums as human-readable ``StrEnum`` subclasses instead of raw | |
| integer re-exports from ``cuda.bindings.nvml``. Added | |
| :class:`~system.typing.GpuP2PCapsIndex`, :class:`~system.typing.GpuP2PStatus`, | |
| and :class:`~system.typing.GpuTopologyLevel` enums. | |
| (`#2014 <https://github.com/NVIDIA/cuda-python/pull/2014>`__) | |
| - Re-wrapped NVML enums as human-readable ``StrEnum`` subclasses instead of raw | |
| integer re-exports from ``cuda.bindings.nvml``. These are available in | |
| ``cuda.core.system.typing``. |
There was a problem hiding this comment.
It will probably generate a merge conflict as a reminder, but not to selves: /IF/ we choose to merge #2037, we should make sure typing -> enums here.
There was a problem hiding this comment.
#2037 not being merged, so we are good as-is here.
Summary
cuda_core/docs/source/support.rstcovering versioning (SemVer), CUDA version support (dual major versions), Python version support (CPython EOL schedule), experimental free-threading support, and release cadence (bimonthly target). Closes Document cuda.core support policy #2030.cuda.coopandcuda.compute(old paths return 404), and add missingnvFatbinandNVMLto thecuda.bindingsinterface list across all 3 synced files (README.md,cuda_python/DESCRIPTION.rst,cuda_python/docs/source/index.rst).api.rstpre-1.0 warning to stable-API statement,install.rstfree-threading version reference, and add 1.0.0 entry tonv-versions.json.Closes #2030