Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 5 additions & 14 deletions .github/workflows/build-wheel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ on:
required: false
type: boolean
default: false
python-versions:
description: "JSON-encoded array of Python versions to build (e.g. '[\"3.11\",\"3.12\"]'). ci.yml sources this from ci/versions.yml."
required: true
type: string

defaults:
run:
Expand All @@ -47,20 +51,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version:
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"
- "3.14t"
- "3.15"
- "3.15t"
exclude:
# CPython 3.10 has no official Windows ARM64 build (neither
# nuget-cpython nor actions/setup-python's manifest carries one),
# so it cannot be built or tested on win-arm64.
- python-version: ${{ (inputs.host-platform == 'win-arm64' && '3.10') || '' }}
python-version: ${{ fromJSON(inputs.python-versions) }}
name: py${{ matrix.python-version }}
runs-on: ${{ (inputs.host-platform == 'linux-64' && 'linux-amd64-cpu8') ||
(inputs.host-platform == 'linux-aarch64' && 'linux-arm64-cpu8') ||
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ jobs:
CUDA_PREV_BUILD_VER: ${{ steps.get-vars.outputs.cuda_prev_build_ver }}
WINDOWS_ARM64_SUPPORTED: ${{ steps.get-vars.outputs.windows_arm64_supported }}
WINDOWS_ARM64_SINGLE_CUDA_MAJOR: ${{ steps.get-vars.outputs.windows_arm64_single_cuda_major }}
PYTHON_SUPPORTED: ${{ steps.get-vars.outputs.python_supported }}
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -49,6 +50,11 @@ jobs:
cuda_prev_build_ver=$(yq '.cuda.prev_build.version' ci/versions.yml)
echo "cuda_prev_build_ver=$cuda_prev_build_ver" >> $GITHUB_OUTPUT

# Flattened one-line JSON for pass-through to build-wheel.yml via
# fromJSON on the receiving side.
python_supported=$(yq -o json -I 0 '.python.supported' ci/versions.yml)
echo "python_supported=$python_supported" >> $GITHUB_OUTPUT

# Windows ARM64 is available starting with CUDA 13.4.
if [[ "$cuda_build_ver" =~ ^([0-9]+)\.([0-9]+)(\.|$) ]]; then
cuda_build_major="${BASH_REMATCH[1]}"
Expand Down Expand Up @@ -222,7 +228,7 @@ jobs:
done

cuda_version=$(yq '.cuda.build.version' ci/versions.yml)
if ! python_versions=$(yq -r '.jobs.build.strategy.matrix."python-version"[]' .github/workflows/build-wheel.yml); then
if ! python_versions=$(yq -r '.python.supported[]' ci/versions.yml); then
unavailable
fi
if ! platforms=$(yq -r '.platforms[]' ci/test-matrix.yml); then
Expand Down Expand Up @@ -386,6 +392,7 @@ jobs:
cuda-version: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
prev-cuda-version: ${{ needs.ci-vars.outputs.CUDA_PREV_BUILD_VER }}
workplan: ${{ needs.detect-changes.outputs.workplan }}
python-versions: ${{ needs.ci-vars.outputs.PYTHON_SUPPORTED }}

# See build-linux-64 for why build jobs are split by platform.
build-linux-aarch64:
Expand Down Expand Up @@ -413,6 +420,7 @@ jobs:
cuda-version: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
prev-cuda-version: ${{ needs.ci-vars.outputs.CUDA_PREV_BUILD_VER }}
workplan: ${{ needs.detect-changes.outputs.workplan }}
python-versions: ${{ needs.ci-vars.outputs.PYTHON_SUPPORTED }}

# See build-linux-64 for why build jobs are split by platform.
build-windows:
Expand Down Expand Up @@ -440,6 +448,7 @@ jobs:
cuda-version: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
prev-cuda-version: ${{ needs.ci-vars.outputs.CUDA_PREV_BUILD_VER }}
workplan: ${{ needs.detect-changes.outputs.workplan }}
python-versions: ${{ needs.ci-vars.outputs.PYTHON_SUPPORTED }}

# Windows ARM64 is available starting with CUDA 13.4. Build only the current
# CUDA major because no prior-major toolkit or wheel artifacts exist.
Expand All @@ -465,6 +474,7 @@ jobs:
prev-cuda-version: ${{ needs.ci-vars.outputs.CUDA_PREV_BUILD_VER }}
workplan: ${{ needs.detect-changes.outputs.workplan }}
single-cuda-major: ${{ needs.ci-vars.outputs.WINDOWS_ARM64_SINGLE_CUDA_MAJOR == 'true' }}
python-versions: ${{ needs.ci-vars.outputs.PYTHON_SUPPORTED }}

# NOTE: test-sdist jobs are split by platform (mirroring build-* and test-wheel-*)
# so platform-specific sources (e.g. cuda_bindings/*_windows.pyx selected by
Expand Down
2 changes: 0 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@ repos:
language: python
files: ^(cuda_core/pyproject\.toml|ci/versions\.yml|cuda_core/cuda/core/_bindings_floor\.py|cuda_core/docs/source/.*\.rst|toolshed/check_cuda_core_bindings_floor\.py)$
pass_filenames: false
additional_dependencies:
- "tomli>=1.1.0; python_version < '3.11'"

- id: check-spdx
name: Check SPDX Headers
Expand Down
20 changes: 10 additions & 10 deletions benchmarks/cuda_bindings/pixi.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions benchmarks/cuda_core/pixi.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 0 additions & 9 deletions ci/test-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,6 @@ platforms:
linux:
pull-request:
# linux-64
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 'v100', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '13.4.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'rtxpro6000', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '13.0.2', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '13.4.2', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
Expand All @@ -63,9 +60,6 @@ linux:
- { ARCH: 'amd64', PY_VER: '3.15', CUDA_VER: '13.4.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.4.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
# linux-aarch64
- { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '13.4.2', LOCAL_CTK: '0', GPU: 't4', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '13.0.2', LOCAL_CTK: '1', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest' }
- { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '13.4.2', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
Expand Down Expand Up @@ -120,9 +114,6 @@ linux:
windows:
pull-request:
# win-64
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'rtx2080', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'WDDM' }
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '13.0.2', LOCAL_CTK: '1', GPU: 'rtxpro6000', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC' }
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '13.4.2', LOCAL_CTK: '1', GPU: 'rtxpro6000', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC' }
- { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 'v100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' }
- { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'rtx4090', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'WDDM' }
- { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '13.4.2', LOCAL_CTK: '0', GPU: 'rtx4090', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'WDDM' }
Expand Down
2 changes: 1 addition & 1 deletion ci/tools/check_pixi_cuda_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
from __future__ import annotations

import sys
import tomllib
from pathlib import Path

import tomllib
import yaml

ROOT = Path(__file__).resolve().parents[2]
Expand Down
4 changes: 2 additions & 2 deletions ci/tools/classify_pixi_lockfile_freshness.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
import argparse
import sys
from dataclasses import dataclass
from enum import Enum
from enum import StrEnum


class Classification(str, Enum):
class Classification(StrEnum):
"""Possible attributions for a stale candidate lockfile."""

PR_INDUCED = "pr-induced"
Expand Down
11 changes: 11 additions & 0 deletions ci/versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,14 @@ cuda:
version: "13.4.2"
prev_build:
version: "12.9.1"
python:
# Python versions the wheel matrix is built across. ci.yml reads this list
# and passes it to build-wheel.yml as the `python-versions` input.
supported:
- "3.11"
- "3.12"
- "3.13"
- "3.14"
- "3.14t"
- "3.15"
- "3.15t"
6 changes: 3 additions & 3 deletions cuda_bindings/docs/source/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Runtime Requirements
``cuda.bindings`` supports the same platforms as CUDA. Runtime dependencies are:

* Linux (x86-64, arm64) and Windows (x86-64)
* Python 3.10 - 3.14
* Python 3.11 - 3.15
* Driver: Linux (580.65.06 or later) Windows (580.88 or later)
* Optionally, NVRTC, nvJitLink, nvFatBin, NVVM, cuFile, and cuDLA from CUDA Toolkit 13.x

Expand Down Expand Up @@ -106,8 +106,8 @@ obtain the most recent build, use the following commands:
$ # Install the downloaded wheel:
$ pip install cuda-bindings-python312-cuda13*-linux-64-*/cuda_bindings*.whl[all]

Replace ``python312`` with your Python version (e.g. ``python310``, ``python311``,
``python313``, ``python314``, ``python314t``). For aarch64, replace ``linux-64``
Replace ``python312`` with your Python version (e.g. ``python311``,
``python313``, ``python314``, ``python314t``, ``python315``, ``python315t``). For aarch64, replace ``linux-64``
with ``linux-aarch64``; for Windows, use ``win-64``. Only the current CUDA
major version is built on ``main``; wheels for the prior CUDA major are
published from the corresponding backport branch.
Expand Down
5 changes: 5 additions & 0 deletions cuda_bindings/docs/source/release/13.5.0-notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
``cuda-bindings`` 13.5.0 Release notes
======================================

Highlights
----------

- Python 3.10 support was dropped (end of life).

Changes
-------

Expand Down
2 changes: 1 addition & 1 deletion cuda_bindings/docs/source/support.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The ``cuda.bindings`` module has the following support policy:
depends on the underlying driver and the Toolkit versions, as described in the compatibility
documentation.)
4. The module supports all Python versions following the `CPython EOL schedule`_. As of writing
Python 3.10 - 3.14 are supported.
Python 3.11 - 3.15 are supported.
5. The module exposes a Cython layer (modules beginning with the ``cy`` prefix) from which types and
functions can be ``cimport``'d. While we strive to keep this layer stable, due to Cython limitations
a new *minor* release of this module could require Cython layer users to rebuild their projects and
Expand Down
Loading
Loading