Skip to content
Closed
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 @@ -224,7 +230,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 @@ -388,6 +394,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 @@ -415,6 +422,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 @@ -442,6 +450,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 @@ -467,6 +476,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
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.

65 changes: 43 additions & 22 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: 'a100', 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 @@ -118,9 +112,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
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
Loading
Loading