Skip to content

[build] Decide supported CUDA toolkit under cuTENSOR >= 2.0 + cuQuantum >= 24.0 (CUDA 11? CUDA 13?) #962

Description

@pcchen

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):

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.3 and cuQuantum < 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).
  • Recommendation: drop CUDA 11. Open-ended >= 2.0 / >= 24.0 floors 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

  • Not supported by the floor versions. Requires raising both floors: cuTENSOR ≥ 2.3 and cuQuantum ≈ ≥ 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.

Sources


Filed by Claude Code on behalf of @pcchen

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions