backend_id in a job. This guide lists every simulator/GPU backend, the
auto-selecting engine, and how GPUs are wired into the appliance.
The simplest choice: auto_sim
Submit to auto_sim (aliases auto, simulate) and QCOS’s unified
engine profiles your circuit and picks the best method available on the
host — including GPU when present. No configuration, no credentials.
Every simulator / GPU backend
Pick a specific one by its backend id (any alias works):The cloud GPU backends (lumi_*,aws_gpu_*) use an Azure Queue as job transport — that’s why they requireAZURE_STORAGE_CONNECTION_STRINGin addition to any cloud credentials. AWS GPU also needsAWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY.
How the engine auto-selects (and finds the GPU)
The unifiedSimulationEngine
(src/core/simulation/) detects hardware by
import probe — no env vars: it looks for cupy, cuquantum, cudaq, reads
GPU name and free memory via CuPy, and detects CPU SIMD (AVX-512/AVX2/SSE).
Its decision tree, roughly:
- Clifford-only →
clifford(up to 10 000 qubits) - ≤ 28 qubits → C++ statevector (
statevector_cpp) if the engine is built, else NumPy - GPU present and ≤ 40 qubits (and the state fits in free GPU memory) →
GPU statevector —
statevector_custatevecif cuQuantum is present, else CuPy (statevector_gpu) - Low entanglement, ≤ 2000 qubits → MPS (GPU MPS if cuQuantum+GPU)
- Noisy circuits → density matrix (GPU density matrix if GPU and ≤ 16q)
Wiring a GPU into the appliance (bare-metal / cloud)
The SoftQuantus Compute OS provisioning (packaging/provision/softquantus-provision.sh)
handles the host side:
- Auto-detects the GPU (
lspci | grep nvidia). Override withSQOS_WITH_NVIDIA=1(force) or0(skip). - When a GPU is present it installs the NVIDIA Container Toolkit, runs
nvidia-ctk runtime configure --runtime=docker, and restarts Docker — so containers get GPU passthrough (docker run --gpus all …). - When no GPU is found it logs “simulators run on CPU” and continues.
softquantus/qiskit-aer-gpu, pennylane-lightning, cuda-q.
Public backend ids use QCOS names (qcos-gpu-statevector, qcos-aer-gpu,
qcos-mps, …) rather than vendor SDK names.
On WSL (Windows developers)
No toolkit step: GPU works through the Windows NVIDIA driver (CUDA-on-WSL). Install CUDA/cuQuantum inside the distro and the engine picks it up.Choosing a GPU backend explicitly
- Local GPU (the box QCOS runs on): submit to
auto_sim— the engine uses the GPU if CuPy/cuQuantum are importable. - Remote GPU pool (LUMI / AWS): set the supplier’s credentials, then
submit to
lumi_aer_gpu,lumi.mps,aws_gpu_sv, oraws.gpu.mps.