This release is a pre-release and may not be stable for production use.
xqsa -- Solver adapters for XQMX models
Pluggable solvers for quadratic optimisation models produced by the XQuad toolchain. One interface, five backends:
| Solver | Class | Where it solves | Install |
|---|---|---|---|
| DWave CPU simulated annealing | SolverDWaveCPU |
Locally, on the CPU | pip install xqsa |
| D-Wave Advantage QPU | SolverDWaveQPU |
D-Wave Leap cloud | pip install xqsa[dwave] |
| CUDA GPU simulated annealing | SolverCudaGPU |
Locally, NVIDIA GPU | pip install xqsa[cuda] |
| Metal GPU SA / Gibbs | SolverMetalGPU |
Locally, Apple GPU (macOS) | pip install xqsa[metal] |
| Quip network (on-chain mempool) | SolverQuip |
Quip network | pip install xqsa[quip] |
Install
pip install xqsa # CPU simulated annealing only
pip install xqsa[dwave] # add D-Wave QPU support
pip install xqsa[cuda] # add CUDA GPU support
pip install xqsa[metal] # add Metal GPU support
pip install xqsa[quip] # add Quip network support
Extras are composable: pip install "xqsa[cuda,dwave]".
A complete example
build_solver picks a backend by name, so a caller can stay
backend-agnostic across all five:
from xqsa import SOLVERS, build_solver
from xqvm_py import XQMX
model = XQMX.binary_model(size=4)
model.set_linear(0, -1)
model.set_quadratic(0, 1, 2)
print(sorted(SOLVERS))
# ['cuda-gpu', 'dwave-cpu', 'dwave-qpu', 'metal-gpu', 'quip']
solver = build_solver("dwave-cpu", seed=42)
result = solver.solve(model)
print(result.sample)
print(result.energy)
# XQMX(mode=SAMPLE, domain=BINARY, size=4, linear_terms=1, quadratic_terms=0)
# -1
Every backend returns the same SolverResult(sample, energy, timing, metadata): sample is the best assignment found, energy is the
Hamiltonian recomputed independently in exact integer arithmetic (never
taken on faith from the backend), and metadata's shape is per-backend.
build_solver("dwave-cpu", ...) is equivalent to constructing
SolverDWaveCPU(...) directly; reach for the class constructor instead of
build_solver when the backend is fixed at write time rather than chosen
by name at run time.
Reference
Driver prerequisites, per-backend parameters, embedding on a D-Wave QPU,
the Quip network job lifecycle, and what the reported energy means on
fixed-precision hardware are covered in
Solving Overview
and its four chapters. The normative reference is
spec/xqsa/SPEC.md;
this package follows it, and any divergence here is a bug.
Also see
xqvm_py-- pure-Python reference VM.xqffi-- pyo3 FFI bindings to the Rust runtime.xqcp-- constraint-programming DSL that compiles to models this package can sample.xquad-- umbrella meta-package.- Running Programs -- end-to-end tour.
License
AGPL-3.0-or-later.
Release files for xqsa 0.4.0rc2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xqsa-0.4.0rc2.tar.gz | 110.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xqsa-0.4.0rc2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 178.2 kB
Release files / xqsa-0.4.0rc2.tar.gz
| Download URL | xqsa-0.4.0rc2.tar.gz |
|---|---|
| Size | 110.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
67ec4b76c1e7e32b42b095522f214665e9d18123282f94be07d211ef92f848cc
|
|
BLAKE2b-256 checksum How to use checksums |
055ca7047223c16b916ce74fe7e383748c6dcac74ae580bb48788bcddda08534
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / xqsa-0.4.0rc2-py3-none-any.whl
| Download URL | xqsa-0.4.0rc2-py3-none-any.whl |
|---|---|
| Size | 68.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fbfd8abc7339ae6717b5c76cdef07de9e27442bf78e86e5e0efc34ab094cdb5c
|
|
BLAKE2b-256 checksum How to use checksums |
1cef6a6bc56f8984fddaca851394a666da60e0cba71361f92244c02e1bc1fc79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|