QXel
Build with QXel.
Guides and copy-paste examples for QXel, from your first circuit to distributed simulation across a GPU cluster.
Get started
Installation
QXel is a high-performance, GPU-accelerated quantum circuit simulator that builds from source. It currently runs on Linux.
Virtual environments
Use a conda environment pinned to the tested toolchain so builds are reproducible across machines.
Quickstart
Run your first circuit on QXel in a few minutes. QXel implements the Amazon Braket LocalSimulator interface, so you build circuits with Braket and point the simulator at the QXel backend.
Simulator types
QXel ships three Braket simulator backends. Choose one by passing its name to LocalSimulator(backend=...).
SDK integrations
Amazon Braket
QXel is a drop-in Amazon Braket LocalSimulator backend, so existing Braket circuits run on it without changes.
Qiskit
Run Qiskit circuits on QXel through the qiskit-braket-provider, which exposes QXel as a Qiskit local backend.
PennyLane
Use QXel as a PennyLane device for hybrid quantum-classical workloads such as variational algorithms.
Performance
GPU acceleration
QXel runs gate operations on CPU kernels by default. For anything beyond about 20 qubits the GPU is dramatically faster, because each extra qubit doubles the statevector and GPUs apply gates to that vector in massively parallel fashion. You opt in with the compute_type option.
Storage offloading
Large statevectors don't have to fit in DRAM. QXel can offload the statevector to CPU memory or secondary storage (NVMe/HDD), letting a single node reach higher qubit counts.
Distributed simulation
When a circuit is too large for one machine, QXel partitions the statevector across multiple nodes with MPI. Each rank holds a slice of the statevector and exchanges amplitudes with the others as gates are applied. You do not change your circuit code; you launch the same script under mpirun.
Reference
run() options
QXel adds a few keyword arguments to the standard Braket run() method. They are all optional; the defaults give a correct CPU run. Tune them once a circuit is too slow or too large to fit in memory.
Result types
Instead of adding explicit measure gates, you tell QXel what you want back by attaching a Braket result type to the circuit. You can attach more than one. After the run, read them from result.values in the order you attached them.
FAQ
Common questions about the QXel simulator.