Overview
The backends module provides concrete execution engines for running functionals (quantum processes).
Currently, three backends are supported:
QiliSim: A high-performance CPU simulator developed by Qilimanjaro, ideal for local development and testing.
CUDA: A GPU-accelerated backend leveraging NVIDIA hardware for large-scale simulations.
Qutip: A CPU-based backend using the QuTiP library, suitable for lightweight simulations and environments without GPU access.
Note
Backends other than QiliSim are optional; to install one, include its extra when installing QILISDK:
pip install qilisdk[<backend_name>]
For more information check the Installation page.
Once installed, any primitive functional can be executed by passing it to the backend’s execute() method
along with readout specifications:
from qilisdk.backends import QiliSim
from qilisdk.functionals import DigitalPropagation
from qilisdk.readout import Readout
from qilisdk.digital import Circuit
circuit = Circuit(2)
results = QiliSim().execute(DigitalPropagation(circuit), Readout().with_sampling(nshots=1000))
print(results)
Architecture Overview
All concrete backends subclass Backend, which centralizes the execution workflow used
across the SDK. The execute() method dispatches a primitive functional (e.g. DigitalPropagation or AnalogEvolution)
to the appropriate simulation routine and returns a FunctionalResult (see the Functionals chapter). The execute method also accepts readout specifications that define how the quantum state is measured.
The execute method is also used to optimize variational programs via repeated calls to
the underlying parameterized primitive functional.
Backends register handlers for the functionals they support. If a functional is not implemented, execute() raises
NotImplementedError to surface the mismatch early.
Hardware & Dependencies
Installing a backend extra pulls in the library stack required for that simulator. GPU backends also expect compatible drivers to be present on the system.
Backend |
Extra |
Key dependency |
Notes |
|---|---|---|---|
– |
None |
CPU based; no special hardware needs. |
|
|
Requires NVIDIA hardware with recent drivers. |
||
|
CPU based; no special hardware needs. |
Functional Support
The table below summarizes which primitive functionals each backend can execute.
Legend:
✅ Fully supported by the backend’s native simulator.
🟡 Partially supported — see the per-backend page for the exact limitation.
❌ Not supported.
Backend |
DigitalPropagation |
AnalogEvolution |
QuantumReservoir |
VariationalProgram |
|---|---|---|---|---|
✅ |
✅ |
✅ |
✅ |
|
✅ |
✅ |
🟡 |
✅ |
|
✅ |
✅ |
🟡 |
✅ |
Note
QuantumReservoir is fully native only on QiliSim. On the CudaBackend and
QutipBackend the Circuit reservoir steps are evaluated as dense QTensor unitaries on CPU, while
Schedule steps still use the backend’s native analog solver. Attaching a
NoiseModel to a reservoir run is ignored on both CudaBackend and
QutipBackend.
(a warning is logged).