@@ -31,7 +31,10 @@ Both approaches require:
3131
3232### Hardware Requirements
3333
34- - ** NVIDIA GPU** with Compute Capability 7.0 or higher
34+ - ** NVIDIA GPU** with Compute Capability ** 7.5 or higher** (Turing and newer) for the
35+ default CUDA 13 path. Current cuStateVec (cuQuantum >= 25.09) and CUDA 13 dropped
36+ Volta, so ** V100 / CC 7.0** is supported only via the CUDA 12 path with an older,
37+ Volta-capable cuQuantum pinned ` cuquantum-python-cu12>=25.3,<25.9 ` (see below).
3538 - To check your GPU: ` nvidia-smi `
3639 - To check compute capability: Visit [ NVIDIA's GPU Compute Capability List] ( https://developer.nvidia.com/cuda-gpus )
3740
@@ -119,22 +122,27 @@ If `nvcc` is not found, ensure CUDA's bin directory is in your PATH.
119122PECOS uses ` uv ` as the package manager. Install the CUDA-related Python packages:
120123
121124``` bash
122- # Install CUDA 13 packages
123- uv pip install cupy-cuda13x> =13.0.0
124- uv pip install cuquantum-python-cu13> =25.3.0
125- uv pip install pytket-cutensornet> =0.12.0
125+ # CUDA 13 (Turing / CC 7.5+ GPUs):
126+ uv pip install " cupy-cuda13x>=13.0.0" " cuquantum-python-cu13>=25.9.0" " pytket-cutensornet>=0.12.0"
127+
128+ # CUDA 12:
129+ uv pip install " cupy-cuda12x>=13.0.0" " cuquantum-python-cu12>=25.3.0" " pytket-cutensornet>=0.12.0"
126130```
127131
128- ** Important** : Use packages matching your CUDA version:
129- - For CUDA 13: ` cupy-cuda13x ` , ` cuquantum-python-cu13 `
130- - For CUDA 12: ` cupy-cuda12x ` , ` cuquantum-python-cu12 `
132+ ** Important** :
133+ - Install packages matching your CUDA major (CUDA 13 -> ` *-cu13 ` / ` *-cuda13x ` ; CUDA 12 -> ` *-cu12 ` / ` *-cuda12x ` ). Do ** not** install both.
134+ - PECOS requires the ** ` cuquantum.bindings ` API (cuQuantum >= 25.03)** ; older cuQuantum is rejected with a clear error when you use ` CuStateVec ` . The lowest CUDA 13 wheel is ` 25.9.0 ` .
135+ - ** V100 / Volta (CC 7.0)** : pin ` cuquantum-python-cu12>=25.3,<25.9 ` (cuStateVec dropped Volta at 25.09).
131136
132137### Step 5: Install PECOS with CUDA Support
133138
134139#### Option A: Install from PyPI with CUDA extras
135140
136141``` bash
137- uv pip install quantum-pecos[cuda]
142+ # CUDA 13 (recommended); use [cuda12] for CUDA 12. These pull the Python cuStateVec
143+ # / MPS stack (CuPy + cuquantum-python). The Rust GPU backend is a separate install
144+ # (see "Rust cuQuantum Bindings Setup" below): pip install pecos-rslib-cuda
145+ uv pip install " quantum-pecos[cuda13]"
138146```
139147
140148#### Option B: Install from source (for development)
@@ -148,8 +156,8 @@ just build-cuda # Build with CUDA support
148156just devc # Full dev cycle: clean + build-cuda + test
149157just devcl # Dev cycle + linting
150158
151- # Option 2: Manual installation
152- uv pip install -e " ./python/quantum-pecos[all,cuda ]"
159+ # Option 2: Manual installation (use [all,cuda12] for CUDA 12)
160+ uv pip install -e " ./python/quantum-pecos[all,cuda13 ]"
153161```
154162
155163## Verification
@@ -203,14 +211,15 @@ uv run pytest python/quantum-pecos/tests/pecos/integration/state_sim_tests/test_
203211
204212## Package Versions
205213
206- Current recommended versions (as of 2025):
214+ Minimum versions (CUDA 13 path shown; for CUDA 12 use the ` -cu12 ` / ` -cuda12x ` equivalents):
215+
216+ | Package | Minimum | Purpose |
217+ | ---------| ---------| ---------|
218+ | cupy-cuda13x | 13.0.0 | NumPy/SciPy for GPU |
219+ | cuquantum-python-cu13 | 25.9.0 | cuQuantum Python API (the ` cuquantum.bindings >= 25.03 ` surface; lowest cu13 wheel is 25.9.0) |
220+ | pytket-cutensornet | 0.12.0 | MPS simulator |
207221
208- | Package | Version | Release Date | Purpose |
209- | ---------| ---------| --------------| ---------|
210- | cupy-cuda13x | 13.6.0+ | Aug 2025 | NumPy/SciPy for GPU |
211- | cuquantum-python-cu13 | 25.9.0+ | Sept 2025 | cuQuantum Python API |
212- | custatevec-cu13 | 1.10.0+ | Sept 2025 | State vector operations (included in cuquantum) |
213- | pytket-cutensornet | 0.12.0+ | 2025 | MPS simulator |
222+ For CUDA 12 the floor is ` cuquantum-python-cu12>=25.3.0 ` ; ** V100/Volta** needs ` >=25.3,<25.9 ` .
214223
215224## Troubleshooting
216225
@@ -226,20 +235,27 @@ export LD_LIBRARY_PATH=/usr/local/cuda-13/lib64:$LD_LIBRARY_PATH
226235source ~ /.bashrc
227236```
228237
229- #### 2. ` CuStateVec is None ` or tests are skipped
238+ #### 2. ` CuStateVec ` unavailable / constructing it raises
230239
231- ** Solution** : Python packages not properly installed or CUDA Toolkit version mismatch.
240+ ` import pecos ` always works, but constructing ` CuStateVec ` (or
241+ ` QuantumSimulator("CuStateVec") ` ) without CuPy and a bindings-era cuQuantum raises
242+ an actionable error naming what to install/upgrade. PECOS requires the
243+ ` cuquantum.bindings ` API (cuQuantum >= 25.03); the legacy top-level
244+ ` cuquantum.custatevec ` is not used.
232245
233246``` bash
234- # Verify installations
235- python -c " import cupy; print(cupy.__version__)"
236- python -c " from cuquantum import custatevec; print('OK')"
247+ # Ask PECOS directly (no GPU needed):
248+ python -c " from pecos.simulators.custatevec._cuquantum_compat import custatevec_available, custatevec_unavailable_reason; print(custatevec_available(), '|', custatevec_unavailable_reason())"
237249
238- # Reinstall if needed
239- uv pip uninstall cupy-cuda13x cuquantum-python-cu13
240- uv pip install cupy-cuda13x cuquantum-python-cu13
250+ # Or check the underlying packages:
251+ python -c " import cupy; print(cupy.__version__) "
252+ python -c " from cuquantum.bindings import custatevec; print('OK') "
241253```
242254
255+ If the reason says cuQuantum "predates the cuquantum.bindings API", upgrade to
256+ ` cuquantum-python-cu13>=25.9.0 ` (CUDA 13) or ` cuquantum-python-cu12>=25.3.0 `
257+ (CUDA 12; V100/Volta ` >=25.3,<25.9 ` ).
258+
243259#### 3. CUDA version mismatch errors
244260
245261** Problem** : Mixing CUDA 12 and CUDA 13 packages.
@@ -281,7 +297,7 @@ If you encounter issues:
2812971 . Check [ NVIDIA cuQuantum Documentation] ( https://docs.nvidia.com/cuda/cuquantum/latest/ )
2822982 . Check [ pytket-cutensornet GitHub Issues] ( https://github.com/Quantinuum/pytket-cutensornet/issues )
2832993 . Check [ PECOS GitHub Issues] ( https://github.com/PECOS-packages/PECOS/issues )
284- 4 . Verify your GPU compute capability is 7.0 or higher
300+ 4 . Verify your GPU compute capability is 7.5+ (CUDA 13) or 7.0 (V100 via the capped CUDA 12 path)
285301
286302## Alternative: Using Conda
287303
@@ -451,12 +467,12 @@ To use GPU simulators in PECOS:
451467
452468### Option A: Python cuQuantum Bindings (Easier Setup)
453469
454- 1 . ** Verify NVIDIA GPU** (Compute Capability 7.0+ )
455- 2 . ** Install CUDA Toolkit 13** (system-level)
456- 3 . ** Install Python packages** : ` cupy-cuda13x ` , ` cuquantum-python-cu13 ` , ` pytket-cutensornet `
457- 4 . ** Install PECOS with ` [cuda] ` extras ** :
470+ 1 . ** Verify NVIDIA GPU** (Compute Capability 7.5+ for CUDA 13; V100/CC 7.0 only via the capped CUDA 12 path )
471+ 2 . ** Install CUDA Toolkit 13** (system-level; or CUDA 12 )
472+ 3 . ** Install Python packages** : ` cupy-cuda13x ` , ` cuquantum-python-cu13 ` , ` pytket-cutensornet ` (or the ` -cu12 ` / ` -cuda12x ` equivalents)
473+ 4 . ** Install PECOS with the matching CUDA extra ** :
458474 ``` bash
459- uv pip install quantum-pecos[cuda]
475+ uv pip install " quantum-pecos[cuda13] " # or [cuda12] for CUDA 12
460476 # or for development:
461477 just build-cuda
462478 ```
0 commit comments