Installation¶
Requirements¶
- Python 3.10 or later.
- Linux with an NVIDIA GPU and a working CUDA driver/runtime stack.
- CUDA Python packages compatible with the installed CUDA stack. cuPIQP defines extras for CUDA 12.x and CUDA 13.x, which pull in the matching CuPy and nvmath runtime libraries.
GPU-only
cuPIQP runs only on the GPU. All problem data must be GPU-resident
(cupy arrays, cupyx.scipy.sparse CSR matrices, or CUDA torch.Tensor /
JAX arrays). CPU arrays such as numpy.ndarray are rejected, not silently
copied to the device — convert them explicitly first.
Install from source¶
cuPIQP is not currently published on PyPI. Clone the repository and install it with the
CUDA extra that matches the CUDA version reported by nvidia-smi. Pick your CUDA
version once in the tabs below — every install command on this page then follows the
same choice.
If a suitable CuPy installation is already present in your environment, the bare local install is enough:
Optional extras¶
cuPIQP ships all three solver backends — dense, sparse, and multistage — by
default, so the plain install above (with the matching CUDA extra) is all you need.
There is deliberately no separate multistage extra. The available install extras are:
| Extra | Enables |
|---|---|
cuda12 |
CuPy + nvmath-python runtime for CUDA 12.x |
cuda13 |
CuPy + nvmath-python runtime for CUDA 13.x |
Choosing the CUDA extra
cuda12 and cuda13 are mutually exclusive in practice. Installing both resolves,
but only the wheel matching your driver actually loads at runtime. Pick the one that
matches nvidia-smi.
Verifying the install¶
import cupy as cp
from cupiqp import DenseSolver
solver = DenseSolver()
solver.settings.verbose = True
solver.setup(P=cp.eye(3), c=cp.zeros(3))
solver.solve()
With verbose = True you should see the cuPIQP banner followed by the
per-iteration info, ending in a CUPIQP_SOLVED status report.