Skip to content

Commit 6f04205

Browse files
leofangclaude
andcommitted
Match CUDA_VER to TORCH_CUDA in nightly pytorch matrix
CUDA_VER in the test environment should match TORCH_CUDA in major.minor. BUILD_CUDA_VER (from build-ctk-ver input) is used for artifact names, so CUDA_VER can differ. - cu126 → CUDA_VER: 12.6.3 (was 12.9.1) - cu130 → CUDA_VER: 13.0.2 (was 13.2.1) For CUDA 12 entries, USE_BACKPORT_BINDINGS kicks in automatically since BUILD_CUDA_MAJOR (13) \!= TEST_CUDA_MAJOR (12), pulling bindings from the backport branch. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 0b7cc50 commit 6f04205

2 files changed

Lines changed: 25 additions & 21 deletions

File tree

ci/test-matrix.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ linux:
6464
- { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.2.1', LOCAL_CTK: '0', GPU: 'rtx4090', GPU_COUNT: '1', DRIVER: 'latest', FLAVOR: 'wsl' }
6565
nightly:
6666
# nightly-pytorch (amd64 only — PyTorch does not ship arm64 GPU wheels)
67-
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', TORCH_VER: 'latest', TORCH_CUDA: 'cu126' }
68-
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.2.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', TORCH_VER: 'latest', TORCH_CUDA: 'cu130' }
69-
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', TORCH_VER: '2.9.1', TORCH_CUDA: 'cu126' }
70-
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.2.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', TORCH_VER: '2.9.1', TORCH_CUDA: 'cu130' }
67+
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.6.3', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', TORCH_VER: 'latest', TORCH_CUDA: 'cu126' }
68+
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', TORCH_VER: 'latest', TORCH_CUDA: 'cu130' }
69+
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.6.3', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', TORCH_VER: '2.9.1', TORCH_CUDA: 'cu126' }
70+
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', TORCH_VER: '2.9.1', TORCH_CUDA: 'cu130' }
7171
# nightly-numba-cuda
7272
- { MODE: 'nightly-numba-cuda', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
7373
- { MODE: 'nightly-numba-cuda', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.2.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest' }
@@ -97,10 +97,10 @@ windows:
9797
- { ARCH: 'amd64', PY_VER: '3.14t', CUDA_VER: '13.2.1', LOCAL_CTK: '0', GPU: 'a100', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'MCDM' }
9898
nightly:
9999
# nightly-pytorch
100-
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC', TORCH_VER: 'latest', TORCH_CUDA: 'cu126' }
101-
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.2.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC', TORCH_VER: 'latest', TORCH_CUDA: 'cu130' }
102-
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC', TORCH_VER: '2.9.1', TORCH_CUDA: 'cu126' }
103-
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.2.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC', TORCH_VER: '2.9.1', TORCH_CUDA: 'cu130' }
100+
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.6.3', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC', TORCH_VER: 'latest', TORCH_CUDA: 'cu126' }
101+
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC', TORCH_VER: 'latest', TORCH_CUDA: 'cu130' }
102+
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.6.3', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC', TORCH_VER: '2.9.1', TORCH_CUDA: 'cu126' }
103+
- { MODE: 'nightly-pytorch', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.0.2', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC', TORCH_VER: '2.9.1', TORCH_CUDA: 'cu130' }
104104
# nightly-numba-cuda
105105
- { MODE: 'nightly-numba-cuda', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.9.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC' }
106106
- { MODE: 'nightly-numba-cuda', ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '13.2.1', LOCAL_CTK: '0', GPU: 'l4', GPU_COUNT: '1', DRIVER: 'latest', DRIVER_MODE: 'TCC' }

ci/tools/run-tests

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,6 @@ elif [[ "${test_module}" == "nightly-pytorch" || "${test_module}" == "nightly-nu
9999
# Install ALL wheels (pathfinder + bindings + core) and the optional dep
100100
# in a single pip call so pip resolves version constraints in one shot
101101
# and avoids costly uninstall/reinstall cycles.
102-
#
103-
# We pushd into cuda_core/ so that --group reads test dependency groups
104-
# from cuda_core/pyproject.toml (needed for numpy, cupy, ml_dtypes, etc.).
105-
# All other wheel paths use ../ to reach the repo root.
106102

107103
TEST_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${CUDA_VER})"
108104
CUDA_VER_MINOR="$(cut -d '.' -f 1-2 <<< "${CUDA_VER}")"
@@ -112,14 +108,11 @@ elif [[ "${test_module}" == "nightly-pytorch" || "${test_module}" == "nightly-nu
112108
FREE_THREADING+="-ft"
113109
fi
114110

115-
# Resolve the pathfinder wheel path before pushd (it's relative to repo root).
116-
# CUDA_BINDINGS_ARTIFACTS_DIR and CUDA_CORE_ARTIFACTS_DIR are already absolute
117-
# (set via realpath in env-vars).
111+
# Resolve pathfinder wheel to absolute path before pushd.
112+
# CUDA_BINDINGS_ARTIFACTS_DIR and CUDA_CORE_ARTIFACTS_DIR are already
113+
# absolute (set via realpath in env-vars).
118114
PATHFINDER_WHL=($(realpath ./cuda_pathfinder/*.whl))
119115

120-
pushd ./cuda_core
121-
122-
# Build wheel specs (paths are absolute, so pushd doesn't affect them)
123116
BINDINGS_WHL=("${CUDA_BINDINGS_ARTIFACTS_DIR}"/*.whl)
124117
if [[ "${LOCAL_CTK}" != 1 ]]; then
125118
BINDINGS_WHL=("${BINDINGS_WHL[0]}[all]")
@@ -130,18 +123,23 @@ elif [[ "${test_module}" == "nightly-pytorch" || "${test_module}" == "nightly-nu
130123
CORE_WHL=("${CORE_WHL[0]}[cu${TEST_CUDA_MAJOR}]")
131124
fi
132125

133-
# All packages in one pip call: pathfinder + bindings + core + test deps + optional dep
126+
# pushd so --group reads test dependency groups from cuda_core/pyproject.toml.
127+
# The explicit cuda-toolkit[...]==X.Y.* pin overrides the group's looser ==X.*.
128+
pushd ./cuda_core
129+
134130
PIP_ARGS=(
135131
"${PATHFINDER_WHL[@]}"
136132
"${BINDINGS_WHL[@]}"
137133
"${CORE_WHL[@]}"
138134
--group "test-cu${TEST_CUDA_MAJOR}${FREE_THREADING}"
139-
"cuda-toolkit==${CUDA_VER_MINOR}.*"
140135
)
141136

142137
if [[ "${test_module}" == "nightly-pytorch" ]]; then
143138
# TORCH_VER and TORCH_CUDA must be set by the caller.
139+
# Use cuda-toolkit[cudart] only — torch brings its own nvcc/nvrtc/etc.
140+
# This avoids version conflicts between our nvidia-* pins and torch's.
144141
echo "Installing pathfinder + bindings + core + test deps + PyTorch ${TORCH_VER} (${TORCH_CUDA})"
142+
PIP_ARGS+=("cuda-toolkit[cudart]==${CUDA_VER_MINOR}.*")
145143
if [[ "${TORCH_VER}" == "latest" ]]; then
146144
PIP_ARGS+=(torch)
147145
else
@@ -150,7 +148,13 @@ elif [[ "${test_module}" == "nightly-pytorch" || "${test_module}" == "nightly-nu
150148
PIP_ARGS+=(--extra-index-url "https://download.pytorch.org/whl/${TORCH_CUDA}")
151149
elif [[ "${test_module}" == "nightly-numba-cuda" ]]; then
152150
echo "Installing pathfinder + bindings + core + test deps + numba-cuda"
153-
PIP_ARGS+=("numba-cuda[cu${TEST_CUDA_MAJOR}]")
151+
# numba-cuda's test-cuXX group deps (can't use --group for a wheel install):
152+
PIP_ARGS+=(
153+
"cuda-toolkit[curand,cublas]==${CUDA_VER_MINOR}.*"
154+
"numba-cuda[cu${TEST_CUDA_MAJOR}]"
155+
"cupy-cuda${TEST_CUDA_MAJOR}x"
156+
psutil cffi pytest-xdist pytest-benchmark filecheck ml_dtypes statistics
157+
)
154158
fi
155159

156160
pip install "${PIP_ARGS[@]}"

0 commit comments

Comments
 (0)