You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Decide (and document) which CUDA Toolkit version(s) Cytnx supports for GPU builds, given the intended dependency floors cuTENSOR ≥ 2.0 and cuQuantum ≥ 24.0. The short answer is CUDA 12 is the only universally-supported toolkit; CUDA 11 and CUDA 13 each require changing one or both floors. This issue lays out the matrix so we can make an explicit call.
Focused follow-up to the "SM 7.0 / CUDA 11 going forward" open question in #945; related: #950, #580.
What each dependency supports (from NVIDIA release notes)
cuTENSOR 2.x → CUDA Toolkit (latest 2.7.0):
cuTENSOR
CUDA
Min GPU
2.0.0 – 2.2.x
11 + 12
SM 7.0 (Volta)
2.3.0+ (→ 2.7.x)
12 + 13 (CUDA 11 removed)
SM 7.5 (Turing; SM 7.0 removed)
cuQuantum 24.x/25.x → CUDA Toolkit (SDK YY.MM; cuStateVec / cuTensorNet):
cuQuantum SDK
CUDA
24.03 / 24.08 / 24.11
11 + 12
25.03
12
~25.09 → 25.11 (latest)
12 + 13
(cuTensorNet 2.4.0 in cuQuantum 24.03 itself requires cuTENSOR ≥ 2.0.1, so the two floors are mutually consistent.)
Intersection under cuTENSOR ≥ 2.0 + cuQuantum ≥ 24.0
CUDA
cuTENSOR ≥ 2.0
cuQuantum ≥ 24.0
Usable?
11
only 2.0.0–2.2.x (dropped in 2.3.0)
only 24.x (dropped in 25.x)
⚠️ only at the low end of both ranges
12
all of 2.x ✅
all 24.x + 25.x ✅
✅ yes — for any qualifying versions
13
only cuTENSOR ≥ 2.3.0
only cuQuantum ≈ ≥ 25.09
❌ not with the floor versions
⇒ CUDA 12 is the only toolkit supported no matter which qualifying cuTENSOR (2.0→2.7) and cuQuantum (24.03→25.11) a user installs.
Discussion: CUDA 11 and/or CUDA 13?
CUDA 11
Supported only by cuTENSOR 2.0.0–2.2.x and cuQuantum 24.x. It disappears the moment a user installs cuTENSOR ≥ 2.3 or cuQuantum ≥ 25.
To actually support CUDA 11 we'd need upper caps: cuTENSOR < 2.3andcuQuantum < 25 — i.e. pinning to an aging, soon-EOL band. CUDA 11 also implies keeping Volta sm_70 (dropped by cuTENSOR 2.3 / CUDA 13).
Not supported by the floor versions. Requires raising both floors: cuTENSOR ≥ 2.3andcuQuantum ≈ ≥ 25.09.
If we only depend on cuTENSOR (no cuQuantum), CUDA 13 needs just cuTENSOR ≥ 2.3.
Recommendation: support CUDA 13, but gate the dependency floors on it, e.g.
USE_CUTENSOR + CUDA 13 ⇒ require cuTENSOR ≥ 2.3
USE_CUQUANTUM + CUDA 13 ⇒ require cuQuantum ≥ 25.09 (exact minor TBD — see caveat)
Proposed policy (for discussion)
Baseline: support CUDA 12 unconditionally (the safe common denominator).
CUDA 13: allowed, but conditionally raise floors — cuTENSOR ≥ 2.3, and cuQuantum ≥ 25.09 when cuQuantum is enabled.
CUDA 11:drop (not compatible with open-ended cuTENSOR ≥ 2.0 / cuQuantum ≥ 24.0; keeping it needs upper caps + Volta sm_70).
GPU-arch floor follows from the above: SM 7.5 (Turing) once CUDA 11 is dropped; SM 7.0 (Volta) only survives on the CUDA-11 / cuTENSOR<2.3 path we're proposing to drop.
Caveat / to verify
The cuQuantum "CUDA 13 from ~25.09" boundary is approximate — NVIDIA's SDK pages truncated/redirected through fetching. Confirm the exact 25.x minor that first ships -cu13 (cuStateVec/cuTensorNet) before hard-coding a version in CMake.
Summary
Decide (and document) which CUDA Toolkit version(s) Cytnx supports for GPU builds, given the intended dependency floors cuTENSOR ≥ 2.0 and cuQuantum ≥ 24.0. The short answer is CUDA 12 is the only universally-supported toolkit; CUDA 11 and CUDA 13 each require changing one or both floors. This issue lays out the matrix so we can make an explicit call.
Focused follow-up to the "SM 7.0 / CUDA 11 going forward" open question in #945; related: #950, #580.
What each dependency supports (from NVIDIA release notes)
cuTENSOR 2.x → CUDA Toolkit (latest 2.7.0):
cuQuantum 24.x/25.x → CUDA Toolkit (SDK
YY.MM; cuStateVec / cuTensorNet):(cuTensorNet 2.4.0 in cuQuantum 24.03 itself requires cuTENSOR ≥ 2.0.1, so the two floors are mutually consistent.)
Intersection under
cuTENSOR ≥ 2.0+cuQuantum ≥ 24.0⇒ CUDA 12 is the only toolkit supported no matter which qualifying cuTENSOR (2.0→2.7) and cuQuantum (24.03→25.11) a user installs.
Discussion: CUDA 11 and/or CUDA 13?
CUDA 11
cuTENSOR < 2.3andcuQuantum < 25— i.e. pinning to an aging, soon-EOL band. CUDA 11 also implies keeping Voltasm_70(dropped by cuTENSOR 2.3 / CUDA 13).>= 2.0/>= 24.0floors are incompatible with guaranteeing CUDA-11 support, and maintaining the caps is not worth it. (This resolves the [build] Clarify compiler/CUDA/cuTENSOR requirements and fix FindCUTENSOR.cmake #945 CUDA-11 question in the "drop" direction.)CUDA 13
cuTENSOR ≥ 2.3andcuQuantum ≈ ≥ 25.09.cuTENSOR ≥ 2.3.USE_CUTENSOR+ CUDA 13 ⇒ require cuTENSOR ≥ 2.3USE_CUQUANTUM+ CUDA 13 ⇒ require cuQuantum ≥ 25.09 (exact minor TBD — see caveat)Proposed policy (for discussion)
cuTENSOR ≥ 2.3, andcuQuantum ≥ 25.09when cuQuantum is enabled.cuTENSOR ≥ 2.0/cuQuantum ≥ 24.0; keeping it needs upper caps + Voltasm_70).Caveat / to verify
The cuQuantum "CUDA 13 from ~25.09" boundary is approximate — NVIDIA's SDK pages truncated/redirected through fetching. Confirm the exact 25.x minor that first ships
-cu13(cuStateVec/cuTensorNet) before hard-coding a version in CMake.Sources
Filed by Claude Code on behalf of @pcchen