From 5b541a521ede810e1adac4e6d5c91f29de901d60 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 18 Jul 2026 11:29:58 -0500 Subject: [PATCH 01/10] Expand test matrix for Python 3.15 --- ci/test-matrix.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ci/test-matrix.yml b/ci/test-matrix.yml index 0adb0142ae..6d43237236 100644 --- a/ci/test-matrix.yml +++ b/ci/test-matrix.yml @@ -74,11 +74,15 @@ linux: - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } + - { ARCH: 'arm64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } # special runners - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '13.0.2', LOCAL_CTK: '1', GPU: 'h100', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'h100', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '2', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'h100', GPU_COUNT: '2', DRIVER: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '1', DRIVER: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'h100', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 't4', GPU_COUNT: '1', DRIVER: 'latest', FLAVOR: 'wsl' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'rtx4090', GPU_COUNT: '1', DRIVER: 'latest', FLAVOR: 'wsl' } nightly: @@ -106,6 +110,9 @@ linux: - { ARCH: 'arm64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'gb300', GPU_COUNT: '1', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - { ARCH: 'arm64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } + - { ARCH: 'arm64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'gb300', GPU_COUNT: '1', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } + - { ARCH: 'arm64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } + - { ARCH: 'arm64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } windows: pull-request: @@ -128,6 +135,7 @@ windows: - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } + - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } # special runners - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '2', DRIVER: 'latest', DRIVER_MODE: 'TCC' } - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'h100', GPU_COUNT: '2', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } @@ -145,3 +153,5 @@ windows: - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'rtxpro6000', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-numba-cuda-mlir' } } # nightly-cuda-core (released cuda-core from PyPI against main pathfinder/bindings) - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-cuda-core' } } + - { ARCH: 'amd64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-cuda-core' } } + - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-cuda-core' } } From 79a0eeddc263ba82b248f98842cc8c38b5a6886e Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 18 Jul 2026 11:31:18 -0500 Subject: [PATCH 02/10] Don't exclude 3.15 wheels from downloaded artifacts --- ci/tools/download-wheels | 7 ------- 1 file changed, 7 deletions(-) diff --git a/ci/tools/download-wheels b/ci/tools/download-wheels index 20f31fb73d..a3141afb33 100755 --- a/ci/tools/download-wheels +++ b/ci/tools/download-wheels @@ -56,13 +56,6 @@ do continue fi - # TODO: remove the Python 3.15 exclusion once 3.15 is officially supported - # exclude pre-release Python (3.15) wheels from releasing - if [[ "${p}" == *python315* ]]; then - echo "Skipping pre-release Python artifact: $p" - continue - fi - # If we're not downloading "all", only process matching component if [[ "$COMPONENT" != "all" && "$p" != ${COMPONENT}* ]]; then continue From 07e037b239ed39408ea23f68eb80dd7a66891ba8 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 18 Jul 2026 11:42:10 -0500 Subject: [PATCH 03/10] Attempt to build 3.15 wheels on all platforms --- cuda_bindings/pyproject.toml | 17 ++++++++--------- cuda_core/pyproject.toml | 19 +++++++++---------- cuda_pathfinder/pyproject.toml | 3 +-- .../tests/test_find_nvidia_headers.py | 7 +------ 4 files changed, 19 insertions(+), 27 deletions(-) diff --git a/cuda_bindings/pyproject.toml b/cuda_bindings/pyproject.toml index 9744a0a009..03a87a6eac 100644 --- a/cuda_bindings/pyproject.toml +++ b/cuda_bindings/pyproject.toml @@ -44,16 +44,15 @@ all = [ [dependency-groups] test = [ - "cython>=3.2,<3.3", + "cython>=3.2", "setuptools>=80.0.0", - # TODO: remove the Python 3.15 guard once 3.15 is officially supported - "matplotlib>=3.5.0,<=3.10.9; python_version < '3.15'", - "numpy>=1.21.1,<=2.5.0", - "pytest==9.1.0", - "pytest-benchmark==5.2.3", - "pytest-repeat==0.9.4", - "pytest-randomly==4.1.0", - "pyglet==2.1.14", + "matplotlib>=3.5.0", + "numpy>=1.21.1", + "pytest~=9.1.0", + "pytest-benchmark~=5.2.3", + "pytest-repeat~=0.9.4", + "pytest-randomly~=4.1.0", + "pyglet~=2.1.14", ] [project.urls] diff --git a/cuda_core/pyproject.toml b/cuda_core/pyproject.toml index f3a0c3a70f..2e98a7bcd6 100644 --- a/cuda_core/pyproject.toml +++ b/cuda_core/pyproject.toml @@ -61,16 +61,15 @@ cu13 = ["cuda-bindings[all]==13.*", "cuda-toolkit==13.*"] test = [ "cython>=3.2,<3.3", "setuptools>=80", - "pytest==9.1.0", - "pytest-benchmark==5.2.3", - "pytest-randomly==4.1.0", - "pytest-repeat==0.9.4", - "pytest-rerunfailures==16.3", - "pytest-timeout==2.4.0", - "cloudpickle==3.1.2", - "psutil==7.2.2", - # TODO: remove the Python 3.15 guard once 3.15 is officially supported - "cffi==2.0.0; python_version < '3.15'", + "pytest~=9.1.0", + "pytest-benchmark~=5.2.3", + "pytest-randomly~=4.1.0", + "pytest-repeat~=0.9.4", + "pytest-rerunfailures~=16.3", + "pytest-timeout~=2.4.0", + "cloudpickle~=3.1.2", + "psutil~=7.2.2", + "cffi~=2.0.0", ] ml-dtypes = ["ml-dtypes>=0.5.4,<0.6.0"] test-cu12 = [ {include-group = "ml-dtypes" }, {include-group = "test" }, "cupy-cuda12x; python_version < '3.14'", "cuda-toolkit[cudart]==12.*"] # runtime headers needed by CuPy diff --git a/cuda_pathfinder/pyproject.toml b/cuda_pathfinder/pyproject.toml index 227b8fa4eb..6e0d9f0e18 100644 --- a/cuda_pathfinder/pyproject.toml +++ b/cuda_pathfinder/pyproject.toml @@ -48,8 +48,7 @@ cu13 = [ "nvidia-nvshmem-cu13<3.7; sys_platform != 'win32'", ] host = [ - # TODO: remove the Python 3.15 guard once 3.15 is officially supported - "nvidia-cutlass; python_version < '3.15'", + "nvidia-cutlass", "nvpl-fft; platform_system == 'Linux' and platform_machine == 'aarch64'", ] diff --git a/cuda_pathfinder/tests/test_find_nvidia_headers.py b/cuda_pathfinder/tests/test_find_nvidia_headers.py index 90fe3cf981..0453a89a0e 100644 --- a/cuda_pathfinder/tests/test_find_nvidia_headers.py +++ b/cuda_pathfinder/tests/test_find_nvidia_headers.py @@ -117,14 +117,9 @@ def _fake_cudart_canary_abs_path(ctk_root: Path) -> str: return str(ctk_root / "bin" / "x64" / "cudart64_13.dll") return str(ctk_root / "lib64" / "libcudart.so.13") - -# TODO: remove the Python 3.15 guard once 3.15 is officially supported -_CUTLASS_SKIP = pytest.mark.skipif( - sys.version_info >= (3, 15), - reason="nvidia-cutlass not available on Python 3.15 (scipy missing)", ) _NON_CTK_HEADER_PARAMS = [ - pytest.param(name, marks=_CUTLASS_SKIP) if name in ("cutlass", "cute") else name + pytest.param(name) if name in ("cutlass", "cute") else name for name in SUPPORTED_HEADERS_NON_CTK ] From 6189daf2ecc2e2ef51330a69839d314299fae4d0 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 18 Jul 2026 11:47:27 -0500 Subject: [PATCH 04/10] Fix pytest param --- cuda_pathfinder/tests/test_find_nvidia_headers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cuda_pathfinder/tests/test_find_nvidia_headers.py b/cuda_pathfinder/tests/test_find_nvidia_headers.py index 0453a89a0e..acce06b530 100644 --- a/cuda_pathfinder/tests/test_find_nvidia_headers.py +++ b/cuda_pathfinder/tests/test_find_nvidia_headers.py @@ -119,8 +119,7 @@ def _fake_cudart_canary_abs_path(ctk_root: Path) -> str: ) _NON_CTK_HEADER_PARAMS = [ - pytest.param(name) if name in ("cutlass", "cute") else name - for name in SUPPORTED_HEADERS_NON_CTK + name for name in SUPPORTED_HEADERS_NON_CTK ] From 79a6760f404dc195d24914b94f6c5b4a8d2dade1 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 18 Jul 2026 11:49:18 -0500 Subject: [PATCH 05/10] scipy not supported on 3.15 yet --- cuda_pathfinder/tests/test_find_nvidia_headers.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cuda_pathfinder/tests/test_find_nvidia_headers.py b/cuda_pathfinder/tests/test_find_nvidia_headers.py index acce06b530..90fe3cf981 100644 --- a/cuda_pathfinder/tests/test_find_nvidia_headers.py +++ b/cuda_pathfinder/tests/test_find_nvidia_headers.py @@ -117,9 +117,15 @@ def _fake_cudart_canary_abs_path(ctk_root: Path) -> str: return str(ctk_root / "bin" / "x64" / "cudart64_13.dll") return str(ctk_root / "lib64" / "libcudart.so.13") + +# TODO: remove the Python 3.15 guard once 3.15 is officially supported +_CUTLASS_SKIP = pytest.mark.skipif( + sys.version_info >= (3, 15), + reason="nvidia-cutlass not available on Python 3.15 (scipy missing)", ) _NON_CTK_HEADER_PARAMS = [ - name for name in SUPPORTED_HEADERS_NON_CTK + pytest.param(name, marks=_CUTLASS_SKIP) if name in ("cutlass", "cute") else name + for name in SUPPORTED_HEADERS_NON_CTK ] From 60ee5528f9b6b3d0290cc9615f14d190cb7a9545 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 20 Jul 2026 13:37:44 -0400 Subject: [PATCH 06/10] Restrict Python 3.15 configurations to nightly wheel builds Removed configurations for Python version 3.15 and 3.15t from the test matrix. --- ci/test-matrix.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/ci/test-matrix.yml b/ci/test-matrix.yml index 6d43237236..22eaebe9f5 100644 --- a/ci/test-matrix.yml +++ b/ci/test-matrix.yml @@ -53,8 +53,6 @@ linux: - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.0.2', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', 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' } @@ -74,15 +72,11 @@ linux: - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } - - { ARCH: 'arm64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } # special runners - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '13.0.2', LOCAL_CTK: '1', GPU: 'h100', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'h100', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '2', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'h100', GPU_COUNT: '2', DRIVER: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '1', DRIVER: 'latest' } - - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'h100', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 't4', GPU_COUNT: '1', DRIVER: 'latest', FLAVOR: 'wsl' } - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'rtx4090', GPU_COUNT: '1', DRIVER: 'latest', FLAVOR: 'wsl' } nightly: @@ -134,8 +128,6 @@ windows: - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } - - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } - - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } # special runners - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '2', DRIVER: 'latest', DRIVER_MODE: 'TCC' } - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'h100', GPU_COUNT: '2', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } From b32546e4c948003aa9fe8a35c7ecb4676c666171 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 20 Jul 2026 14:32:40 -0400 Subject: [PATCH 07/10] Apply suggestion from @leofang Co-authored-by: Leo Fang --- ci/test-matrix.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ci/test-matrix.yml b/ci/test-matrix.yml index 22eaebe9f5..572c1478be 100644 --- a/ci/test-matrix.yml +++ b/ci/test-matrix.yml @@ -104,9 +104,8 @@ linux: - { ARCH: 'arm64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'gb300', GPU_COUNT: '1', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - { ARCH: 'arm64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - - { ARCH: 'arm64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'gb300', GPU_COUNT: '1', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - - { ARCH: 'arm64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - - { ARCH: 'arm64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } + - { ARCH: 'arm64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } + - { ARCH: 'arm64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } windows: pull-request: From ecddeb6aa61ffa50812d8df6f08a0103a38bbfe0 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 20 Jul 2026 14:35:58 -0400 Subject: [PATCH 08/10] Add Python 3.15 configurations to test matrix Added new configurations for Python 3.15 and 3.15t with CUDA 13.3.0 for AMD64 and ARM64 architectures. --- ci/test-matrix.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ci/test-matrix.yml b/ci/test-matrix.yml index 572c1478be..e797d4150a 100644 --- a/ci/test-matrix.yml +++ b/ci/test-matrix.yml @@ -53,6 +53,8 @@ linux: - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.0.2', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' } + - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', 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' } @@ -106,6 +108,8 @@ linux: - { ARCH: 'arm64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '2', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - { ARCH: 'arm64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } - { ARCH: 'arm64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', ENV: { MODE: 'nightly-standard' } } + - { ARCH: 'amd64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-standard' } } + - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-standard' } } windows: pull-request: @@ -127,6 +131,7 @@ windows: - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '12.9.1', LOCAL_CTK: '1', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC' } - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } + - { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } # special runners - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '1', GPU: 't4', GPU_COUNT: '2', DRIVER: 'latest', DRIVER_MODE: 'TCC' } - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'h100', GPU_COUNT: '2', DRIVER: 'latest', DRIVER_MODE: 'MCDM' } @@ -144,5 +149,3 @@ windows: - { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'rtxpro6000', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-numba-cuda-mlir' } } # nightly-cuda-core (released cuda-core from PyPI against main pathfinder/bindings) - { ARCH: 'amd64', PY_VER: '3.14', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-cuda-core' } } - - { ARCH: 'amd64', PY_VER: '3.15', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-cuda-core' } } - - { ARCH: 'amd64', PY_VER: '3.15t', CUDA_VER: '13.3.0', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM', ENV: { MODE: 'nightly-cuda-core' } } From 44af69fed89c22918f619dacce26e66311c9b85a Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 20 Jul 2026 13:44:44 -0500 Subject: [PATCH 09/10] Revert TOML changes --- ci/tools/download-wheels | 2 +- cuda_bindings/pyproject.toml | 17 +++++++++-------- cuda_core/pyproject.toml | 19 ++++++++++--------- cuda_pathfinder/pyproject.toml | 3 ++- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/ci/tools/download-wheels b/ci/tools/download-wheels index a3141afb33..3534ec244e 100755 --- a/ci/tools/download-wheels +++ b/ci/tools/download-wheels @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # SPDX-License-Identifier: Apache-2.0 diff --git a/cuda_bindings/pyproject.toml b/cuda_bindings/pyproject.toml index 03a87a6eac..9744a0a009 100644 --- a/cuda_bindings/pyproject.toml +++ b/cuda_bindings/pyproject.toml @@ -44,15 +44,16 @@ all = [ [dependency-groups] test = [ - "cython>=3.2", + "cython>=3.2,<3.3", "setuptools>=80.0.0", - "matplotlib>=3.5.0", - "numpy>=1.21.1", - "pytest~=9.1.0", - "pytest-benchmark~=5.2.3", - "pytest-repeat~=0.9.4", - "pytest-randomly~=4.1.0", - "pyglet~=2.1.14", + # TODO: remove the Python 3.15 guard once 3.15 is officially supported + "matplotlib>=3.5.0,<=3.10.9; python_version < '3.15'", + "numpy>=1.21.1,<=2.5.0", + "pytest==9.1.0", + "pytest-benchmark==5.2.3", + "pytest-repeat==0.9.4", + "pytest-randomly==4.1.0", + "pyglet==2.1.14", ] [project.urls] diff --git a/cuda_core/pyproject.toml b/cuda_core/pyproject.toml index 2e98a7bcd6..f3a0c3a70f 100644 --- a/cuda_core/pyproject.toml +++ b/cuda_core/pyproject.toml @@ -61,15 +61,16 @@ cu13 = ["cuda-bindings[all]==13.*", "cuda-toolkit==13.*"] test = [ "cython>=3.2,<3.3", "setuptools>=80", - "pytest~=9.1.0", - "pytest-benchmark~=5.2.3", - "pytest-randomly~=4.1.0", - "pytest-repeat~=0.9.4", - "pytest-rerunfailures~=16.3", - "pytest-timeout~=2.4.0", - "cloudpickle~=3.1.2", - "psutil~=7.2.2", - "cffi~=2.0.0", + "pytest==9.1.0", + "pytest-benchmark==5.2.3", + "pytest-randomly==4.1.0", + "pytest-repeat==0.9.4", + "pytest-rerunfailures==16.3", + "pytest-timeout==2.4.0", + "cloudpickle==3.1.2", + "psutil==7.2.2", + # TODO: remove the Python 3.15 guard once 3.15 is officially supported + "cffi==2.0.0; python_version < '3.15'", ] ml-dtypes = ["ml-dtypes>=0.5.4,<0.6.0"] test-cu12 = [ {include-group = "ml-dtypes" }, {include-group = "test" }, "cupy-cuda12x; python_version < '3.14'", "cuda-toolkit[cudart]==12.*"] # runtime headers needed by CuPy diff --git a/cuda_pathfinder/pyproject.toml b/cuda_pathfinder/pyproject.toml index 6e0d9f0e18..227b8fa4eb 100644 --- a/cuda_pathfinder/pyproject.toml +++ b/cuda_pathfinder/pyproject.toml @@ -48,7 +48,8 @@ cu13 = [ "nvidia-nvshmem-cu13<3.7; sys_platform != 'win32'", ] host = [ - "nvidia-cutlass", + # TODO: remove the Python 3.15 guard once 3.15 is officially supported + "nvidia-cutlass; python_version < '3.15'", "nvpl-fft; platform_system == 'Linux' and platform_machine == 'aarch64'", ] From 3c7bf6a2d19c8f5a6241e2aef4529bce726e5a49 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 20 Jul 2026 13:52:00 -0500 Subject: [PATCH 10/10] lol --- ci/tools/download-wheels | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ci/tools/download-wheels b/ci/tools/download-wheels index 3534ec244e..bad1777c38 100755 --- a/ci/tools/download-wheels +++ b/ci/tools/download-wheels @@ -56,6 +56,13 @@ do continue fi + # TODO: remove the Python 3.15 exclusion once 3.15 is officially supported + # exclude pre-release Python (3.15) wheels from releasing + if [[ "${p}" == *python315* ]]; then + echo "Skipping pre-release Python artifact: $p" + continue + fi + # If we're not downloading "all", only process matching component if [[ "$COMPONENT" != "all" && "$p" != ${COMPONENT}* ]]; then continue